PDFium Delphi Component Docs

PDF 标准辅助单元

这些单元公开流级注入器、验证器、签名操作和支撑记录,供相应的 TPdf 便捷方法使用

当工作流已经持有源流和目标流,或需要独立于 TPdf 实例的验证选项与结果细节时,请使用它们

FPdfPdfCommon

函数用途
AnsiCountDictKeyTokens统计原始 PDF 字典顶层的单个已解码名称键,同时跳过嵌套值、字符串和注释
TPdfParserResourceBudget定义进程级的递归、令牌、对象、解码字节、扩展比、分配和截止时间限制;Default 返回库默认值
ConfigurePdfParserResourceBudget验证并以原子方式替换后续自定义解析器操作使用的进程策略
GetPdfParserResourceBudget返回当前进程策略的线程安全值快照
ResetPdfParserResourceBudget恢复默认进程策略
PdfParserStartTick, PdfParserDeadlineReached为自定义解析器实现提供回绕安全的截止时间检查点

FPdfAssocFiles

procedure InjectAssociateFiles(Source: TStream; Dest: TStream; const Options: TAssocFilesOptions);

公开类型用途
TPdfAFRelationshipISO 32000-2 AFRelationship 值 afSource, afData, afAlternative, afSupplement, afUnspecified, afEncryptedPayload, afFormData, and afTemplate,包括 PDF 2.0 新增值
TAssociateFile单个关联文件,含 FileName、Description、载荷 Content、Relationship 和可选 MIMEType
TAssocFilesOptions关联文件 Files 列表和目录或页面 TargetPage,默认值来自 TAssocFilesOptions.Default
EPdfAssocFilesError由 InjectAssociateFiles 在源中没有可读的 trailer 或 catalog,或 TargetPage 为负数、未按页树顺序命名任何页面时抛出;目标流保持不变

FPdfPades

函数用途
InjectPadesDssMarkers通过增量更新添加 DSS 证书、OCSP、CRL 和 VRI 材料
RenewPadesArchiveTimestamp追加文档时间戳,并报告所得的归档级别和时间戳元数据
ValidatePadesCompliance, ValidatePadesTrust验证顶层签名条目基数、精确的 ByteRange 与 Contents 令牌排除、密码学完整性、信任、吊销和时间戳证据
AnalyzePadesSignatureRevisions对后续修订、对象变更、FieldMDP 影响和修改风险分类
BuildPadesEvidenceReport, BuildPadesEvidenceReportBytes从流或既有的不可变源字节捕获构建有界的多签名证据
EvaluatePadesSignatureAlgorithm, InspectPadesSignatureAlgorithm检查 CMS 与证书算法参数,并评估其受支持的安全状态,套用 PDF 2.0 椭圆曲线概况与 ETSI TS 119 312 RSA 签名套件
VerifyCmsAlgorithmProtection对照签名者摘要与签名算法检查 CMS 算法保护签名属性
SignPadesBytes追加本地 PAdES 签名,可选 RFC 3161 时间戳
PreparePadesRemoteSignature, CompletePadesRemoteSignature准备并完成绑定固定宽度占位符的远程签名工作流
SavePadesRemoteSigningRequest, LoadPadesRemoteSigningRequest持久化或恢复完成远程签名所需的请求元数据

公共 PAdES 类型

