解决方案
在 MWE 中可以找到生成符合 PDF/X 标准的文档的完整解决方案,并回答以下问题:禁用所有文档交互性(以符合 PDF/X 规范)
改编的 MWE 和编译方法取自 Leonid 对这个问题的回答。
请注意,解决方案需要使用 TeXLive 2015(或更高版本)进行编译。
原始问题
我正在尝试使用 XeLaTeX 编译我的源代码以生成符合 PDF/X-1a:2001 的文档。使用pdfx
软件包(同时使用最新的 TeX 发行版)可以获取 PDF/X-1a:2001,但前提是文档是使用 编译的pdflatex
。
由于我在文档中使用了 OTF 和 TTF 字体,因此我必须使用 XeLaTeX 来编译它。这是 MWE:
\documentclass{book}
\usepackage[x-1a1]{pdfx}
\begin{document}
Some text
\end{document}
当我尝试使用 MiKTeX 2.9 编译该文档时xelatex
出现以下错误并且编译停止:
! Undefined control sequence.
l.111 \pdfminorversion
=4 % assumed for PDF/A ; options may change this for...
?
有没有办法用 XeLaTeX 编译 PDF/X-1a:2001,无论是使用pdfx
还是使用不同的包?
附言:我使用了MiKTeX 2.9
,因为我不想更新TeX Live 2013/Debian
我通常使用的发行版。使用 MiKTeX,我可以获得最新版本的pdfx
软件包。
编辑:由于 Leonid 的回答并不明显,而且只在评论中提到,请注意你需要 TeXLive 2015 才能让 Leonid 的答案完全发挥作用。TeXLive 2013(由系统的包管理器安装)或 MiKTeX 2.9 不起作用(截至 2016 年 3 月这是事实;当您读到本文时,情况可能会发生变化)。
我也尝试编译这个 MWE 来LuaLaTeX
查看它是否有效。没有。我收到以下错误:
! Undefined control sequence.
\pdfx@findUUID ... \pdfx@tmpstring {\pdfmdfivesum
{#1}} \expandafter \pdfx@e...
l.360 \pdfx@findUUID{\jobname.pdf}
?
如果 LuaLaTeX 的版本很重要:lualatex --version
输出
This is LuaTeX, Version beta-0.76.0-2013062821 (MiKTeX 2.9 64-bit) (rev 4627)
答案1
您需要使用\special
命令将一些特定的元数据放入生成的 pdf 中,使用hyperref
打包然后使用 xelatex 选项进行编译-output-driver="xdvipdfmx -V 3"
。看例子:
% !TeX program = xelatex
%%%%Needs to be compiled with commandline: "xelatex.exe -output-driver="xdvipdfmx -V 3" %.tex" % as PDF 1.3 required by PDF/X
\documentclass{book}
%%%%%%%%% PDF-X stuff, IF USING xelatex %%%%%%%%%
%(mm size * 72)/25.4 = bp size
\usepackage{atbegshi}
\AtBeginShipout{% %A hook that is executed for every page (after first one)
\special{pdf: put @thispage
<<
/TrimBox [0 0 210.990 162.086] %put here other numbers = size of page in bp
>>
}
}
\special{pdf: put @thispage
<<
/TrimBox [0 0 210.990 162.086] %put here other numbers = size of page in bp
>>
}
\special{pdf:docinfo
<<
/GTS_PDFXVersion (PDF/X-1:2001)
/GTS_PDFXConformance (PDF/X-1a:2001)
>>
}
\special{pdf:put @catalog
<<
/PageMode /UseNone
/OutputIntents [
<<
/Info (none)
/Type /OutputIntent
/S /GTS_PDFX
/OutputConditionIdentifier (Custom)
/RegistryName (http://www.color.org/)
>>
]
>>
}%
\usepackage{datetime} % for \pdfdate command
\usepackage{hyperref} % for \hypersetup
\hypersetup{%
pdftitle={DocTitle},% PDF/X document should have a title
pdfinfo={% Setting some more PDF/X stuff for xelatex
ModDate={D:\pdfdate},% PDF/X document should have a modification date
Trapped={False},% PDF/X document should have Trapped tag set
},
}
\begin{document}
Some text
\end{document}
另一个示例,可在lualatex
和pdflatex
中编译xelatex
:http://gist.github.com/LSinev/98c0a40e94f4507922a8