THPDFWindowsFormDataTransaction

HPDFWindowsFormData fornece uma ponte Windows do grafo atual do THotPDF ao engine nativo autenticado de FDF/XFDF

Declarações

constructor Create(Document: THotPDF; OriginalSource: TStream;
  const Password: AnsiString; const Limits: THPDFWindowsFormDataLimits;
  Checkpoint: TNotifyEvent = nil);
procedure SetSignaturePolicyOptions(const Options: THPDFHeadlessCMSOptions);
function ExportData(Format: THPDFHeadlessFormDataFormat;
  const Options: THPDFHeadlessFormDataOptions): TBytes;
procedure ImportData(const Bytes: TBytes; Format: THPDFHeadlessFormDataFormat;
  const Fonts: THPDFHeadlessRichTextFonts;
  const AppearanceOptions: THPDFHeadlessTextAppearanceOptions;
  const Options: THPDFHeadlessFormDataOptions; const Password: AnsiString);
procedure ImportDataWithFamilies(const Bytes: TBytes;
  Format: THPDFHeadlessFormDataFormat; const Families: THPDFHeadlessRichTextFontFamilies;
  const AppearanceOptions: THPDFHeadlessTextAppearanceOptions;
  const Options: THPDFHeadlessFormDataOptions; const Password: AnsiString);
procedure FillTypedData(const Updates: THPDFHeadlessRichTextFieldUpdates;
  const Options: THPDFHeadlessFormDataOptions; const Password: AnsiString);
function ExportAnnotations(const Options: THPDFHeadlessXFDFOptions;
  out Bytes: SysUtils.TBytes): THPDFHeadlessXFDFExportResult;
procedure ImportAnnotations(const Bytes: SysUtils.TBytes;
  const Options: THPDFHeadlessXFDFOptions; const Password: AnsiString);
property ChangedAnnotations: Integer;
function PreparedFieldCount: Integer;
procedure GetPreparedField(Index: Integer; out Name, Value: UnicodeString;
  out FieldType: Integer);
procedure WritePreparedPDF(Destination: TStream);
procedure TakeCandidate(out Document: THotPDF;
  out Source: THPDFWindowsFormDataSource);
property ChangedFields: Integer;
property CancellationToken: THPDFCancellationToken;

Posse e políticas

Document, OriginalSource e Checkpoint são emprestados até a destruição; OriginalSource precisa corresponder exatamente à revisão original carregada do documento; o construtor copia e sela uma origem privada original, autentica as credenciais AES dela, e prepara o grafo pendente real em outra origem privada

O engine nativo checa a integridade existente de assinaturas e o binding ESS de certificados, permissões DocMDP, locks FieldMDP e flags read-only de campos; atualizações permitidas P2/P3 regeneram aparências genuínas retendo os bytes originais assinados

Checagens obrigatórias de confiança, timestamp e revogação assinada podem ser configuradas com SetSignaturePolicyOptions; uma checagem comum de integridade não implica confiança numa raiz de negócio não especificada

ImportData prepara um PDF candidato e um THotPDF carregado separadamente; ele não muta o documento emprestado; um import semanticamente inalterado ainda autentica a política assinada antes de copiar a revisão atual exata

WritePreparedPDF copia bytes candidatos delimitados para o stream fornecido; publique com sucesso todos os callbacks obrigatórios de PDF e resultado antes de TakeCandidate; falha ou cancelamento significa descartar a transação

TakeCandidate transfere a posse tanto do THotPDF quanto do THPDFWindowsFormDataSource dele; destrua o documento antes de destruir a origem dele; o candidato não retém o token de cancelamento da transação

THPDFWindowsFormDataSource é dono de um arquivo temporário criado exclusivamente; Seal faz flush dele e o reabre para acesso somente leitura; a destruição fecha e remove o arquivo; callbacks da origem não sobrevivem à origem dona

ExportAnnotations e ImportAnnotations implementam a troca mapeada de anotações XFDF; ChangedAnnotations reporta a contagem de appends, usando o mesmo contador de mudanças preparadas de ChangedFields

Limites

FillTypedData prepara campos escalares mistos e rich runs tipados originais no mesmo candidato, sem round trip de decodificação RV; os accessors de campos preparados leem o candidato realmente resultante

ImportDataWithFamilies seleciona uma a dezesseis famílias nomeadas com programas reais de estilos e o mesmo ciclo de vida autenticado de candidatos; o método original ImportData mantém seu comportamento de família única

THPDFWindowsFormDataLimits.Default define MaxWorkingBytes como 256 MiB, MaxOutputBytes como 128 MiB, MaxObjects como 100000 e MaxPages como 10000; a capacidade de trabalho precisa ser de pelo menos 1 MiB, e todas as outras capacidades precisam ser positivas

CancellationToken é emprestado e válido apenas até a destruição da transação; ele faz polling do token de operações do documento original e do Checkpoint durante parsing nativo, decodificação de XML rich, validação de políticas e cópia

Esta classe do Windows está disponível para Delphi moderno, C++Builder e FPC do Windows; o Linux nativo usa THPDFHeadlessDocument diretamente

Tópicos relacionados

Troca FDF/XFDF no Windows, Preparação do grafo atual, Form data nativo

Grafos de anotações FDF

ExportAnnotationsFDF retorna a contagem de anotações e escreve FDF binário delimitado em Bytes; ImportAnnotationsFDF prepara um candidate usando THPDFFDFOptions

O perfil FDF retém recursos de aparências fornecidos e objetos indiretos compartilhados; valores NM correspondentes na mesma página selecionam anotações existentes para substituição

Os métodos FDF usam a mesma posse emprestada de documento, política autenticada e ciclo de vida de candidate preparado; ChangedAnnotations conta substituições e anexos reais, e um import equivalente retém a revisão atual exata

Remoção de anotações

RemoveAnnotations prepara remoções exatas de página e NM, incluindo popups e replies dependentes, pelo mesmo ciclo de vida de candidate; ChangedAnnotations reporta todas as remoções uma vez

Publique dados de PDF e resultado antes de TakeCandidate; falha deixa o documento e a origem emprestados inalterados