使用 pdfpages 自动插入纵向和横向的 pdf 文档

使用 pdfpages 自动插入纵向和横向的 pdf 文档

有一个问题困扰了我好久。我想自动将几个 pdf 作为附件插入到文档中。用户将一堆 pdf 复制到一个文件夹中,然后找到一个 .bat 文件,该文件会自动从所有文件创建 attachments.tex 文档。这个过程几乎是自动化的,.bat 还会为每个 pdf 创建一个 \section{} 元素,检查与 Latex 不兼容的符号并将其删除,例如 $、& 或空格等。

因为它已经自行完成所有工作了,所以我不想用 inlcudepdf 命令的参数来打扰用户。因此,横向文档应该自动包含在横向纸张上。

我可以通过使用命令来实现

\includepdf[fitpaper]{attachment.pdf}

不幸的是,图纸通常都很大(A3、A2 纸)。所以我想把它们缩小到 A4。使用命令

\includepdf[templatesize={211mm}{298mm},rotateoversize]{attachment.pdf}

我可以将它们全部缩小到 A4 并自动旋转,这接近我想要的,也是迄今为止最好的解决方案。

我找不到的是缩小到 A4 尺寸,而不需要旋转超大页面的功能。目前,所有横向文档都需要手动设置参数“landscape=true”,这很繁琐。基本上,我需要的是 pdfpages 的参数,例如

landscapeoversize

不幸的是,这个不存在。有没有我没想到的 pdfpages 包本身的解决方法?

答案1

这是一个解决方案。我们使用 pdftex 原语\pdfximage\pdflastximagepages

\documentclass{article}
\usepackage{pdfpages}

\newcounter{mtpdfpage}
\newsavebox{\mtsavebox}

\begin{document}
\pdfximage{attachment.pdf}
\setcounter{mtpdfpage}{0}
\loop
\stepcounter{mtpdfpage}%
\sbox{\mtsavebox}{\includegraphics[page=\themtpdfpage]{attachment.pdf}}%
\ifdim\ht\mtsavebox<\wd\mtsavebox
\includepdf[pages=\themtpdfpage, landscape]{attachment.pdf}%
\else
\includepdf[pages=\themtpdfpage]{attachment.pdf}%
\fi
\ifnum\value{mtpdfpage}<\pdflastximagepages
\repeat
\end{document}

相关内容