如何计算 Makefile 生成的页面数

如何计算 Makefile 生成的页面数

我想在我的 PDF 中集成一个健全性测试,Makefile以构建多个 PDF。我想根据xelatex运行期间/运行后的输出计算并比较生成的页面数,将其与预期值进行比较,然后停止make以查看布局更改是否意外创建了过多/过少的页面。最好的/最简单的方法是什么?

我可以grep使用输出中的常用页码计数器,例如[1][2][3],但这容易出错,并且该计数器通常比生成的 PDF 高 1 页 - 在上面的例子中,它计入[3],但 PDF 仅包含 2 页。

我想避免在单独的步骤中检查 PDF 本身,这样我就不必“猜测”其文件名(在我的情况下是生成的)。如果这会产生影响,我需要一个解决方案xelatex

答案1

有几种方法可以了解 PDF 文件的页数。

  1. Grep 日志文件Output written将返回类似

    Output written on test.pdf (18 pages, 74251 bytes).
    

    (与页码无关)

  2. 使用pdfinfo(Poppler 自带的),因此pdfinfo test.pdf|grep Pages会输出类似

    页数:18

  3. 使用qpdf --show-npages test.pdf仅输出的18

  4. 查看此问题和 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}

相关内容