
Я перепробовал все ответы, которые смог найти по этой теме, но ничего не сработало.
Этот MWE работает нормально, но только в pdflatex, поскольку \pdfximage
не работает в lualatex.
\documentclass[12pt]{article}%
\usepackage{graphicx}
\begin{document}
\pdfximage{index.pdf}%
\the\pdflastximagepages
\end{document}
Ответы вПолучить количество страниц внешнего PDF-файла
не работает, вот код из ссылки выше:
\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-файла с помощьюлуалатекс?
Использование TL 2019 на Linux.
решение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
Библиотека epdf
(основанная на poppler) была заменена библиотекой 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}