PDF格式分析(十)PDF / UA-1文件格式要求

PDF / UA-1基于ISO 32000-1(PDF 1.7)。它不会为PDF文件格式添加任何新功能,但会使某些方面成为PDF 1.7中的可选项。所有PDF / UA-1文件都必须满足以下条件:

  • 必须标记该文档。虽然PDF 1.7包含有关嵌套和不同类型结构元素关系的一些要求,但PDF / UA-1扩展并阐明了这些规则(详见下文)。
  • 必须嵌入文档中使用的所有字体(不可见文本的字体除外,例如OCR结果)。
  • 不允许使用某些图层选项。
  • 不允许外部内容(由PDF / X-5强制引用XObjects)。
  • 必须在文档的元数据中指定文档标题。

语义要求
在为PDF / UA-1创建结构层次结构时,必须遵循以下语义方面:

  • 标记必须使用适合文档结构的结构元素:如果它是标题,则必须将其标记为标题。如果它是一个表,则必须将其标记为表。如果是列表,则必须将其标记为列表。
  • 与文档含义无关的内容不得包含在文档层次结构中,而必须标记为Artifact。典型示例是运行页眉和页脚,页码和背景图像。
    结构元素必须按逻辑阅读顺序排列。
  • 如果由于内容的颜色,格式或布局而无法以其他方式访问目标信息,则必须对内容进行适当标记。
  • 如果图形中包含的文本不包含自然语言的文本(例如字体或脚本示例),则它需要Alt属性并附带说明。
  • 图像必须提供替代文字; 图片标题必须标有标题标记。
  • 链接必须附带适当的链接注释。
  • 只能为逻辑上属于一起的图形元素组创建单个图形标记。
  • 脚注,尾注,注释标签和文档中的位置引用必须酌情标记为注释或参考。

由于上面概述的语义要求,很难或不可能自动将现有的无标记PDF文档转换为符合PDF / UA。同样,将OCR技术应用于扫描文档不可能在没有人为干预的情况下完全符合PDF / UA。例如,无法自动导出图像的替代文本。

特定标签的要求
PDF 1.7中定义的所有标准标签均可用于PDF / UA-1。如果使用其他标记,则必须在文档的Rolemap中提供这些自定义标记到标准标记的映射。对于某些标准元素类型,必须遵守各种规则:

  • 用于图像和图形的图元素不是工件,需要Alt或ActualText属性。
  • 必须为逻辑表创建表元素,但不能以布局目的而创建的表创建表元素。表格相关的标签必须正确嵌套,例如表格标签包含表格行TR,表格行TR又包含表格标题单元格TH或表格数据单元格TD。所述范围属性是必需为TH(表头)元件。
  • 标题标记必须正确嵌套。如果使用带编号的标题标签(H1,H2,…),则必须正确嵌套(即不得跳过级别)。如果使用未编号的标题标记(所谓的强结构化文档),则必须使用H标记,但在结构树的每个节点中不能超过一次。标题元素不得有任何后代。
  • 列表元素类型L需要ListNumbering属性,该属性指定列表中使用的编号系统。

特定内容类型的要求
对于各种类型的PDF内容,必须满足以下要求:

  • 必须使用整个文档的Lang文档信息条目或单个结构元素的Lang属性声明文本的自然语言。必须将不可见文本标记为Artifact,除非它具有渲染的等效文本(例如扫描图像)。
  • 矢量图形和光栅图像必须标记为图形或工件。
  • 注释和表单字段必须包含在结构树中,并且需要某些标志以确保可访问性。

Unicode要求
PDF / UA要求对文档中的所有文本使用适当的Unicode语义。这一要求的根源在于PDF支持各种字体和编码技术,并非所有技术都支持Unicode。例如,PDF支持在20世纪80年代引入的PostScript Type 1字体,而Unicode联盟在1991年开始工作。PDF / UA要求必须在内部不包含它的字体中提供补充的Unicode映射信息。但并非所有Unicode值都是可接受的:不允许私有使用区域(PUA)中的值,因为它们不带有任何通用解释(语义)。

符号字体是PDF / UA要求所在的重要区域,例如包含徽标或象形图的字体。由于标准化的Unicode值不适用于自定义符号字形,因此必须在ActualText属性中提供合适的Unicode语义。所述的ActualText可以被分配给一个单独的字形或多个字形的序列,并且可以包含任意的Unicode字符串。

其他建议
虽然PDF / UA-1中没有严格要求,但建议使用以下项目:

  • 建议使用书签来改进导航。它们应该反映正确的阅读顺序和内容的嵌套。
  • 表应包含标题。
  • 附件应附有说明,并且应该可以自行获取。
  • 如果存在,页面标签(例如罗马页码)应该是合适的。

PDF / UA和PDF / A
归档标准PDF / A-1a,PDF / A-2a和PDF / A-3a要求使用标记PDF。虽然PDF / A-1a / 2a / 3a和PDF / UA-1之间没有直接关系,但文件可以同时符合这两个标准。实际上,如果您要创建符合A级的PDF / A,我们建议您遵守PDF / UA-1要求,以便提高可访问性。

我们建议避免使用PDF / A-1a并使用较新的PDF / A-2a或PDF / A-3a标准,因为PDF / UA-1与PDF / A-1a之间存在细微冲突:PDF / UA- 1需要带有注释的页面的Tabs条目。此键指定页面注释的Tab键顺序,并且必须指定»结构顺序«。但是,此密钥在PDF 1.4中不可用,因此不能用于组合的PDF / A-1a和PDF / UA-1文档。

PDF/UA标准判断如下:

pdf_version:PDF版本号
format_name:PDF/A版本
xmp_file:XMP
gts_flag:OutputIntent字典中的子类型“/S”
gray_scale:灰度
cmyk_colors:CMYK
spot_colors:spot
rgb_colors:rgb
calibrated_rgb_colors:calrgb
cielab_colors:lab
internal_icc_profiles:内嵌icc profile
inject_metadata:metadata
jbig2_compression:jbig2压缩
include_intents:intents对象
optional_content:OptionalContent
transparency:透明度
jpeg2000_compression:jpeg2000压缩
object_compression:object stream对象压缩
open_prepress_interface:OPI
nchannel_colorspace:NChannel颜色空间

注:“true”表示支持的内容,没有列出的内容,则表示不符合相关标准。

pdf/ua-1

    ["pdf/ua-1"] = { -- based on PDF/A-3a, but no 'gts_flag'
        pdf_version             = 1.7,
        format_name             = "pdf/ua-1",
        xmp_file                = "lpdf-pua.xml",
        gray_scale              = true,
        cmyk_colors             = true,
        rgb_colors              = true,
        spot_colors             = true,
        calibrated_rgb_colors   = true, 
        cielab_colors           = true, 
        include_intents         = true,
        forms                   = true,
        tagging                 = true,
        internal_icc_profiles   = true,
        transparency            = true,
        jbig2_compression       = true,
        jpeg2000_compression    = true,
        object_compression      = true,
        inject_metadata         = function()
            injectxmpinfo("xml://rdf:RDF","<rdf:Description rdf:about='' xmlns:pdfaid='http://www.aiim.org/pdfa/ns/id/'><pdfaid:part>3</pdfaid:part><pdfaid:conformance>A</pdfaid:conformance></rdf:Description>",false)
            injectxmpinfo("xml://rdf:RDF","<rdf:Description rdf:about='' xmlns:pdfuaid='http://www.aiim.org/pdfua/ns/id/'><pdfuaid:part>1</pdfuaid:part></rdf:Description>",false)
        end
    },

猜你喜欢

转载自blog.csdn.net/steve_cui/article/details/82149126