使用 PDF/A 或 PDF/UA
PDF/A 和 PDF/UA 格式提出了一些与文档内容相关的要求,而这些要求在从 Word 格式的文档自动转换为 PDF 的过程中无法满足。应在转换前的 Word 文档中或转换后的 PDF 文档中验证和更正这些要求,以便生成完全符合 PDF/A 和 PDF/UA 标准的文档。
基本要求是 PDF/A 和 PDF/UA 文档的结构或字体,我们将在以下部分中考虑。
文件结构要求
当前要求适用于 PDF/A-1a、PDF/A-2a、PDF/A-4 和 PDF/UA-1 格式。
在转换为各种 PDF 格式标准时,Aspose.Words 的工作方式存在一些细微差别。如果您想获得预期的结果,则必须考虑到它们。
该规范告诉我们以下内容(展开以查看详细信息):
不建议作者在没有适当验证的情况下使用自动化流程生成结构或语义信息。
ISO 19005-2, 6.7.1
以下小节描述了 Aspose.Words 在转换为各种 PDF 格式标准时工作原理的细微差别及其解决方案的选项。
结构类型
Aspose.Words 中的 PDF 标准合规级别 | 存在要求 |
---|---|
PDF/A-1a |
|
PDF/A-2a |
|
PDF/UA-1 |
|
PDF 文档是一系列块,例如标题、段落、表格等。这些块形成了一个文档结构–强或弱。
强结构和弱结构对于 PDF/A 都有效。 Microsoft Word 文档在设计上具有弱结构,Aspose.Words 分别创建具有弱结构的 PDF,并根据源文档中段落的大纲级别生成标题。
对于结构较弱的 PDF/UA-1 文档,还要求标题编号按顺序排列且无间隙。
该规范告诉我们以下内容(展开以查看详细信息):
块级结构可以遵循两个主要范例之一:
ISO-32000-1、14.8.4.3.5
对于 PDF/UA-1 文档,规范包含与标题级别相关的附加内容(展开以查看详细信息):
如果文档语义需要标题的降序序列,则此类序列应按严格的数字顺序进行,并且不应跳过中间的标题级别。 H1 H2 H3 是允许的,而 H1 H3 是不允许的。
ISO-14289-1、7.4.2
为了确保正确的输出,用户必须确保正确组织源文档内容并正确指定段落的大纲级别。否则,用户应验证并修复输出 PDF 文档的结构。
在此块中,您可以看到示例:如何在 Microsoft Word 中设置轮廓级别或检查和修复输出 PDF 文档的结构(展开以查看详细信息)。
在 Microsoft Word 中,默认的"标题 X"样式可用于设置大纲级别:

此外,可以在"段落"窗口中检查或更改大纲级别:

在 Acrobat 中,可以在"标签"窗格中检查或更改文档结构:

将内容标记为工件
Aspose.Words 中的 PDF 标准合规级别 | 存在要求 |
---|---|
PDF/A-1a |
|
PDF/A-2a |
|
PDF/UA-1 |
|
目前,Aspose.Words 将页眉和页脚、注释分隔符、重复的表头单元格和装饰图像标记为工件。请注意,此列表将来可能会更新。
该规范告诉我们以下内容(展开以查看详细信息):
文档中的图形对象可以分为两类:
ISO-32000-1、14.8.2.2.1
如果文档包含应标记为工件的任何其他内容,或者任何工件内容是真实内容,则客户应在输出 PDF 中修复该问题。
在此块中,您可以看到示例:如何在 Microsoft Word 中将形状标记为装饰性或在输出 PDF 文档中将形状标记为工件(展开以查看详细信息)。
例如,形状可以在 Microsoft Word 中标记为装饰性,因此它们将作为工件导出到 PDF:

您可以在输出 PDF 中将形状标记为工件:

此外,您还可以将标题中的文本从工件切换为输出 PDF 中的真实内容:

自然语言规范
Aspose.Words 中的 PDF 标准合规级别 | 存在要求 |
---|---|
PDF/A-1a |
|
PDF/A-2a |
|
PDF/UA-1 |
|
文本语言在 Microsoft Word 文档中指定。 Aspose.Words 将指定的语言导出为输出 PDF,并将 Lang 属性附加到标记内容序列或 Span 标记 - 它由 ExportLanguageToSpanTag 属性控制。通常,用户通过 Microsoft Word 输入文本时不存在语言问题。但如果文本是自动生成的,则语言可能不准确。
该规范告诉我们以下内容(展开以查看详细信息):
文件中所有文本的默认自然语言应由文档目录词典中的 Lang 条目指定。
文件中与默认语言不同的所有文本内容应通过使用附加到标记内容序列的 `Lang` 属性或通过结构元素字典中的 Lang 条目来指示...
ISO-19005-2, 6.7.4
此外,对于 PDF/UA-1,规范告诉我们以下内容(展开以查看详细信息):
应声明自然语言……应声明自然语言的变化。
ISO-14289-1, 7.2
在此块中,您可以看到示例:如何确保正确指定语言(展开以查看详细信息)。
用户应确保在源 Word 文档中正确指定语言:

