procedure LoadDocument;
procedure LoadDocument(Data: Pointer; Size: NativeUInt; Buffered: Boolean = True);
| Data | Pointer. Wskaźnik na surowe dane PDF w pamięci. |
| Size | NativeUInt. Rozmiar bufora danych w bajtach. |
| Buffered | Boolean. Przy True (domyślnie) TPdf zachowuje własną kopię. Przy False bufor musi pozostać ważny do zwolnienia dokumentu. |
procedure LoadDocument(const Data: TBytes; Buffered: Boolean = True);
| Data | TBytes. Zawartość pliku PDF jako tablica bajtów. |
| Buffered | Boolean. Przy True (domyślnie) TPdf zachowuje własną kopię. Przy False tablica bajtów musi pozostać ważna i niezmieniona do zwolnienia dokumentu. |
procedure LoadDocument(const Data: TBytes; Index, Count: Integer; Buffered: Boolean = True);
| Data | TBytes. Tablica bajtów bazowych zawierająca okno PDF. |
| Index | Integer. Przesunięcie liczone od zera pierwszego bajtu PDF. |
| Count | Integer. Liczba bajtów PDF do wczytania. |
| Buffered | Boolean. Przy True (domyślnie) TPdf kopiuje tylko wybrane okno. Przy False tablica bajtów bazowych musi pozostać ważna i niezmieniona do zwolnienia dokumentu. |
procedure LoadDocument(Data: TMemoryStream; Buffered: Boolean = True);
| Data | TMemoryStream. TMemoryStream zawierający dane PDF. |
| Buffered | Boolean. Przy True (domyślnie) TPdf zachowuje własną kopię. Przy False pamięć strumienia musi pozostać ważna do zwolnienia dokumentu. |
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;
Starsze przeciążenia używają trybu zgodnego i zachowują dotychczasowe zachowanie, publikując natywną ważność xref i status odzyskiwania przez LastLoadReport. Przeciążenie bez argumentów czyta ze ścieżki zapisanej w FileName. Przeciążenia Pointer, TBytes i TMemoryStream wczytują bezpośrednio z danych w pamięci, omijając system plików. Przeciążenie zakresu bajtów wybiera osadzony PDF z większego kontenera, ramki protokołu lub wielokrotnie używanego bufora odbioru bez tworzenia tymczasowego wycinka TBytes.
Gdy Buffered ma wartość True (domyślnie), TPdf kopiuje dostarczone bajty do swojego zatrzymanego bufora. Gdy False, bufor wywołującego musi pozostać ważny i niezmieniony do UnloadDocument lub Active := False — unika to dodatkowej kopii, ale wymaga starannego zarządzania cyklem życia.
Przeciążenie zakresu bajtów odrzuca wartości ujemne, Index przekraczający długość danych lub Count wykraczający poza pozostałe bajty. Przeciążenie wskaźnikowe odrzuca nil, gdy Size jest niezerowe; przeciążenie TMemoryStream odrzuca strumień nil, zanim jakikolwiek stan dokumentu zostanie zmieniony
Po sukcesie Active staje się True, a wszystkie właściwości strony odzwierciedlają pierwszą stronę (PageNumber = 1). Po niepowodzeniu zgłaszany jest wyjątek EPdfError.
TPdfLoadOptions.Default dostarcza ograniczonych wartości domyślnych dla bajtów źródła, problemów, sekcji xref, wpisów xref i numerów obiektów. PDFium pozostaje semantycznym parserem w każdym trybie; audyt otoki istnieje, ponieważ publiczne ABI PDFium raportuje ważność xref, ale nie udostępnia przełącznika wyłączającego odzyskiwanie parsera
plmCompatible akceptuje odzyskiwanie PDFium i zapisuje wynik bez zmiany starszego zachowania ładowaniaplmStrict odrzuca źródło, gdy PDFium przebudował jego xref lub ograniczony audyt znajdzie błędy strukturalneplmRecovery jawnie akceptuje odzyskane ładowanie i zwraca jego trasę diagnostyczną oraz dowodyAudyt podąża za klasycznymi tabelami xref, strumieniami xref, rewizjami hybrydowymi i łańcuchami /Prev. Raportuje wadliwe sekcje, cykle, sprzeczne wpisy, uszkodzone przesunięcia obiektów, brakujące znaczniki końcowe, nieobsługiwane filtry strumieni, wyczerpanie budżetu i natywne odzyskiwanie. Przekroczenie skonfigurowanego budżetu audytu ustawia AuditComplete na False i generuje ostrzeżenie; samo w sobie nie twierdzi, że niesprawdzone bajty są niepoprawne
InspectAvailability pozostaje lekką natywną sondą dostępności dla linearyzacji i ładowania strony-pierwszej; nie zastępuje strukturalnego raportu ładowania
TPdfLoadReport zawiera Status, CrossReferenceTableValid, UsedRecovery, RecoveryRoute, przesunięcia źródła i strukturalne, liczniki sekcji i wpisów, liczniki konfliktów i uszkodzeń, sumy problemów, stan obcięcia oraz typowaną tablicę Issues. Ten sam raport jest przechowywany w LastLoadReport
TPdfRepairReport zapisuje, czy źródło użyło odzyskiwania, rozmiar wyjścia i liczbę stron, ważność xref wyjścia, tekst błędu terminalowego oraz kompletny raport niezależnej ścisłej weryfikacji ładowania
SaveAsRepaired prosi PDFium o zapisanie kompletnej kopii nieprzyrostkowej, a następnie otwiera to wyjście w odosobnionym TPdf z plmStrict. Metoda dostarcza bajty dopiero po pomyślnej weryfikacji ważności xref i zgodności liczby stron. Przeciążenie plikowe zapisuje przez tymczasowy plik w tym samym katalogu i atomowo zastępuje plik docelowy
Kompletny zapis od nowa usuwa wcześniejszą historię przyrostową i unieważnia istniejące zakresy bajtów podpisów. Podpisane dokumenty są odrzucane, chyba że AllowSignedDocument jest jawnie True. Metoda naprawia struktury, które PDFium może pomyślnie wczytać i zapisać ponownie; nie gwarantuje odzyskania arbitralnie uszkodzonej treści ani zachowania podpisów cyfrowych
// Z pliku
Pdf.FileName := 'C:\docs\file.pdf';
Pdf.LoadDocument;
// Z TBytes
var Bytes: TBytes;
Bytes := TFile.ReadAllBytes('file.pdf');
Pdf.LoadDocument(Bytes);
// Z PDF osadzonego w większej tablicy bajtów
Pdf.LoadDocument(Container, PdfOffset, PdfLength);
// Z TMemoryStream (bez buforowania)
Pdf.LoadDocument(FStream, False);
// Odrzuć ukryte odzyskiwanie parsera
Options := TPdfLoadOptions.Default(plmStrict);
Pdf.LoadDocument(Options, Report);
// Zapisz ponownie i niezależnie zweryfikuj odzyskany dokument
Pdf.SaveAsRepaired('C:\docs\repaired.pdf', RepairReport);