THotPDF.RepairPDFUA2Structure Method
Memperbaiki cacat namespace, atribut, struktural, dan aksesibilitas PDF/UA-2 yang dapat dipulihkan di dalam transaksi grafik copy-on-write dan memvalidasi grafik kandidat sebelum komit
Deklarasi
function RepairPDFUA2Structure(
const Options: THPDFUA2RepairOptions;
out Report: THPDFUA2RepairReport;
out Issues: THPDFUA2ValidationIssues): boolean; overload;
function RepairPDFUA2Structure(
const Options: THPDFUA2RepairOptions;
out Report: THPDFUA2RepairReport;
out Issues: THPDFUA2ValidationIssues;
out Findings: THPDFComplianceFindings): boolean; overload;
Unit
HPDFDoc
Opsi perbaikan
Mulai dengan THPDFUA2RepairOptions.Default dan timpa hanya keputusan kebijakan yang diperlukan oleh alur kerja input
| Field | Tujuan |
|---|---|
NormalizeDuplicateNamespaces | Membangun ulang StructTreeRoot/Namespaces dengan satu kamus tidak langsung kanonik per URI dan menolak peta peran yang bertentangan |
RegisterReferencedNamespaces | Mendaftarkan kamus namespace valid yang direferensikan oleh elemen struktur, atribut, atau peta peran yang sadar namespace |
RepairStandardStructureNamespaces | Menetapkan namespace PDF 2.0 ke peran standar ketika namespace hilang atau tidak valid dan selalu menormalkan Document tingkat atas |
RepairAttributeNamespaces | Mengkanonikalkan referensi namespace atribut dan menghapus entri namespace tidak valid dari pemilik standar |
RepairAttributeRevisions | Menormalkan nomor revisi negatif atau pecahan dan menghapus entri revisi yatim dari larik atribut |
RepairListSemantics | Menormalkan penomoran, flag kelanjutan, jenis kelanjutan tidak valid, dan satu keterangan yang salah tempat tanpa menciptakan konten daftar |
RepairTableSemantics | Menormalkan span dan scope tidak valid, menghapus referensi header lokal tabel tidak valid, dan memindahkan satu keterangan yang salah tempat |
RepairRubyWarichuSequences | Mengurutkan ulang anak hanya ketika multiset peran yang dipersyaratkan persis sudah ada |
RepairPronunciationHints | Menghapus petunjuk yang salah ketik, memangkas referensi leksikon tidak valid, dan menormalkan subtipe MIME PLS yang disematkan |
RepairMissingAlternateText | Memulihkan Alt yang hilang untuk Figure, Formula, dan Form dari judul yang ada, teks ekspansi, teks yang diekstrak dari MCID yang sama, atau fallback eksplisit dalam urutan itu |
RepairLanguageInheritance | Mempromosikan bahasa default root struktur atau eksplisit yang valid ke Catalog dan menghapus entri bahasa tingkat struktur yang tidak valid atau redundan ketika pewarisan tidak ambigu |
RepairHeadingOrder | Menomori ulang hanya cacat heading pertama dan tingkat yang dilewati sambil mempertahankan urutan dokumen |
RepairArtifactTagging | Menulis ulang tag konten bertanda yang terkait dengan elemen struktur Artifact untuk konten halaman produsen dan termuat |
AllowDocumentFragmentHeadingStarts | Mengatur ulang konteks heading di dalam setiap DocumentFragment untuk perbaikan dan validasi pasca-perbaikan |
RollbackOnValidationFailure | Memulihkan grafik asli ketika kesalahan PDF/UA-2 apa pun tetap ada setelah perbaikan |
CustomAttributeNamespaceURI | Menyediakan namespace eksplisit untuk pemilik atribut kustom yang semantiknya tidak dapat disimpulkan dengan aman, dengan default kosong yang gagal tertutup |
DefaultLanguage | Menyediakan tag bahasa BCP-47 hanya ketika baik Catalog maupun root struktur tidak berisi bahasa valid |
FallbackAlternateText | Menyediakan teks alternatif yang ditinjau pemanggil setelah semua sumber turunan dokumen gagal, dengan default kosong yang tidak pernah membuat deskripsi |
MaxGeneratedAlternateTextCharacters | Membatasi ekstraksi teks MCID yang sama dan default ke 4.096 unit kode UTF-16 |
MaxObjects | Membatasi pemindaian grafik objek dan default ke 1.000.000 objek |
MaxRepairs | Membatasi mutasi yang dipertahankan dan default ke 100.000 operasi perbaikan |
Laporan perbaikan
THPDFUA2RepairReport melaporkan apakah grafik berubah atau digulung balik, apakah batas terlampaui, status validasi pasca-perbaikan, objek yang diperiksa, kesalahan yang tersisa, dan jumlah untuk setiap keluarga perbaikan termasuk teks alternatif, entri bahasa, tingkat heading, dan tag Artifact
UnresolvedAlternateTextCount, UnresolvedLanguageCount, dan UnresolvedArtifactCount membedakan semantik yang masih memerlukan tinjauan penulis dari mutasi otomatis
Larik THPDFUA2ValidationIssues yang dikembalikan berisi diagnostik pasca-perbaikan ketika validasi gagal dan diagnostik stabil khusus perbaikan ketika batas sumber daya atau peta peran duplikat yang bertentangan menghentikan transaksi
Overload terperinci juga mengembalikan temuan pra-perbaikan yang dianotasi sebagai crsApplied, crsUnresolved, crsRolledBack, atau crsFailed, plus ringkasan terhitung untuk setiap keluarga perbaikan
Overload provenance ini melakukan lintasan validasi pra-perbaikan terbatas tambahan; gunakan overload tiga-keluaran yang ada ketika hanya laporan akhir dan isu yang diperlukan
Atomisitas dan keamanan
- Setiap mutasi berpartisipasi dalam transaksi grafik dokumen, termasuk kamus namespace tidak langsung yang baru dialokasikan
- Kamus namespace duplikat digabung hanya ketika pemetaan perannya setuju
- Semantik atribut kustom tidak pernah diciptakan kecuali
CustomAttributeNamespaceURIdisediakan secara eksplisit - Teks alternatif tidak pernah dibuat kecuali
FallbackAlternateTextdisediakan secara eksplisit - Edit konten halaman produsen dipentaskan sampai validasi berhasil, sedangkan edit aliran termuat tetap di dalam transaksi grafik
- Persimpangan tabel ambigu, anak struktural yang hilang, ID yang bertentangan, target kelanjutan yang belum terselesaikan, dan semantik header yang tidak ada tidak pernah ditebak
- Kebijakan default menggulung balik seluruh perbaikan ketika kesalahan PDF/UA-2 yang tidak terkait tetap ada
- Grafik termuat dan sisi produsen menggunakan jalur validasi dan perbaikan terbatas yang sama
Contoh
var
Options: THPDFUA2RepairOptions;
Report: THPDFUA2RepairReport;
Issues: THPDFUA2ValidationIssues;
begin
Options := THPDFUA2RepairOptions.Default;
Options.DefaultLanguage := 'en-US';
Options.CustomAttributeNamespaceURI :=
'https://example.com/ns/accessibility-attributes';
if not PDF.RepairPDFUA2Structure(Options, Report, Issues) then
raise Exception.CreateFmt('%s at %s',
[String(Issues[0].Code), String(Issues[0].Path)]);
end;