确定外部 pdf 页面大小的其他方法?

确定外部 pdf 页面大小的其他方法?

我想查询文档中外部 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-escapepdfinfo

\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

在此处输入图片描述

相关内容