功能范围类型
级别与验证TPadesLevel (plUnknown, plNone, plB_B, plB_T, plB_LT, plB_LTA), TPadesValidationIssue, TPadesValidationIssues, TPadesValidationSourceStatus (pvssUnavailable, pvssOriginalBytes, pvssIncomplete), TPadesValidationResult
密码学TPadesCryptoStatus (pcsNotChecked, pcsValid, pcsInvalid, pcsUnsupported, pcsIndeterminate), TPadesSignatureAlgorithmFamily (psafUnknown, psafRsa, psafEcdsa, psafEd25519, psafEd448), TPadesSignatureAlgorithmInfo, TPadesSignatureValidation, TPadesSignatureValidations
信任验证TPadesTrustNetworkPolicy (ptnpOffline, ptnpOnline), TPadesTrustValidationStage, TPadesTrustValidationProgress, TPadesTrustValidationProgressEvent, TPadesTrustValidationOptions, TPadesTrustValidationAsyncStatus, TPadesTrustValidationCompletion, TPadesTrustValidationReply
修订分析TPadesRevisionAnalysisStatus (prasNotChecked, prasNoLaterChanges, prasAllowed, prasDisallowed, prasSuspicious, prasIndeterminate), TPadesRevisionDecision (prdAllowed, prdDisallowed, prdSuspicious, prdIndeterminate), TPadesFieldMdpAction (pfmaNone, pfmaAll, pfmaInclude, pfmaExclude, pfmaUnknown), TPadesRevisionChangeKind, TPadesRevisionRisk, TPadesRevisionRisks, TPadesFieldNames, TPadesRevisionObjectChange, TPadesRevisionObjectChanges, TPadesSignatureRevisionAnalysis, TPadesSignatureRevisionAnalyses, TPadesRevisionAnalysisReport
证据报告TPadesHashStrings, TPadesObjectNumbers, TPadesEvidenceReportOptions, TPadesEvidenceMaterialKind, TPadesValidationMaterialEvidence, TPadesValidationMaterialEvidences, TPadesVriEvidence, TPadesVriEvidences, TPadesSignatureEvidence, TPadesSignatureEvidences, TPadesEvidenceReport
DSS 与归档时间戳TPadesDssMaterial, TPadesDssMaterials, TPadesDssIndexes, TPadesDssVri, TPadesDssVris, TPadesDssOptions, TPadesArchiveTimestampOptions, TPadesArchiveTimestampReport
签名TPadesSeedValueConstraint, TPadesSeedValueConstraints, TPadesSignatureFieldOptions, TPadesSignOptions, TPadesRemoteSignOptions, TPadesRemoteByteRange, TPadesRemoteSigningRequest

TPadesValidationResult 提供归档 Level、Issues 集合、SourceStatus、IntegrityStatus 和每签名的 Signatures 数组,并带 IsCompliant、IsCompliantAt、IsCryptographicallyValid 以及统计 Document Time-stamp 字典数量的 DocTimeStampCount;各选项记录提供静态 Default 初始化器

TPadesSignatureAlgorithmInfo 报告 Family, DigestAlgorithmOid, SignatureAlgorithmOid, PublicKeyAlgorithmOid, CurveOid, DigestParametersPresent, DigestParameterBits, SignatureParametersPresent, PublicKeyParametersPresent, PublicKeyParametersAreNamedCurve, and PolicyStatus;TPadesSignatureValidation 增加 IsDocumentTimeStamp, CoveredRevisionLength, the ByteRangeStatus, CmsSignatureStatus, AlgorithmPolicyStatus, SigningCertificateStatus, CertificateTrustStatus, QualifiedTrustStatus, RevocationStatus, TimeStampStatus, TimeStampSignatureStatus, TimeStampTrustStatus, and TimeStampRevocationStatus 判定、NativeSignatureError、NativeTrustError、SignerCertificateSha256、CertificateChainSha256,以及嵌套的 AlgorithmInfo 和 QualifiedTrust 证据

TPadesTrustValidationStage 依次经历 ptvsStarting, ptvsReadingSource, ptvsParsingSignatures, ptvsCryptographicIntegrity, ptvsCertificateChain, ptvsAiaRetrieval, ptvsOcspRetrieval, ptvsCrlRetrieval, ptvsTimestampToken, and ptvsCompleted;TPadesTrustValidationProgress 携带 Stage, SignatureIndex, SignatureCount, and Percent;TPadesTrustValidationOptions 选择 NetworkPolicy, CheckRevocation, CheckTimeStamps, UrlRetrievalTimeoutMs, QualifiedTrustEvaluator, CancellationToken, and OnProgress;TPadesTrustValidationAsyncStatus 为 ptvasSuccess, ptvasCancelled, or ptvasFailure,而 TPadesTrustValidationCompletion 返回异步 Status, Validation, ErrorMessage, ErrorClassName, and CancellationReason

