这些单元公开流级注入器、验证器、签名操作和支撑记录,供相应的 TPdf 便捷方法使用
当工作流已经持有源流和目标流,或需要独立于 TPdf 实例的验证选项与结果细节时,请使用它们
FPdfPdfCommon| 函数 | 用途 |
|---|---|
AnsiCountDictKeyTokens | 统计原始 PDF 字典顶层的单个已解码名称键,同时跳过嵌套值、字符串和注释 |
TPdfParserResourceBudget | 定义进程级的递归、令牌、对象、解码字节、扩展比、分配和截止时间限制;Default 返回库默认值 |
ConfigurePdfParserResourceBudget | 验证并以原子方式替换后续自定义解析器操作使用的进程策略 |
GetPdfParserResourceBudget | 返回当前进程策略的线程安全值快照 |
ResetPdfParserResourceBudget | 恢复默认进程策略 |
PdfParserStartTick, PdfParserDeadlineReached | 为自定义解析器实现提供回绕安全的截止时间检查点 |
FPdfAssocFilesprocedure InjectAssociateFiles(Source: TStream; Dest: TStream; const Options: TAssocFilesOptions);
| 公开类型 | 用途 |
|---|---|
TPdfAFRelationship | ISO 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 | 持久化或恢复完成远程签名所需的请求元数据 |
| 功能范围 | 类型 |
|---|---|
| 级别与验证 | 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 记录末尾,记录随之变大。凡是交换该记录或包含它的记录的应用和包,请针对更新后的单元重新编译;先前编译的二进制与新的记录布局不兼容
FPdfPdfaprocedure 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, TPdfAMetadataFields | ISO 19005-1 表 1 的八个 Info 到 XMP 映射(pamfTitle, pamfAuthor, pamfSubject, pamfKeywords, pamfCreator, pamfProducer, pamfCreationDate, pamfModDate)及其集合表示 |
TPdfAMetadataValues | Unicode 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 降级语义
FPdfPdfeprocedure InjectPdfEMarkers(Source: TStream; Dest: TStream; const Options: TPdfESaveOptions);
function ValidatePdfECompliance(Source: TStream): TPdfEValidationResult;
| 公开类型 | 用途 |
|---|---|
TPdfEConformance | 检测到或请求的 PDF/E 一致性 |
TPdfEValidationIssue, TPdfEValidationIssues | PDF/E 结构与内容发现,包括顶层 AcroForm /XFA 和间接 /NeedAppearances true;普通 AcroForm 字段和内嵌工程资产仍然允许 |
TPdfEValidationResult | 一致性、Issues 集合和 IsCompliant 结果 |
TPdfESaveOptions | PDF/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 开关
FPdfPdfvtprocedure InjectPdfVTMarkers(Source: TStream; Dest: TStream; const Options: TPdfVTSaveOptions);
function ValidatePdfVTCompliance(Source: TStream): TPdfVTValidationResult;
function ReadPdfVTDPartEvidence(Source: TStream): TPdfVTDPartEvidence;
| 公开类型 | 用途 |
|---|---|
TPdfVTConformance, TPdfVTTrappedState | PDF/VT 一致性和继承的 PDF/X trapped 状态选择,取 ptvUnspecified, ptvTrue, and ptvFalse,写入时 ptvUnspecified 规范化为 ptvFalse |
TPdfVTValidationIssue, TPdfVTValidationIssues, TPdfVTValidationResult | 验证发现、Issues 集合、一致性和 IsCompliant 结果 |
TPdfDpmEntry, TPdfDpmEntries, TDpmTarget | Document Part Metadata 条目,含 Name、Value 和 IsNestedDict,放置在 dptRoot 或 dptLeaf 目标 |
TPdfVTDPartEvidence | 有界的文档部分层级与印刷条件证据,含 PageCount、RecordLevel 和 RecipientRecordCount |
TPdfVTSaveOptions | PDF/X 基础、IccProfileData 中的 ICC 配置文件数据、通过 OutputCondition、OutputConditionIdentifier、RegistryName 和 OutputIntentInfo 指定的输出意图、Trapped 状态、元数据、标识符、DPart、通过 DpmTarget 放置的 DpmEntries 形式的 DPM,以及默认设置 |
FPdfPdfxprocedure InjectPdfXMarkers(Source: TStream; Dest: TStream; const Options: TPdfXSaveOptions);
function ValidatePdfXCompliance(Source: TStream): TPdfXValidationResult;
| 公开类型 | 用途 |
|---|---|
TPdfXConformance, TPdfXTrappedState | PDF/X 变体和 Info 字典 trapped 状态选择,取 ptUnspecified, ptTrue, ptFalse, and ptUnknown,ptUnspecified 省略该条目 |
TPdfXValidationIssue, TPdfXValidationIssues, TPdfXValidationResult | 验证发现、Issues 集合、一致性和 IsCompliant 结果 |
TPdfXSaveOptions | 一致性、IccProfileData 中的 ICC 配置文件数据、通过 OutputCondition、OutputConditionIdentifier、RegistryName 和 OutputIntentInfo 指定的输出意图、Trapped 状态、元数据、标识符和默认值 |
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
TPdf.SaveAsPdfA、SaveAsPdfE、SaveAsPdfR、SaveAsPdfUa、SaveAsPdfVT、SaveAsPdfX 和 PAdES 方法为这些单元提供文档实例包装