即时 PDF 转换以供纳入

即时 PDF 转换以供纳入

不久前我问过如何使用 XeTeX 包含 Adob​​e Illustrator 文件 (ai)。但是,Illustrator 文件的 PDF 版本是 1.5,而我将 XeLateX 文档编译为 1.4 版本,因此如果不进行转换,则无法包含较新的 Illustrator 文件。

我现在发现 ps2pdf14 可以将 illustrator ai 文件作为输入并轻松输出与 pdf 1.4 兼容的版本。

我尝试过DeclareGraphicsRule基于即时将 gif 图像转换为 png但是,我似乎无法找到运行 ps2pdf14 的规则?

我尝试过这些:

\DeclareGraphicsRule{.ai}{pdf}{.pdf}{`ps2pdf #1}
\DeclareGraphicsRule{.ai}{pdf}{.ai.pdf}{`ps2pdf #1}
\DeclareGraphicsRule{.ai}{pdf}{.pdf}{`ps2pdf14 #1 `dirname #1`/`basename #1 .ai`-ai-converted-to.pdf}
\DeclareGraphicsRule{.ai}{pdf}{.pdf}{ps2pdf14 \SourceFile.\SourceExt \OutputFile}

如果有人想尝试一下,这里有一个来自最新版 Illustrator(CS5)的 .ai 文件:链接已删除

如果仅当转换后的 pdf 文件之后 illustrator 文档被修改或者转换后的 pdf 文件不存在时才进行转换,那将是理想的。

也许某种类型的 make 文件或脚本会是更好的解决方案。

答案1

我想你可以适应这个答案满足您的需要:

\documentclass[a4paper]{article}
\usepackage{graphicx}
\usepackage{epstopdf}
\epstopdfDeclareGraphicsRule{.ai}{pdf}{.pdf}{ps2pdf14 #1 \OutputFile}

\begin{document}
\includegraphics{example.ai}
\end{document}

example.ai仅当文件比转换后的文件更新example-ai-converted-to.pdf(或不存在)时,才会进行转换。

至少在转换的文件不存在时,需要pdflatex用命令行选项调用。-shell-escape

答案2

目前,我制作了一个简单的批处理脚本,可以完成我需要的工作,但我更喜欢乳胶解决方案!

for /r %%x in (*.ai) do ps2pdf14 "%%x" converted\%%~nx.pdf

相关内容