或者输出 PDF 文档:

图标题
Aspose.Words 中的 PDF 标准合规级别 | 存在要求 |
---|---|
PDF/A-1a | |
PDF/A-2a | |
PDF/UA-1 |
|
Microsoft Word 文档允许用户添加图形标题。
该规范告诉我们以下内容(展开以查看详细信息):
附图附带的标题应标有标题标签。
ISO-14289-1, 7.3
目前 Aspose.Words 无法导出带有 Caption 标签的标题,因此必须在输出 PDF 中标记它们。
在此块中,您可以看到示例:如何插入标题(展开以查看详细信息)。
在 Microsoft Word 中,可以通过上下文菜单插入标题:

在 Acrobat 中,可以通过 `Object` 属性对话框添加或更改标题:

替代描述
Aspose.Words 中的 PDF 标准合规级别 | 存在要求 |
---|---|
PDF/A-1a |
|
PDF/A-2a |
|
PDF/UA-1 |
|
Microsoft Word 文档允许用户向图像、形状和表格添加替代文本。 Aspose.Words 将此类替代文本导出到输出 PDF。
该规范告诉我们以下内容(展开以查看详细信息):
所有内容不具有自然预定文本类似物的结构元素(例如图像、公式等)应使用结构元素字典中的 Alt 条目提供替代文本描述...
注:替代描述提供文本描述,有助于正确解释其他不透明的非文本内容。
ISO-19005-2, 6.7.5
在此块中,您可以看到示例:如何确保所有元素都有替代文本(展开以查看详细信息)。
用户应确保所有元素在源 Word 文档中都有替代文本:


或者输出 PDF 文档:


超链接的替代描述
Aspose.Words 中的 PDF 标准合规级别 | 存在要求 |
---|---|
PDF/A-1a | |
PDF/A-2a | |
PDF/UA-1 |
|
除了上一点之外,Microsoft Word 文档还允许用户向超链接添加替代文本。 Aspose.Words 将此类替代文本导出到输出 PDF。
不幸的是,并非每个应用程序都允许您设置备用描述。例如,Adobe Acrobat 目前无法为超链接设置此类描述。但在 Microsoft Word 中,您可以按如下方式执行此操作:

有时会出现这样的问题:无法通过 Microsoft Word GUI 设置目录 (TOC) 中自动生成的超链接的替代文本。 Aspose.Words 可以更新这些字段并自行生成链接。
按照代码示例使用 Aspose.Words Document Object Model (DOM) 更新 TOC
字段:
Document doc = new Document(fileName);
var tocHyperLinks = doc.Range.Fields
.Where(f => f.Type == FieldType.FieldHyperlink)
.Cast<FieldHyperlink>()
.Where(f => f.HRef.StartsWith("#_Toc"));
foreach (FieldHyperlink link in tocHyperLinks)
link.ScreenTip = link.DisplayResult;
PdfSaveOptions opt = new PdfSaveOptions()
{
Compliance = PdfCompliance.PdfUa1,
DisplayDocTitle = true,
ExportDocumentStructure = true,
};
opt.OutlineOptions.HeadingsOutlineLevels = 3;
opt.OutlineOptions.CreateMissingOutlineLevels = true;
var outFile = Path.ChangeExtension(fileName, "_aw.pdf");
doc.Save(outFile, opt);
表格标题
Aspose.Words 中的 PDF 标准合规级别 | 存在要求 |
---|---|
PDF/A-1a | |
PDF/A-2a | |
PDF/UA-1 |
|
PDF/UA-1 文档中的表格必须有标题 - 列、行或两者。 PDF/A 仅需要标准表格标记,没有其他限制。请注意,Aspose.Words 自动生成标准表格标记。
该规范告诉我们以下内容(展开以查看详细信息):
表格应包含标题...表格可以包含列标题、行标题或两者都包含。
ISO-14289-1, 7.5
在此块中,您可以看到示例:如何设置表头(展开以查看详细信息)。
表头可以设置为源 Microsoft Word 文档:

或者输出 PDF:



替换文本
Aspose.Words 中的 PDF 标准合规级别 | 存在要求 |
---|---|
PDF/A-1a |
|
PDF/A-2a |
|
PDF/UA-1 |
该规范告诉我们以下内容(展开以查看详细信息):
该规范告诉我们以下内容:
以非标准方式表示的所有文本结构元素(例如自定义字符或内联图形)应使用结构元素字典中的 `ActualText` 条目提供替换文本...
ISO-19005-2, 6.7.7
Microsoft Word文档不允许用户设置替换文本。因此,这需要在输出 PDF 中进行验证和修复:

