SaveAsPdfUa — schreibt die PDF/UA-1-Ausgabe in jeden TStream, ohne über die Festplatte zu gehenfunction SaveAsPdfUaToStream(Stream: TStream; const Options: TPdfUaSaveOptions): Boolean;
SaveAsPdfUaToStream ist das Streaming-Gegenstück zu
SaveAsPdfUa — es erzeugt dieselbe PDF/UA-1-Ausgabe,
schreibt das Ergebnis aber in jeden durchsuchbaren TStream,
den der Aufrufer bereitstellt. Nützlich für HTTP-Upload-Pipelines,
BLOB-Spalten, In-Memory-Cache-Schichten, Archivcontainer
(ZIP / TAR) oder jeden Workflow, bei dem die PDF/UA-Bytes nie auf
die Festplatte geschrieben werden müssen
Die Nachbearbeitungslogik ist identisch zu
SaveAsPdfUa(FileName, Options): Zuerst läuft das Basis-
SaveAs, danach fügt ein inkrementelles Update den
XMP-Metadatenstrom ein (mit dem erforderlichen dc:title
nach ISO 14289-1 §7.1 und der Beschreibung des pdfuaid-
Erweiterungsschemas), ergänzt /MarkInfo und
/ViewerPreferences im Katalog, wenn die Quelle keine
hat, ergänzt /Lang im Katalog, wenn der Aufrufer ein
BCP-47-Tag geliefert hat, und schreibt ein /ID-Array
in den Trailer. Leere Optionsfelder werden aus den PDFium-Lesern
(FPDF_GetMetaText, FPDF_GetFileIdentifier,
FPDFCatalog_GetLanguage) automatisch befüllt, sodass
der typische Aufrufer nur DocumentTitle oder
Language setzen muss, falls nötig
Gibt bei Erfolg True zurück. Der Ausgabestream bleibt
an der Position nach dem zuletzt geschriebenen Byte. Gibt
False zurück, wenn das Basis-SaveAs
fehlschlägt oder die Nachbearbeitung nicht angehängt werden kann
(typischerweise eine verschlüsselte Quelle)
SaveAsPdfUa: Anforderungen auf Inhaltsebene (StructTreeRoot-Tagging, Figure Alt, Schrifteinbettung) werden von dieser Methode nicht erzwungen/MarkInfo, /ViewerPreferences oder /Lang bereits im Quellkatalog vorhanden sind — diese Einträge bleiben unverändert erhaltensaRemoveSecurity
var
Stream: TMemoryStream;
Opts: TPdfUaSaveOptions;
begin
Stream := TMemoryStream.Create;
try
Opts := TPdfUaSaveOptions.Default;
Opts.DocumentTitle := 'Quarterly Report';
Opts.Language := 'en';
if Pdf1.SaveAsPdfUaToStream(Stream, Opts) then
begin
Stream.Position := 0;
UploadToArchive(Stream);
end;
finally
Stream.Free;
end;
end;