¿Cómo obtener el número de páginas de un archivo pdf externo en Lualatex?

¿Cómo obtener el número de páginas de un archivo pdf externo en Lualatex?

Probé todas las respuestas que pude encontrar sobre este tema y no logro que algo funcione.

Este MWE funciona bien, pero sólo en pdflatex, ya que \pdfximageno funciona en lualatex.

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

Respuestas enObtener número de páginas de PDF externo

no funciona, aquí está el código del enlace anterior:

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

Ahora, lulatex foo.texda

(/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}

¿Cuál es la forma correcta de obtener el número de páginas PDF de un archivo PDF externo usandolualatex?

Usando TL 2019 en Linux.

Respuesta1

Las primitivas pdftex no han desaparecido, solo se les ha cambiado el nombre: \pdfximageis \saveimageresourcey \pdflastximagepagesis \lastsavedimageresourcepages. Entonces:

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

O puede cargar el luatex85paquete y luego usar las primitivas pdftex, para que el documento se compile tanto con pdflatex como con lualatex.

Respuesta2

La epdfbiblioteca (basada en poppler) ha sido reemplazada por la pdfebiblioteca (basada en pplib). Además no lo definiste \luatexluaescapestring, debes haber querido decir \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}

información relacionada