TPadesRevisionChangeKind 对 prckCrossReference, prckSignature, prckValidationMaterial, prckFormField, prckAnnotation, prckPageContent, prckDocumentStructure, prckMetadata, prckActiveContent, prckDeletedObject, prckCompressedObject, and prckUnknown 分类;TPadesRevisionRisk 涵盖 prrMalformedRevisionChain, prrDuplicateObjectDefinition, prrUnreferencedObjectDefinition, prrSignatureObjectRedefined, prrPageContentChanged, prrDocumentStructureChanged, prrActiveContentAdded, prrFieldMdpUnresolved, prrCompressedObjectUnresolved, prrCoveredRevisionNotFound, and prrResourceLimitExceeded

TPadesRevisionObjectChange 报告 RevisionIndex, ObjectNumber, Generation, Offset, ObjectStreamNumber, ObjectStreamIndex, Kind, Decision, IsAuthoritative, and IsRedefinition;TPadesSignatureRevisionAnalysis 增加 SignatureIndex, SignatureObjectNumber, CoveredRevisionLength, CoveredRevisionIndex, DocMdpPermission, FieldMdpAction, FieldNames, LaterRevisionCount, Status, Risks, and Changes;TPadesRevisionAnalysisReport 聚合 SourceStatus, RevisionCount, SignatureCount, Status, Risks, Signatures, and ErrorMessage

TPadesEvidenceMaterialKind 选择 pemkCertificate, pemkOcsp, or pemkCrl;TPadesValidationMaterialEvidence 为每个存储的流报告 Kind, ObjectNumber, StoredLength, and Sha256;TPadesVriEvidence 以 Key 和 ObjectNumber 为键,并列出 CertificateObjectNumbers, OcspObjectNumbers, and CrlObjectNumbers

TPadesSignatureEvidence 捕获 SignatureIndex, SignatureObjectNumber, IsDocumentTimeStamp, SubFilter, ByteRangeA, ByteRangeB, ByteRangeC, ByteRangeD, ContentsSha256, VriKey, SignaturePolicyOid, CommitmentTypeOid, HasMatchingVri, VriEvidenceIndex, TimeStampTokenSha256, TimeStampPolicyOid, TimeStampGenTime, TimeStampNonce, NativeFactsAvailable, NativeReason, NativeTime, NativeDocMdpPermission,以及嵌套的 Validation 和 Revision

TPadesEvidenceReport 聚合 SourceLength, PdfiumSignatureCount, DssCertificateCount, DssOcspCount, DssCrlCount, DssVriCount, StoredValidationBytes, IsTruncated, Validation, RevisionAnalysis, Signatures, ValidationMaterials, and VriEntries,并以带 TrustOptions, MaxSourceBytes, MaxSignatures, MaxRevisionChangesPerSignature, MaxValidationMaterials, MaxStoredValidationBytes, and MaxVriEntries 的 TPadesEvidenceReportOptions 为界

TPadesDssMaterial 存储单个 DerBytes 证书、OCSP 或 CRL 载荷;TPadesDssVri 通过 SignatureContents, CertIndexes, OcspIndexes, and CrlIndexes 选择文档级材料;TPadesDssOptions 接受 Certs, Ocsps, Crls, Vris, EsicExtensionLevel, and IncludeVri;TPadesArchiveTimestampOptions 携带 TsaUrl, Nonce, ContentsSize, UpdateDss,以及嵌套的 DssOptions;TPadesArchiveTimestampReport 报告 SourceLevel, ResultLevel, PreviousDocTimeStampCount, ResultDocTimeStampCount, SourceLength, ResultLength, DssUpdated, GenTime, PolicyOid, and Nonce

TPadesSeedValueConstraint 约束 psvcFilter, psvcSubFilter, psvcVersion, psvcReasons, psvcLegalAttestation, psvcAddRevocationInfo, or psvcDigestMethod;TPadesSignatureFieldOptions 约束 FieldName, RequiredSeedValues, Reasons, LegalAttestations, AcceptableCertificates, CertificateRequired, LockAction, LockFields, and CertificationPermission;TPadesSignOptions 携带 CertificateThumbprint, PaddingScheme, Reason, LegalAttestation, Location, ContactInfo, Name, SigningTimeUtc, CommitmentTypeOid, ContentsSize, Level, TsaUrl, Nonce, the SignaturePolicyOid, SignaturePolicyHash, SignaturePolicyUri, and SignaturePolicyDocument 组,以及嵌套的 FieldOptions;TPadesRemoteSignOptions 镜像远程安全的子集 Reason, LegalAttestation, Location, ContactInfo, Name, SigningTimeUtc, CommitmentTypeOid, ContentsSize, and FieldOptions;TPadesRemoteSigningRequest 绑定 FormatVersion, PreparedFingerprint, DocumentDigest, ByteRange, ContentsHexOffset, and ContentsSize

