Как узнать количество страниц внешнего PDF-файла в Lualatex?

Как узнать количество страниц внешнего PDF-файла в Lualatex?

Я перепробовал все ответы, которые смог найти по этой теме, но ничего не сработало.

Этот 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 не исчезли, они лишь были переименованы: \pdfximageis \saveimageresourceи \pdflastximagepagesis \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}

Связанный контент