使用 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 的工作方式存在一些细微差别。如果您想获得预期的结果,则必须考虑到它们。

以下小节描述了 Aspose.Words 在转换为各种 PDF 格式标准时工作原理的细微差别及其解决方案的选项。

结构类型

Aspose.Words 中的 PDF 标准合规级别 存在要求
PDF/A-1a tick
PDF/A-2a tick
PDF/UA-1 tick

PDF 文档是一系列块,例如标题、段落、表格等。这些块形成了一个文档结构–强或弱。

强结构和弱结构对于 PDF/A 都有效。 Microsoft Word 文档在设计上具有弱结构,Aspose.Words 分别创建具有弱结构的 PDF,并根据源文档中段落的大纲级别生成标题。

对于结构较弱的 PDF/UA-1 文档,还要求标题编号按顺序排列且无间隙。

为了确保正确的输出,用户必须确保正确组织源文档内容并正确指定段落的大纲级别。否则,用户应验证并修复输出 PDF 文档的结构。

将内容标记为工件

Aspose.Words 中的 PDF 标准合规级别 存在要求
PDF/A-1a tick
PDF/A-2a tick
PDF/UA-1 tick

目前,Aspose.Words 将页眉和页脚、注释分隔符、重复的表头单元格和装饰图像标记为工件。请注意,此列表将来可能会更新。

如果文档包含应标记为工件的任何其他内容,或者任何工件内容是真实内容,则客户应在输出 PDF 中修复该问题。

自然语言规范

Aspose.Words 中的 PDF 标准合规级别 存在要求
PDF/A-1a tick
PDF/A-2a tick
PDF/UA-1 tick

文本语言在 Microsoft Word 文档中指定。 Aspose.Words 将指定的语言导出为输出 PDF,并将 Lang 属性附加到标记内容序列或 Span 标记 - 它由 ExportLanguageToSpanTag 属性控制。通常,用户通过 Microsoft Word 输入文本时不存在语言问题。但如果文本是自动生成的,则语言可能不准确。

图标题

Aspose.Words 中的 PDF 标准合规级别 存在要求
PDF/A-1a
PDF/A-2a
PDF/UA-1 tick

Microsoft Word 文档允许用户添加图形标题。

目前 Aspose.Words 无法导出带有 Caption 标签的标题,因此必须在输出 PDF 中标记它们。

替代描述

Aspose.Words 中的 PDF 标准合规级别 存在要求
PDF/A-1a tick
PDF/A-2a tick
PDF/UA-1 tick

Microsoft Word 文档允许用户向图像、形状和表格添加替代文本。 Aspose.Words 将此类替代文本导出到输出 PDF。

超链接的替代描述

Aspose.Words 中的 PDF 标准合规级别 存在要求
PDF/A-1a
PDF/A-2a
PDF/UA-1 tick

除了上一点之外,Microsoft Word 文档还允许用户向超链接添加替代文本。 Aspose.Words 将此类替代文本导出到输出 PDF。

不幸的是,并非每个应用程序都允许您设置备用描述。例如,Adobe Acrobat 目前无法为超链接设置此类描述。但在 Microsoft Word 中,您可以按如下方式执行此操作:

替代描述超链接 MW

有时会出现这样的问题:无法通过 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 tick

PDF/UA-1 文档中的表格必须有标题 - 列、行或两者。 PDF/A 仅需要标准表格标记,没有其他限制。请注意,Aspose.Words 自动生成标准表格标记。

替换文本

Aspose.Words 中的 PDF 标准合规级别 存在要求
PDF/A-1a tick
PDF/A-2a tick
PDF/UA-1

Microsoft Word文档不允许用户设置替换文本。因此,这需要在输出 PDF 中进行验证和修复:

Acrobat 替换文本

缩写词和首字母缩略词扩展

Aspose.Words 中的 PDF 标准合规级别 存在要求
PDF/A-1a tick
PDF/A-2a tick
PDF/UA-1

Microsoft Word文档不允许用户设置缩写词和首字母缩略词扩展名。因此,这需要在输出 PDF 中进行验证和修复:

AcrobatSplit添加扩展文本

文件名

Aspose.Words 中的 PDF 标准合规级别 存在要求
PDF/A-1a
PDF/A-2a
PDF/A-4
PDF/UA-1 tick
PDF/UA-1 格式的文档应有标题。

字体要求

Aspose.Words 中的 PDF 标准合规级别 存在要求
PDF/A-1a tick
PDF/A-1b tick
PDF/A-2a tick
PDF/A-2u tick
PDF/A-4 tick
PDF/UA-1 tick

使用 Aspose.Words 转换为 PDF/A-1、PDF/A-2、PDF/A-4 或 PDF/UA-1 格式时,使用字体还存在许多细微差别。如果您想避免输出文档可能出现问题,则必须考虑它们。

以下部分描述了其解决方案的细微差别和选项。

字体法律要求

Aspose.Words 中的 PDF 标准合规级别 存在要求
PDF/A-1a tick
PDF/A-1b tick
PDF/A-2a tick
PDF/A-2u tick
PDF/A-4 tick
PDF/UA-1 tick

Aspose.Words 不验证所使用字体的法律限制–这取决于用户。换句话说,用户不应为使用 Aspose.Words 的 PDF 转换提供不合适的字体。

.notdef Glyph

Aspose.Words 中的 PDF 标准合规级别 存在要求
PDF/A-1a
PDF/A-1b
PDF/A-2a tick
PDF/A-2u tick
PDF/A-4 tick
PDF/UA-1 tick

禁止使用 .notdef glyph。如果文档包含所选字体中不存在且也无法通过字体后备机制解析的字符,则会显示 .notdef glyph。

私人使用区 (PUA)

Aspose.Words 中的 PDF 标准合规级别 存在要求
PDF/A-1a
PDF/A-1b
PDF/A-2a tick
PDF/A-2u tick
PDF/A-4 tick
PDF/UA-1

专用区域 (PUA) 字符主要出现在 Windows 符号字体中,例如"Symbol"、“Wingdings”、“Webdings"等。 Microsoft Word 格式不提供存储字符实际文本的选项。

“Segoe UI Symbol"是一种 Windows Unicode 字体,可用作符号字体的替代品。