TPadesTrustValidationOptions.QualifiedValidationTime 选择信任列表服务历史的评估时间,为零时选择当前时间

TPadesSignatureValidation 还携带 RevocationReason: TPdfCmsRevocationReason、NativeRevocationError: Cardinal、TimeStampRevocationReason: TPdfCmsRevocationReason 和 NativeTimeStampRevocationError: Cardinal。签名诊断来自其分离式 CMS 检查;时间戳诊断来自附着令牌检查(包括 Document Time-stamp),且绝不会取代签名的诊断

吊销被禁用或相应的 CMS 检查未被执行时,reason 默认为 pcrrNone,原生错误默认为 0。这些默认值不代表成功;请检查 RevocationStatus 和 TimeStampRevocationStatus。ValidatePadesTrustAsync 会在完成结果中保留这些字段,TPadesSignatureEvidence.Validation 也会保留它们,供 TPadesEvidenceReport.ToJson 和 ToCsv 使用

诊断字段追加在公开的 TPadesSignatureValidation 记录末尾,记录随之变大。凡是交换该记录或包含它的记录的应用和包,请针对更新后的单元重新编译;先前编译的二进制与新的记录布局不兼容

FPdfPdfa

procedure InjectPdfAMarkers(Source: TStream; Dest: TStream; const Options: TPdfASaveOptions);
function ValidatePdfACompliance(Source: TStream): TPdfAValidationResult;
function ReadPdfAInfoFieldPresence(const PdfData: TBytes): TPdfAMetadataFields;
function ComparePdfAInfoAndXmp(const Info: TPdfAMetadataValues; Packet: TPdfXmpPacket): TPdfAMetadataReport;
function SynchronizePdfAInfoToXmp(const Info: TPdfAMetadataValues; Packet: TPdfXmpPacket): TPdfAMetadataFields;

公开类型用途
TPdfAConformance检测到或请求的 PDF/A 部分与一致性级别
TPdfAValidationIssue, TPdfAValidationIssues单个预检发现及其集合表示
TPdfANameArray基于名称的验证发现使用的字符串列表
TPdfAMetadataField, TPdfAMetadataFieldsISO 19005-1 表 1 的八个 Info 到 XMP 映射(pamfTitle, pamfAuthor, pamfSubject, pamfKeywords, pamfCreator, pamfProducer, pamfCreationDate, pamfModDate)及其集合表示
TPdfAMetadataValuesUnicode Info 值 Title, Author, Subject, Keywords, Creator, Producer, CreationDate, and ModDate,键的存在由 Present 独立于空文本跟踪
TPdfAMetadataState, TPdfAMetadataComparison, TPdfAMetadataComparisons, TPdfAMetadataReport带类型的每字段等价证据,状态为 pamsNotRequired, pamsEquivalent, pamsXmpMissing, pamsXmpTypeMismatch, pamsValueMismatch, pamsInvalidInfoDate, pamsInvalidXmpDate,每字段 Field, State, InfoValue, and XmpValue,报告级 HasXmpPacket, XmpParseError, MismatchFields 和 Comparisons 数组,以及聚合状态
TPdfAValidationResult一致性、Issues 集合和 IsCompliant 结果
TPdfASaveOptions元数据、标识符、IccProfileData 中的 ICC 配置文件数据、输出意图和一致性设置,带 Default 值

InjectPdfAMarkers 对有效的经典、xref 流、混合和对象流布局使用稀疏的最新修订查找和有界源复制,同时为不受支持或畸形的交叉引用数据保留兼容解析器

增量修订保留根与 Info 代次、源 xref 风格、trailer 标识符、加密拒绝行为和 Level A 降级语义

