我想查询文档中外部 PDF 的页面大小。
我可以将包含的 PDF 装箱并测量该盒子(实际使用或不实际使用盒子),如 MWE 中所示,但我想知道是否有一种更直接的方法可以在不实际使用\includegraphics{}
PDF 的情况下使用。
理想的解决方案类似于使用\pdflastximagepages
来获取 PDF 中的页数。
MWE(使用装箱/测量解决方案):
\documentclass{article}
\usepackage{graphicx,mwe,printlen}
\uselengthunit{in}
\begin{document}
\newsavebox\mybox
\savebox{\mybox}{\includegraphics{example-image-a.pdf}}
The width is \printlength{\wd\mybox} and the height is \printlength{\ht\mybox}.
\usebox{\mybox}
\end{document}
输出:
答案1
这需要-shell-escape
和pdfinfo
:
\documentclass{article}
\usepackage{printlen}
\uselengthunit{cm}
\newcommand{\getpdfinfo}[1]{%
\openin\pdfread="|pdfinfo #1"
\begingroup\endlinechar=-1
\loop\ifeof\pdfread
\else
\read\pdfread to \infoline
\processinfoline
\repeat
\endgroup
}
\newread\pdfread
\def\processinfoline{%
\ifx\infoline\empty
\else
\expandafter\extractinfoline\infoline\extractinfoline
\fi
}
\def\extractinfoline#1: #2\extractinfoline{%
\expandafter\gdef\csname #1\endcsname{#2}%
}
\def\pdfboundingbox#1{%
\getpdfinfo{#1}%
\expandafter\expandafter\expandafter\getboundingbox\csname Page size\endcsname\getboundingbox
}
\def\getboundingbox#1 x #2 pts#3\getboundingbox{%
\setlength{\PDFWD}{#1bp}\setlength{\PDFHT}{#2bp}%
}
\newlength{\PDFWD}\newlength{\PDFHT}
\begin{document}
\pdfboundingbox{seti.pdf}
Width is \printlength{\PDFWD}, height is \printlength{\PDFHT}
\end{document}
人们可以只提取边界框信息,但拥有完整的报告也可能很方便。
PDF 文件是我刚刚编译的示例文件,为 A4 格式。四舍五入不正确是由于printlen
。