PDFium Delphi Component Docs

SaveAsPdfAToStream Methode

Komponente: TPdf  ·  Unit: PDFium
In-Memory-Variante von SaveAsPdfA — schreibt die PDF/A-1b-Ausgabe in jeden beliebigen TStream, ohne zwischendurch auf die Festplatte zu gehen

Syntax

function SaveAsPdfAToStream(Stream: TStream; const Options: TPdfASaveOptions): Boolean;

Description

SaveAsPdfAToStream ist das Streaming-Gegenstück zu SaveAsPdfA — es erzeugt dieselbe PDF/A-1b-Ausgabe, schreibt das Ergebnis aber in einen beliebigen seekbaren TStream, den der Aufrufer bereitstellt, statt über eine temporäre Datei zu laufen. Nützlich für HTTP-Upload- Pipelines, BLOB-Spalten, Speicher-Cache-Schichten, Archivcontainer (ZIP / TAR) oder jeden Workflow, in dem die PDF/A-Bytes nie die Platte berühren müssen

Die Post-Processing-Logik ist identisch zu SaveAsPdfA(FileName, Options): Das basisliegende SaveAs läuft zuerst, dann schiebt ein inkrementelles Update den XMP-Metadaten-Stream nach (der das Document Information Dictionary in XMP-Form überführt, gemäß ISO 19005-1 6.7.3 / Cor.1 Table 1, und die von 6.7.8 geforderte pdfaid- Extension-Schema-Beschreibung einbettet), den OutputIntent mit Verweis auf ein eingebettetes ICC-Profil (standardmäßig sRGB, eigenes über Options.IccProfileData), ein Katalog-Update, das alles miteinander verknüpft, und das von 6.1.3 geforderte Trailer-/ID-Array. Leere Options-Felder befüllt die Funktion automatisch aus FPDF_GetMetaText und FPDF_GetFileIdentifier, sodass der typische Aufrufer nur Conformance setzt

Liefert True bei Erfolg. Der Ausgabe-Stream steht danach an der Position nach dem letzten geschriebenen Byte. Liefert False, wenn das basisliegende SaveAs scheiterte oder sich die PDF/A-Nachbearbeitung nicht anhängen ließ (typischerweise, weil das Quell-PDF verschlüsselt war, was PDF/A verbietet)

Remarks

Example

var
  Stream: TMemoryStream;
  Opts: TPdfASaveOptions;
begin
  Stream := TMemoryStream.Create;
  try
    Opts := Default(TPdfASaveOptions);
    Opts.Conformance := pac1b;
    if Pdf1.SaveAsPdfAToStream(Stream, Opts) then
    begin
      Stream.Position := 0;
      UploadToArchive(Stream);
    end;
  finally
    Stream.Free;
  end;
end;

See Also

SaveAsPdfA, ValidatePdfA, PdfAConformance, SaveAs