我尝试了关于该主题的所有我能找到的答案,但还是没有任何效果。
这个 MWE 可以正常工作,但仅限于 pdflatex,因为\pdfximage
在 lualatex 中不起作用。
\documentclass[12pt]{article}%
\usepackage{graphicx}
\begin{document}
\pdfximage{index.pdf}%
\the\pdflastximagepages
\end{document}
不起作用,这是来自上述链接的代码:
\documentclass{article}
\newcommand*{\pdfnumberofpages}[1]{%
\directlua{%
local doc = epdf.open("\luatexluaescapestring{#1}")
local pages
if (doc) then
pages = doc:getCatalog():getNumPages()
else
pages = 0
end
tex.write(pages)
}%
}
\begin{document}
Number of pages: \pdfnumberofpages{index.pdf}
\end{document}
现在,lulatex foo.tex
给出
(/usr/local/texlive/2019/texmf-dist/tex/latex/base/size10.clo)) (./foo.aux)
! Undefined control sequence.
\pdfnumberofpages ...open("\luatexluaescapestring
{#1}") local pages if (doc...
l.17 Number of pages: \pdfnumberofpages{test.pdf}
使用以下方法获取外部 PDF 文件的 pdf 页数的正确方法是什么路拉泰克斯?
在 Linux 上使用 TL 2019。
答案1
pdftex 原语并没有消失,它们只是被重命名了:\pdfximage
is\saveimageresource
和\pdflastximagepages
is \lastsavedimageresourcepages
。因此:
\documentclass[12pt]{article}%
\usepackage{graphicx}
\begin{document}
\saveimageresource{index.pdf}%
\the\lastsavedimageresourcepages
\end{document}
或者您可以加载luatex85
包,然后使用 pdftex 原语,以便文档使用 pdflatex 和 lualatex 进行编译。
答案2
基于 poppler 的库epdf
已被基于pdfe
pplib 的库取代。此外,您没有定义\luatexluaescapestring
,您的意思是\luaescapestring
。
\documentclass{article}
\newcommand*{\pdfnumberofpages}[1]{%
\directlua{%
local pages = 0
local doc = pdfe.open("\luaescapestring{#1}")
if doc then
pages = pdfe.getnofpages(doc)
pdfe.close(doc)
end
tex.write(pages)
}%
}
\begin{document}
Number of pages: \pdfnumberofpages{index.pdf}
\end{document}