缩写词和首字母缩略词扩展
Aspose.Words 中的 PDF 标准合规级别 | 存在要求 |
---|---|
PDF/A-1a |
|
PDF/A-2a |
|
PDF/UA-1 |
该规范告诉我们以下内容(展开以查看详细信息):
文本内容中缩写词和首字母缩略词的所有实例都应放置在带有 Span 标记的标记内容序列中,该标记的 E 属性提供缩写词或首字母缩略词的文本扩展...
ISO-19005-2, 6.7.8
Microsoft Word文档不允许用户设置缩写词和首字母缩略词扩展名。因此,这需要在输出 PDF 中进行验证和修复:

文件名
Aspose.Words 中的 PDF 标准合规级别 | 存在要求 |
---|---|
PDF/A-1a | |
PDF/A-2a | |
PDF/A-4 | |
PDF/UA-1 |
PDF/UA-1 格式的文档应有标题。 |
该规范告诉我们以下内容(展开以查看详细信息):
该规范告诉我们以下内容:
文档目录字典中的元数据流应包含 dc:title 条目,其中 dc 是都柏林核心元数据模式的推荐前缀...
ISO-14289-1, 7.1
在此块中,您可以看到示例:如何设置文档标题(展开以查看详细信息)。
文档标题可以设置为源 Microsoft Word 文档:

或者输出 PDF:

字体要求
Aspose.Words 中的 PDF 标准合规级别 | 存在要求 |
---|---|
PDF/A-1a |
|
PDF/A-1b |
|
PDF/A-2a |
|
PDF/A-2u |
|
PDF/A-4 |
|
PDF/UA-1 |
|
使用 Aspose.Words 转换为 PDF/A-1、PDF/A-2、PDF/A-4 或 PDF/UA-1 格式时,使用字体还存在许多细微差别。如果您想避免输出文档可能出现问题,则必须考虑它们。
以下部分描述了其解决方案的细微差别和选项。
字体法律要求
Aspose.Words 中的 PDF 标准合规级别 | 存在要求 |
---|---|
PDF/A-1a |
|
PDF/A-1b |
|
PDF/A-2a |
|
PDF/A-2u |
|
PDF/A-4 |
|
PDF/UA-1 |
|
Aspose.Words 不验证所使用字体的法律限制–这取决于用户。换句话说,用户不应为使用 Aspose.Words 的 PDF 转换提供不合适的字体。
该规范告诉我们以下内容(展开以查看详细信息):
只能使用可合法嵌入文件以进行无限通用渲染的字体程序。
ISO-19005-2、6.2.11.4.1; ISO-14289-1, 7.21.4.1(两个规范中的报价完全相同)
.notdef Glyph
Aspose.Words 中的 PDF 标准合规级别 | 存在要求 |
---|---|
PDF/A-1a | |
PDF/A-1b | |
PDF/A-2a |
|
PDF/A-2u |
|
PDF/A-4 |
|
PDF/UA-1 |
|
禁止使用 .notdef
glyph。如果文档包含所选字体中不存在且也无法通过字体后备机制解析的字符,则会显示 .notdef
glyph。
该规范告诉我们以下内容(展开以查看详细信息):
合格文档不得包含任何内容流中显示运算符的任何文本对 .notdef glyph 的引用,无论文本呈现模式如何。
ISO-19005-2、6.2.11.8; ISO-14289-1, 7.21.8(两个规范中的报价完全相同)
在此块中,您可以看到示例:如何删除或替换这些字符(展开以查看详细信息)。
用户应删除或替换源 Word 文档中的这些字符:

或者使用"编辑 PDF"工具输出 PDF 文档:

私人使用区 (PUA)
Aspose.Words 中的 PDF 标准合规级别 | 存在要求 |
---|---|
PDF/A-1a | |
PDF/A-1b | |
PDF/A-2a |
|
PDF/A-2u |
|
PDF/A-4 |
|
PDF/UA-1 |
专用区域 (PUA) 字符主要出现在 Windows 符号字体中,例如"Symbol"、“Wingdings”、“Webdings"等。 Microsoft Word 格式不提供存储字符实际文本的选项。
该规范告诉我们以下内容(展开以查看详细信息):
仅对于 A 级一致性,对于映射到 Unicode 专用区域 (PUA) 中的一个或多个代码的任何字符...,应为该字符或包含此类字符的字符序列提供 ActualText 条目...角色是一个部分。
ISO-19005-2、6.2.11.7.3
“Segoe UI Symbol"是一种 Windows Unicode 字体,可用作符号字体的替代品。
在此块中,您可以看到示例:用户应该如何解决符号字体的问题(展开以查看详细信息)。
将源 Word 文档中的符号字体替换为 Unicode 字体:

或者向输出 PDF 文档中的有问题的字符添加 ActualText 条目:
