我正在使用pdfpages
将 PDF 包含在我的 LaTeX 文档中。
其中一些pdfs
同时包含landscape
和portrait
页面,我不一定事先知道这些发生在哪里。
有没有办法处理pdfpages
这种混合内容?目前,我只是将所有内容都作为纵向 ( [landscape=false]
) 包含进去,这样确实可以生成可操作的文档,但横向页面会旋转并缩小。
或者,是否有与 pdfpages 不同的解决方案?
MWEone.pdf
是一个(假设的)混合了横向和纵向页面的 PDF:
\documentclass[12pt,english]{article}
\usepackage{pdfpages}
\begin{document}
This is the text in the master file.
\includepdf[pages=-]{one}
\end{document}
答案1
让我们的第一步就是准备这样一本书(book.tex
)。
%! *latex book.tex
\documentclass[a4paper]{article}
\pagestyle{empty}
\usepackage{pdflscape}
\begin{document}
\font\malfont=cmbx10 at 500pt \malfont
\def\insertpage{\mbox{}\vfil\hfil\thepage}
\insertpage
\begin{landscape}\insertpage\end{landscape}
\insertpage
\begin{landscape}\insertpage\end{landscape}
\end{document}
最快的方法可能是使用pdfpages
包,http://www.ctan.org/pkg/pdfpages,并将选项rotateoversize
切换为 true。这是示例及其结果。
%! *latex book-transform1.tex
\documentclass[a4paper]{article}
\usepackage{pdfpages}
\begin{document}
\includepdf[pages={-},fitpaper,rotateoversize]{book.pdf}
\end{document}
唯一的问题是,如果我们想将横向页面旋转(或装饰、排版、签名、加水印等),那么就反过来了。这是一个改进的版本。我们正在测试每一页是否以纵向/横向模式排版。我们将在排版前在虚拟框中测量页面宽度和页面高度来发现这一点。
终端正在向我们告知调查结果。
第 1 页,纵向,597.50682pt,高度 845.04504pt,深度 0.0pt。
第 2 页,横向,845.04504pt,高度 597.50682pt,深度 0.0pt。
第 3 页,纵向,597.50682pt,高度 845.04504pt,深度 0.0pt。
第 4 页,横向,845.04504pt,高度 597.50682pt,深度 0.0pt。
我附上一个例子和我们努力的预览。
%! *latex book-transform2.tex
\batchmode
\documentclass[a4paper]{article}
\usepackage{pdfpages}
\def\malfile{book.pdf}
\pdfximage{\malfile}
\begin{document}
\newcount\malcount \malcount=0 % This is a page counter...
\newbox\malbox % This is a virtual box...
\loop % Let's test all the pages one by one...
\advance\malcount by 1%
% Measure a single page virtually...
\setbox\malbox=\hbox{\includegraphics[page={\the\malcount}]{\malfile}}%
% Send the information to the terminal...
\scrollmode
\message{Page \the\malcount, \ifnum\wd\malbox<\ht\malbox portrait\else landscape\fi, \the\wd\malbox, height \the\ht\malbox, depth \the\dp\malbox.}%
\batchmode
% Testing and inserting that particular single page into a document...
\ifnum\wd\malbox<\ht\malbox %Portrait; no changes please...
\includepdf[pages={\the\malcount}, fitpaper]{\malfile}
\else % Landscape mode; rotate it, decorate it, draw something on it... :-)
\includepdf[pages={\the\malcount}, fitpaper, angle=270]{\malfile}% 90 degrees is the default value in pdfpages, 270 degrees is an experiment, if somebody is in need of it...
\fi
% Test all the pages from the input PDF file...
\ifnum\malcount<\pdflastximagepages\repeat
\end{document}