FPdfPdfe

procedure InjectPdfEMarkers(Source: TStream; Dest: TStream; const Options: TPdfESaveOptions);
function ValidatePdfECompliance(Source: TStream): TPdfEValidationResult;

公开类型用途
TPdfEConformance检测到或请求的 PDF/E 一致性
TPdfEValidationIssue, TPdfEValidationIssuesPDF/E 结构与内容发现,包括顶层 AcroForm /XFA 和间接 /NeedAppearances true;普通 AcroForm 字段和内嵌工程资产仍然允许
TPdfEValidationResult一致性、Issues 集合和 IsCompliant 结果
TPdfESaveOptionsPDF/E Version、元数据、文档标识符和默认值

FPdfPdfr

函数用途
InjectPdfRMarkers写入 PDF/R 标识以及受限的目录和 Info 结构
ValidatePdfRCompliance以默认光栅文档限制验证流
ValidatePdfRComplianceWithOptions以调用方选择的分辨率、几何、条带和加密要求验证流
ValidatePdfRPageFacts验证已收集的页面几何、对象计数、图像特征和过滤器

公共类型为 TPdfRConformance、TPdfRValidationIssue、TPdfRValidationIssues、带 Issues 集合与 IsCompliant 结果的 TPdfRValidationResult、TPdfRStringArray、TPdfRValidationOptions、TPdfRPageFacts 和 TPdfRSaveOptions

TPdfRValidationOptions 调整 MinimumResolutionDpi, MaximumResolutionDpi, GeometryTolerancePoints, RequireFullPageStrip, and RequireEncryptedPdf20Profile;TPdfRSaveOptions 携带 StripInfoOptionalEntries 和 StripCatalogOptionalEntries,用于清除源 Info 或目录中 §6.4.3 或 §6.3 白名单否则会拒绝的条目;TPdfRPageFacts 记录 PageNumber, MediaWidth, MediaHeight、ImageLeft, ImageBottom, ImageRight, and ImageTop 边界、ImageCount, TextObjectCount, PathObjectCount, FormObjectCount, and ShadingObjectCount、光栅几何 PixelWidth, PixelHeight, HorizontalDpi, VerticalDpi, and BitsPerPixel,以及每页的 ColorSpace 和 Filters 链

FPdfPdfua

函数用途
InjectPdfUaMarkers添加 PDF/UA 标识、语言、标题、MarkInfo、查看器首选项和 XMP 标记
ValidatePdfUaCompliance验证 PDF/UA-1 或 PDF/UA-2 标记与结构,可选择使用原始字节进行 XMP 检查
PdfUaIsStandardStructType对照 ISO 标准集合(包括编号标题)测试结构类型名称
PdfReadRoleMapPairs将直接或间接的 RoleMap 键与值提取到平行数组

公共类型为 TPdfUaConformance、TPdfUaValidationIssue、TPdfUaValidationIssues、带 Issues 集合与 IsCompliant 结果的 TPdfUaValidationResult、TPdfUaSaveOptions 和 TPdfUaNameArray

PDFium 单元还公开 TPdfUaLanguageSource, TPdfUaLanguageContentKind, TPdfUaLanguageResolution, TPdfUaLanguageSpan, TPdfUaLanguageSpans, TPdfUaLanguageCoverageOptions, and TPdfUaLanguageCoverageReport 用于有界的有效语言证据

TPdfUaUnicodeObjectCoverage, TPdfUaUnicodeObjectCoverages, TPdfUaUnicodeCoverageOptions, and TPdfUaUnicodeCoverageReport 提供有界的对象级直接 Unicode 与 ActualText 提取证据

ValidatePdfUaPageContentTagging 交叉核对原生页面对象标记与页面范围的结构 MCID,并报告未标记的真实内容以及暴露在结构树中的 Artifact 内容

TPdfUaSaveOptions.Default 选择 PDF/UA-1 默认值,而 TPdfUaSaveOptions.PdfUa2 选择 PDF/UA-2 配置

