Como obter o número de páginas de um arquivo pdf externo no Lualatex?

Como obter o número de páginas de um arquivo pdf externo no Lualatex?

Tentei todas as respostas que encontrei sobre esse tópico e não consigo fazer nada funcionar.

Este MWE funciona bem, mas apenas em pdflatex, já que \pdfximagenão funciona em lualatex.

\documentclass[12pt]{article}%
\usepackage{graphicx}
\begin{document}
\pdfximage{index.pdf}%
\the\pdflastximagepages
\end{document}

Respostas emObtenha o número de páginas do PDF externo

não funciona, aqui está o código do link acima:

\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}

Agora, 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}

Qual é a maneira correta de obter o número de páginas PDF de um arquivo PDF externo usandolualatex?

Usando TL 2019 no Linux.

Responder1

As primitivas do pdftex não desapareceram, apenas foram renomeadas: \pdfximageis \saveimageresourcee \pdflastximagepagesis \lastsavedimageresourcepages. Então:

\documentclass[12pt]{article}%
\usepackage{graphicx}
\begin{document}
\saveimageresource{index.pdf}%
\the\lastsavedimageresourcepages
\end{document}

Ou você pode carregar o luatex85pacote e então usar as primitivas pdftex, para que o documento seja compilado com pdflatex e lualatex.

Responder2

A epdfbiblioteca (baseada em poppler) foi substituída pela pdfebiblioteca (baseada em pplib). Além disso, você não definiu \luatexluaescapestring, você deve ter querido dizer \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}

informação relacionada