\pdffilesize
所以我刚刚了解到这个答案。
还有其他类似的东西吗?\the\inputlineno
不久前我学到了打印输入文件行号的方法。
具体来说,pdf 是否有页数?通过这种方式,您还可以提取有关文件的哪些其他信息?
为了澄清起见,我想问的是还\pdffilesize
存在哪些其他命令?
答案1
foo.pdf
您可以使用以下技巧打印页数:
\sbox0{\pdfximage{foo.pdf}}\the\pdflastximagepages
以下是该手册的摘录pdftex
:
•
\pdflastximagepages
(只读整数)
此只读寄存器返回先前通过命令访问的文件的最高页码\pdfximage
。这仅适用于 PDF 文件;对于 PNG、JPEG 或 JBIG2 文件,它始终返回 1。
这里有一个更大的文件相关原语列表。请注意,它们在 LuaTeX 中不可用,但可以使用包进行模拟pdftexcmds
。我写的地方{file}
是指<general text>
这样的东西,它里面的扩展<balanced text>
是一个文件名;特别是{test.tex}
可以使用,但也可以{\jobname.tex}
。
\pdffilemoddate{file}
扩展为 的修改日期,file
格式D:20101122164111-08’00’
为 其中D:YYYYMMDDHHMMSSXhh'mm'
X 为+
或-
和hhmm
是与 UTC 的差值。所有字符的类别代码均为 12。\pdfcreationdate
扩展到 PDF 文件的创建日期(格式与之前相同)\pdffilesize{file}
扩展到文件大小(以字节为单位)\pdfmdfivesum file {file}
扩展为文件的 MD5(此处file
后面\pdfmdfivesum
是关键字,因此必须明确出现)\pdffiledump offset <number> length <number> {file}
offset <number>
如果缺失,则扩展为从 0 开始的文件十六进制转储;如果存在,<number>
则将忽略字节。如果length <number>
缺失,则将转储整个文件;否则<number>
将仅转储字节。
答案2
Egreg 提供了一种使用 pdfTeX 从 PDF 本身提取信息来获取 PDF 页数的方法,但值得补充的是,为什么简单的“核心 TeX”方法不起作用。
您可能知道 TeX 使用这些\count0
信息来提供有关正在输出哪个页面的信息,并且这些信息用于向打印页面添加页码信息。但是,TeX 不会使用它来跟踪“从文档开头开始的绝对页面”。您可以通过一个简短的演示文件看到这一点
\documentclass{article}
\usepackage{lipsum}
\begin{document}
\count0 10 %
\lipsum
\end{document}
这将产生两页输出,但是由于我将第一页设置为“10”,因此它们被列为第 10 页和第 11 页。\count0
在页面输出时,TeX 会将 的值写入日志(在方括号中),并且它表明就 TeX 而言,这些确实是第十页和第十一页:
This is pdfTeX, Version 3.1415926-2.4-1.40.13 (TeX Live 2012)
\write18 enabled.
entering extended mode
(./test.tex
LaTeX2e <2011/06/27>
Babel <v3.8m> and hyphenation patterns for english, dumylang, nohyphenation, ge
rman-x-2012-05-30, ngerman-x-2012-05-30, afrikaans, ancientgreek, ibycus, arabi
c, armenian, basque, bulgarian, catalan, pinyin, coptic, croatian, czech, danis
h, dutch, ukenglish, usenglishmax, esperanto, estonian, ethiopic, farsi, finnis
h, french, friulan, galician, german, ngerman, swissgerman, monogreek, greek, h
ungarian, icelandic, assamese, bengali, gujarati, hindi, kannada, malayalam, ma
rathi, oriya, panjabi, tamil, telugu, indonesian, interlingua, irish, italian,
kurmanji, latin, latvian, lithuanian, mongolian, mongolianlmc, bokmal, nynorsk,
polish, portuguese, romanian, romansh, russian, sanskrit, serbian, serbianc, s
lovak, slovenian, spanish, swedish, turkish, turkmen, ukrainian, uppersorbian,
welsh, loaded.
(/usr/local/texlive/2012/texmf-dist/tex/latex/base/article.cls
Document Class: article 2007/10/19 v1.4h Standard LaTeX document class
(/usr/local/texlive/2012/texmf-dist/tex/latex/base/size10.clo))
(/usr/local/texlive/2012/texmf-dist/tex/latex/lipsum/lipsum.sty) (./test.aux)
[10{/usr/local/texlive/2012/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
[11] (./test.aux) )</usr/local/texlive/2012/texmf-dist/fonts/type1/public/amsfo
nts/cm/cmr10.pfb>
Output written on test.pdf (2 pages, 22281 bytes).
SyncTeX written on test.synctex.gz.
Transcript written on test.log.
事实上,页码也可能重复出现
\documentclass{article}
\usepackage{lipsum}
\begin{document}
\lipsum
\count0 1 %
\lipsum
\end{document}
因此,\count0
只有当您能确定没有发生任何事情时,它才是可靠的,但一般情况并非如此。
答案3
简单地放在\usepackage{lastpage}
序言中和 某处(通常在页脚的“页面”中\pageref{LastPage}
) 。\thepage
\pageref{LastPage}