TPdfUaSaveOptions 携带 DocumentTitle、Language、Author、Subject、Keywords、Creator 和 Producer 元数据、CreationDate 和 ModDate、DocumentId 与 InstanceId UUID、Part、Revision、Amd 和 Corr 标识,以及在源缺少所需目录条目时注入它们的 EnsureMarkInfo 和 EnsureDisplayDocTitle 开关

FPdfPdfvt

procedure InjectPdfVTMarkers(Source: TStream; Dest: TStream; const Options: TPdfVTSaveOptions);
function ValidatePdfVTCompliance(Source: TStream): TPdfVTValidationResult;
function ReadPdfVTDPartEvidence(Source: TStream): TPdfVTDPartEvidence;

公开类型用途
TPdfVTConformance, TPdfVTTrappedStatePDF/VT 一致性和继承的 PDF/X trapped 状态选择,取 ptvUnspecified, ptvTrue, and ptvFalse,写入时 ptvUnspecified 规范化为 ptvFalse
TPdfVTValidationIssue, TPdfVTValidationIssues, TPdfVTValidationResult验证发现、Issues 集合、一致性和 IsCompliant 结果
TPdfDpmEntry, TPdfDpmEntries, TDpmTargetDocument Part Metadata 条目,含 Name、Value 和 IsNestedDict,放置在 dptRoot 或 dptLeaf 目标
TPdfVTDPartEvidence有界的文档部分层级与印刷条件证据,含 PageCount、RecordLevel 和 RecipientRecordCount
TPdfVTSaveOptionsPDF/X 基础、IccProfileData 中的 ICC 配置文件数据、通过 OutputCondition、OutputConditionIdentifier、RegistryName 和 OutputIntentInfo 指定的输出意图、Trapped 状态、元数据、标识符、DPart、通过 DpmTarget 放置的 DpmEntries 形式的 DPM,以及默认设置

FPdfPdfx

procedure InjectPdfXMarkers(Source: TStream; Dest: TStream; const Options: TPdfXSaveOptions);
function ValidatePdfXCompliance(Source: TStream): TPdfXValidationResult;

公开类型用途
TPdfXConformance, TPdfXTrappedStatePDF/X 变体和 Info 字典 trapped 状态选择,取 ptUnspecified, ptTrue, ptFalse, and ptUnknown,ptUnspecified 省略该条目
TPdfXValidationIssue, TPdfXValidationIssues, TPdfXValidationResult验证发现、Issues 集合、一致性和 IsCompliant 结果
TPdfXSaveOptions一致性、IccProfileData 中的 ICC 配置文件数据、通过 OutputCondition、OutputConditionIdentifier、RegistryName 和 OutputIntentInfo 指定的输出意图、Trapped 状态、元数据、标识符和默认值

RSA-PSS 参数策略

TPadesRsaPssParameters 提供 Valid、HashAlgorithmOid、MaskGenAlgorithmOid、MaskGenHashAlgorithmOid、SaltLength 和 TrailerField;TPadesSignatureAlgorithmInfo.SignaturePss 与 PublicKeyPss 分别报告 CMS 和 SPKI 限制

InspectPadesSignatureAlgorithm 要求 CMS PSS 参数,接受带 RFC 默认值的空 SEQUENCE,拒绝格式错误的 DER、重复或乱序显式字段、不支持的整数编码和超大参数块

EvaluatePadesSignatureAlgorithm 要求 CMS 摘要匹配 PSS 哈希;仅限 PSS 的密钥拒绝 PKCS #1 v1.5,受限密钥要求哈希、MGF 哈希及 trailer 匹配,且签名 salt 不小于密钥规定的最小值

不同的受支持 MGF1 哈希可以有效;未知算法为 Unsupported,弱 MGF 哈希为 Indeterminate,已被攻破的哈希为 Invalid

参数块上限为 16 KiB,salt/trailer 值为非负 32-bit 整数;该结构策略补充密码学后端,不证明 RSA 密钥强度或 EMSA-PSS 签名有效性

手动构造算法证据时,须填入 SignaturePss 和 SignatureParametersPresent,不能只提供 PSS OID

相关 API

TPdf.SaveAsPdfA、SaveAsPdfE、SaveAsPdfR、SaveAsPdfUa、SaveAsPdfVT、SaveAsPdfX 和 PAdES 方法为这些单元提供文档实例包装