SaveAs / Save mit FlateDecode komprimiert werden. Die Komprimierungs-Engine nach dem Speichern durchsucht das serialisierte PDF, ersetzt alle unkomprimierten Ströme durch ihre zlib-komprimierten Gegenstücke und baut die XRef-Tabelle neu auf. Bereits komprimierte Ströme werden unverändert durchgereichtproperty Compressed: Boolean; // default True
Compressed steuert, ob der nächste Aufruf von SaveAs und verwandten Methoden eine Komprimierung der Ströme nach dem Schreiben anwendet. Wenn True — der Standard — serialisiert PDFiumPas das Dokument über PDFium und führt dann einen Durchlauf aus, der alle unkomprimierten Inhalts- / Metadatenströme durch FlateDecode-komprimierte Gegenstücke ersetzt und die Cross-Reference-Tabelle mit den neuen Offsets neu schreibt
Wenn False, werden Ausgabeströme unverändert geschrieben. Die resultierende Datei ist typischerweise 2-10× größer, aber in einem Texteditor lesbar, was beim Debuggen von Inhaltsströmen, beim Vergleichen zweier PDF-Revisionen mit diff oder beim Einspeisen der Ausgabe in ein PDF-Syntax-bewusstes Tool nützlich ist, das unkomprimierte Eingaben bevorzugt
Das Setzen von Compressed ändert nur das Verhalten des nächsten Speichervorgangs; das Dokument im Speicher bleibt unbeeinflusst. Ein Dokument, das komprimiert geladen wurde und mit Compressed := False gespeichert wird, wird bei der Ausgabe dekomprimiert; ein Dokument, das unkomprimiert geladen wurde und mit Compressed := True gespeichert wird, wird bei der Ausgabe komprimiert. Beim erneuten Durchlaufen eines vollständig komprimierten Dokuments mit Compressed := True entsteht eine nahezu identische Dateigröße — die Engine erkennt bereits komprimierte Ströme und komprimiert sie nicht erneut
// Save an uncompressed copy alongside the compressed original for debugging
begin
Pdf.Active := True;
Pdf.Compressed := True;
Pdf.SaveAs('output.pdf'); // production copy
Pdf.Compressed := False;
Pdf.SaveAs('output_debug.pdf'); // human-readable copy
end;