为什么使用 pdflatex 编译的简单 PDF 文件包含如此多的 PDF 错误?
我能看到的最简单的例子是“Hello World!”,一旦编译完成,
\documentclass{report}
\begin{document}
Hello World!
\end{document}
生成一个文件“hello.pdf”并输入到PDFbox:
$ java -jar ../preflight-app-1.8.10.jar hello.pdf
The file hello.pdf is not valid, error(s) :
1.2.1 : Body Syntax error, Single space expected
1.2.1 : Body Syntax error, Single space expected
1.2.1 : Body Syntax error, EOL expected before the 'endobj' keyword
1.2.1 : Body Syntax error, Single space expected
1.2.1 : Body Syntax error, Single space expected
1.2.1 : Body Syntax error, Single space expected
7.1 : Error on MetaData, Missing Metadata Key in catalog
LuaLaTeX 也存在同样的问题,但总体来说错误较少。
答案1
答案2
这PDF/A标准旨在优化档案。这意味着必须嵌入字体(自动完成),它需要元数据,以便您在档案中找到文档。最后但并非最不重要的是,它需要一个 OutputIntent 来指定颜色最初的样子。还有更多要求,但这些是最重要的。
尽管 PDFBox 1.8 没有抱怨缺少 OutputIntent,但它的较新版本会抱怨。
看到这个最小示例 PDF/A 文档关于如何直接从 pdfTeX 生成 PDF/A。这验证了:
java -jar preflight-app-2.0.19.jar hyperxmp.pdf
The file hyperxmp.pdf is a valid PDF/A-1b file
(pdf)TeX 无法猜测您打算使用哪种颜色空间,也无法猜测特定文档的有用元数据是什么。这就是为什么您必须指定这些值。请记住,验证器只是检查在场某些值。例如,如果你将作者设置为“我”或空的即使您的文档通过了自动验证,人们也很可能无法在图书馆中找到您的文档。