不久前我问过如何使用 XeTeX 包含 Adobe 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