procedure BeginIncrementalSave(AllowSignedDocument: Boolean = False);
function CommitIncrementalSave(Stream: TStream; out Info: TPdfIncrementalCommitInfo): Boolean;
function CommitIncrementalSave(const FileName: string; out Info: TPdfIncrementalCommitInfo): Boolean;
procedure EndIncrementalSave;
property IncrementalSaveActive: Boolean;
| AllowSignedDocument | Jawnie zezwala na sesję na podpisanym dokumencie; domyślnie jest ona odrzucana |
| Stream | TStream, który otrzymuje kompletny nagromadzony PDF po tym zatwierdzeniu |
| FileName | Ścieżka wyjściowa zastępowana dopiero po powodzeniu sąsiedniego pliku tymczasowego |
| Info | Statystyki pojedynczego zatwierdzenia zwracane po udanym zapisie do celu |
| ChangedObjectCount | Liczba zmienionych lub nowych obiektów pośrednich dopisanych przez to zatwierdzenie |
| AppendedByteCount | Bajty dopisane po dokładnym prefiksie poprzedniego wyjścia |
| OutputByteCount | Łączna liczba bajtów kompletnego wyjścia zwróconego przez to zatwierdzenie |
| RevisionCount | Liczba niepustych rewizji zatwierdzonych w bieżącej sesji |
BeginIncrementalSave przechwytuje stabilną semantyczną migawkę PDFium zarówno jako punkt odniesienia porównania, jak i pierwsze kompletne wyjście
Każde zatwierdzenie przechwytuje bieżący stan, rozwiązuje aktywne obiekty klasyczne, hybrydowe, xref-stream i object-stream, a następnie porównuje generację obiektów i dokładne bajty treści
Po poprzednim wyjściu zapisywane są tylko zmienione lub nowe obiekty pośrednie, a po nich najmniejsza wymagana rewizja xref i trailer
Źródło z klasycznym xref kontynuuje z klasycznymi tabelami xref, natomiast źródło z xref-stream kontynuuje z samoindeksowanymi strumieniami xref
Jeśli nic się nie zmieniło, poprzednie wyjście jest zwracane bajt po bajcie, żadna rewizja nie jest dopisywana, a RevisionCount nie rośnie
Wariant plikowy zapisuje sąsiedni plik tymczasowy, atomowo zastępuje cel i przywraca stan sesji, gdy zapis lub zastąpienie się nie powiedzie
AllowSignedDocument ma wartość True; jawne zezwolenie nie waliduje polityki DocMDP ani FieldMDPEPdfErrorCompressed, dzięki czemu porównywanie obiektów pozostaje stabilne
var
Info: TPdfIncrementalCommitInfo;
begin
Pdf.BeginIncrementalSave;
try
Pdf.PageNumber := 1;
Pdf.PageRotation := ro90;
Pdf.CommitIncrementalSave('revision-1.pdf', Info);
Pdf.PageRotation := ro180;
Pdf.CommitIncrementalSave('revision-2.pdf', Info);
finally
Pdf.EndIncrementalSave;
end;
end;