procedure LoadDocument;
procedure LoadDocument(Data: Pointer; Size: NativeUInt; Buffered: Boolean = True);
| Data | Pointer. Вказівник на вихідні дані PDF у пам'яті. |
| Size | NativeUInt. Розмір буфера даних у байтах. |
| Buffered | Boolean. Коли True (типово), TPdf зберігає власну копію. Коли False, буфер має залишатися чинним до розвантаження документа. |
procedure LoadDocument(const Data: TBytes; Buffered: Boolean = True);
| Data | TBytes. Вміст файла PDF як масив байтів. |
| Buffered | Boolean. Коли True (типово), TPdf зберігає власну копію. Коли False, масив байтів має залишатися чинним і незмінним до розвантаження документа. |
procedure LoadDocument(const Data: TBytes; Index, Count: Integer; Buffered: Boolean = True);
| Data | TBytes. Базовий масив байтів, який містить вікно PDF. |
| Index | Integer. Зсув першого байта PDF з нульовою базою. |
| Count | Integer. Кількість байтів PDF для завантаження. |
| Buffered | Boolean. Коли True (типово), TPdf копіює лише вибране вікно. Коли False, базовий масив байтів має залишатися чинним і незмінним до розвантаження документа. |
procedure LoadDocument(Data: TMemoryStream; Buffered: Boolean = True);
| Data | TMemoryStream. TMemoryStream із даними PDF. |
| Buffered | Boolean. Коли True (типово), TPdf зберігає власну копію. Коли False, пам'ять потоку має залишатися чинною до розвантаження документа. |
procedure LoadDocument(const Options: TPdfLoadOptions; out Report: TPdfLoadReport);
procedure LoadDocument(Data: Pointer; Size: NativeUInt; const Options: TPdfLoadOptions; out Report: TPdfLoadReport; Buffered: Boolean = True);
procedure LoadDocument(const Data: TBytes; const Options: TPdfLoadOptions; out Report: TPdfLoadReport; Buffered: Boolean = True);
procedure LoadDocument(const Data: TBytes; Index, Count: Integer; const Options: TPdfLoadOptions; out Report: TPdfLoadReport; Buffered: Boolean = True);
function SaveAsRepaired(Stream: TStream; out Report: TPdfRepairReport; AllowSignedDocument: Boolean = False): Boolean;
function SaveAsRepaired(const FileName: string; out Report: TPdfRepairReport; AllowSignedDocument: Boolean = False): Boolean;
Усталені перевантаження використовують режим compatible і зберігають свою наявну поведінку, одночасно публікуючи нативну чинність xref і стан відновлення через LastLoadReport. Перевантаження без аргументів читає зі шляху, збереженого в FileName. Перевантаження Pointer, TBytes і TMemoryStream завантажують дані безпосередньо з пам'яті, оминаючи файлову систему. Перевантаження з діапазоном байтів вибирає вбудований PDF із більшого контейнера, кадру протоколу або багаторазового буфера прийому, не створюючи тимчасового зрізу TBytes.
Коли Buffered має значення True (типово), TPdf копіює надані байти у свій збережений буфер. Коли False, буфер викликача має залишатися чинним і незмінним до UnloadDocument або Active := False — це уникає додаткового копіювання, але потребує обережного керування часом життя.
Перевантаження з діапазоном байтів відхиляє від'ємні значення, Index за межами довжини даних або Count, що виходить за доступні байти. Перевантаження з вказівником відхиляє nil, коли Size ненульовий; перевантаження TMemoryStream відхиляє nil потік до будь-якої зміни стану документа
У разі успіху Active стає True, і всі властивості сторінки відображають першу сторінку (PageNumber = 1). У разі невдачі породжується виняток EPdfError.
TPdfLoadOptions.Default надає обмежені типові значення для байтів джерела, проблем, розділів xref, записів xref і номерів об'єктів. PDFium залишається семантичним парсером в кожному режимі; аудит-обгортка існує тому, що публічний ABI PDFium повідомляє чинність xref, але не надає перемикача, який вимикає відновлення парсера
plmCompatible приймає відновлення PDFium і записує результат, не змінюючи усталеної поведінки завантаженняplmStrict відхиляє джерело, коли PDFium перебудував його xref або обмежений аудит знаходить структурні помилкиplmRecovery явно приймає відновлене завантаження та повертає його діагностичний маршрут і доказиАудит проходить класичні таблиці xref, потоки xref, гібридні ревізії та ланцюжки /Prev. Він повідомляє про деформовані розділи, цикли, конфліктні записи, пошкоджені зміщення об'єктів, відсутні кінцеві маркери, непідтримувані фільтри потоків, вичерпання бюджету та нативне відновлення. Перевищення налаштованого бюджету аудиту встановлює AuditComplete у False і породжує попередження; саме по собі це не стверджує, що неперевірені байти недійсні
InspectAvailability залишається легким нативним зондом доступності для лінеаризації та завантаження першої сторінки; він не замінює структурний звіт завантаження
TPdfLoadReport містить Status, CrossReferenceTableValid, UsedRecovery, RecoveryRoute, зміщення джерела та структури, лічильники розділів і записів, лічильники конфліктів і пошкоджень, підсумки проблем, стан обрізання та типізований масив Issues. Той самий звіт зберігається в LastLoadReport
TPdfRepairReport фіксує, чи джерело використало відновлення, розмір виводу та кількість сторінок, чинність xref виводу, текст кінцевої помилки та повний звіт незалежної перевірки строгим завантаженням
SaveAsRepaired просить PDFium записати повну неінкрементну копію, а потім відкриває цей вивід в ізольованому TPdf із plmStrict. Метод віддає байти лише після успішної перевірки чинності xref і узгодженості кількості сторінок. Файлове перевантаження пише через тимчасовий файл у тому самому каталозі й атомарно замінює призначення
Повний перезапис видаляє попередню інкрементну історію та анулює наявні байтові діапазони підписів. Підписані документи відхиляються, якщо AllowSignedDocument явно не має значення True. Метод відновлює структури, які PDFium може успішно завантажити та перезаписати; він не гарантує відновлення довільного пошкодженого вмісту чи збереження цифрових підписів
// From file
Pdf.FileName := 'C:\docs\file.pdf';
Pdf.LoadDocument;
// From TBytes
var Bytes: TBytes;
Bytes := TFile.ReadAllBytes('file.pdf');
Pdf.LoadDocument(Bytes);
// From a PDF embedded in a larger byte array
Pdf.LoadDocument(Container, PdfOffset, PdfLength);
// From TMemoryStream (unbuffered)
Pdf.LoadDocument(FStream, False);
// Reject hidden parser recovery
Options := TPdfLoadOptions.Default(plmStrict);
Pdf.LoadDocument(Options, Report);
// Rewrite and independently verify a recovered document
Pdf.SaveAsRepaired('C:\docs\repaired.pdf', RepairReport);