Docs de PDFiumPas

SaveAsPdfAToStream Método

Esta entrada API conserva identificadores, firmas, bloques de código y términos PDF en su forma original.
Componente: TPdf  ·  Unidad: PDFium
In-memory variant of SaveAsPdfA — writes the PDF/A-1b output into any TStream without staging through disk.

Sintaxis

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

Descripción

SaveAsPdfAToStream es la contraparte en streaming de SaveAsPdfA — produce la misma salida PDF/A-1b, pero escribe el resultado en cualquier TStream con capacidad de búsqueda que proporcione quien llama en lugar de pasar por un archivo temporal. Útil para canalizaciones de carga HTTP, columnas BLOB, capas de caché en memoria, contenedores de archivo (ZIP / TAR) o cualquier flujo de trabajo en el que los bytes PDF/A nunca necesiten tocar disco

La lógica de posprocesado es idéntica a SaveAsPdfA(FileName, Options): primero se ejecuta el SaveAs base, luego una actualización incremental inyecta el flujo de metadatos XMP (que lleva el diccionario de información del documento a forma XMP según ISO 19005-1 6.7.3 / Cor.1 Table 1 y embebe la descripción del esquema de extensión pdfaid requerida por 6.7.8), el OutputIntent que referencia un perfil ICC incrustado (sRGB por defecto, personalizable mediante Options.IccProfileData), una actualización del catálogo que los enlaza y un array /ID de trailer requerido por 6.1.3. Los campos de opciones que se dejan vacíos se autocompletan desde FPDF_GetMetaText y FPDF_GetFileIdentifier, así que el llamador típico solo fija Conformance

Devuelve True si tiene éxito. El flujo de salida queda en la posición posterior al último byte escrito. Devuelve False si falló el SaveAs base o si no se pudo acoplar el posprocesado PDF/A (normalmente porque el PDF origen estaba cifrado, algo que PDF/A prohíbe)

Notas

Ejemplo

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;

Véase también

SaveAsPdfA, ValidatePdfA, PdfAConformance, SaveAs