我想在我的 PDF 中集成一个健全性测试,Makefile
以构建多个 PDF。我想根据xelatex
运行期间/运行后的输出计算并比较生成的页面数,将其与预期值进行比较,然后停止make
以查看布局更改是否意外创建了过多/过少的页面。最好的/最简单的方法是什么?
我可以grep
使用输出中的常用页码计数器,例如[1][2][3]
,但这容易出错,并且该计数器通常比生成的 PDF 高 1 页 - 在上面的例子中,它计入[3]
,但 PDF 仅包含 2 页。
我想避免在单独的步骤中检查 PDF 本身,这样我就不必“猜测”其文件名(在我的情况下是生成的)。如果这会产生影响,我需要一个解决方案xelatex
。
答案1
有几种方法可以了解 PDF 文件的页数。
Grep 日志文件
Output written
将返回类似Output written on test.pdf (18 pages, 74251 bytes).
(与页码无关)
使用
pdfinfo
(Poppler 自带的),因此pdfinfo test.pdf|grep Pages
会输出类似页数:18
使用
qpdf --show-npages test.pdf
仅输出的18
。查看此问题和 Heiko Oberdiek 的回答获取外部 PDF 的页数
答案2
您可以将其从内部写入xelatex
外部文件,例如\jobname.pp
:
\documentclass{article}
\usepackage{totpages}
\usepackage{blindtext}
\AtEndDocument{%
\newwrite\tempfile\newpage
\immediate\openout\tempfile=\jobname.pp
\immediate\write\tempfile{\theTotPages}%
\immediate\closeout\tempfile}
\begin{document}
\blinddocument \newpage \blinddocument
\end{document}