首先,这个 Hybrid PDF 似乎没有在一个独立的标准中指定,即没有相应的 ISO/ETSI/ANSI/... 标准它。
话虽如此,这显然是 LibreOffice PDF 导出的一个突出特点:
(来自LibreOffice Writer FAQ on hybrid PDFs)
检查这样一个文件(例如this one)会发现PDF预告片中有额外的条目:
...
trailer
<</Size 128/Root 126 0 R
/Info 127 0 R
/ID [ <518EBB4C2FE2F6B638478335A7ED9CA4>
<518EBB4C2FE2F6B638478335A7ED9CA4> ]
/DocChecksum /7B00A6EE0349EB2EA1DFB5ECC5899A7C
/AdditionalStreams [/application#2Fvnd#2Eoasis#2Eopendocument#2Etext 66 0 R
]
>>
startxref
291605
%%EOF
对象 66 中引用的附加流确实包含源 OpenOffice 文档。
显然,支持这些 混合 PDF 文件的应用程序会检查该 AdditionalStreams 预告片条目的值,以及它们是否知道处理给定的文档类型(/application#2Fvnd#2Eoasis#2Eopendocument#2Etext 这里对应于application/vnd.oasis.opendocument.text),它们提供了一种提取嵌入文档并打开它进行编辑的方法。
注意:除非我忽略了一些 ISO 规范,否则那些额外的条目严格来说是禁止被 PDF 规范 ISO 32000 禁止的:在预告片中可能只有带有键的条目在 ISO 规范中为预告片定义或任何二级名称。 AdditionalStreams 和 DocChecksum 都不是 ISO 指定的或二等的。因此,严格来说,那些混合 PDF 是无效的 PDF。