Düzenlenebilir Teşhis Belgeleri ve Onarım

SaveLoadedDocumentDiagnostic, inceleme ve denetimli metin düzenlemesi için deterministik, paketlenmemiş bir çıktı üretir; RepairDiagnosticDocument ise düzenlenen dosyayı yapısal olarak geçerli bir PDF'ye geri çevirir

Gidiş-dönüş iş akışı

  1. Bir belge yükleyin ve SaveLoadedDocumentDiagnostic çağırın
  2. Nesne dictionary'lerini veya sıkıştırılmamış stream baytlarını; /Length, xref satırları veya startxref'i elle tutmaya çalışmadan düzenleyin
  3. RepairDiagnosticDocument'ı sınırlı seçeneklerle çağırın
  4. THPDFDiagnosticRepairReport'u inceleyin ve onarılmış hedefi yalnızca metot True döndürdüğünde kullanın

Onarım sözleşmesi

Katı reddetme

Onarım; mükerrer nesne numaraları, çoklu veya eksik Catalog nesneleri, bozuk trailer referansları, nesneler arası yorum dışı baytlar, geçersiz nesne grameri, nesne veya girdi sınırları, on haneden geniş klasik xref offset'leri ve katı yeniden yükleme doğrulama hataları karşısında fail closed davranır

Doğrulanmış nesnelerin içindeki işaretçiler atlanır; böylece string'lerdeki ve kodlanmış stream payload'larındaki nesne benzeri metinler xref girdisine dönüşmez

Sınırlı performans

Tarayıcı, kısa bir carry ile 1 MiB'lik pencereler okur, nesne aralıklarını dosya stream'leri arasında doğrudan kopyalar ve yalnızca doğrulanmış nesne meta verisiyle birlikte sınırlı dictionary sorgularını tutar

MaxInputBytes, MaxObjectCount ve MaxObjectNumber; taramayı, saklanan meta veriyi ve üretilen xref satırlarını, çıktı yayınlanmadan önce sınırlar

Pascal örneği

var
  Options: THPDFDiagnosticRepairOptions;
  Report: THPDFDiagnosticRepairReport;
begin
  Options := THPDFDiagnosticRepairOptions.Default;
  Options.MaxInputBytes := Int64(16) * 1024 * 1024 * 1024;

  if not THotPDF.RepairDiagnosticDocument(
    'edited-diagnostic.pdf',
    'repaired.pdf',
    Options,
    Report
  ) then
    raise Exception.Create(string(Report.Diagnostic));
end;

İlgili API