Wie erhalte ich die Seitenzahl einer externen PDF-Datei in Lualatex?

Wie erhalte ich die Seitenzahl einer externen PDF-Datei in Lualatex?

Ich habe alle Antworten ausprobiert, die ich zu diesem Thema finden konnte, und habe nichts zum Laufen gebracht.

Dieses MWE funktioniert einwandfrei, aber nur in pdflatex, da \pdfximagees in lualatex nicht funktioniert.

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

Antworten inSeitenzahl des externen PDF abrufen

funktioniert nicht, hier ist der Code aus dem obigen Link:

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

Nun lulatex foo.texgibt

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

Wie kann man die Anzahl der PDF-Seiten einer externen PDF-Datei richtig ermitteln mitAbonnieren?

TL 2019 unter Linux verwenden.

Antwort1

Die pdftex-Grundelemente sind nicht verschwunden, sie wurden nur umbenannt: \pdfximageis \saveimageresourceund \pdflastximagepagesis \lastsavedimageresourcepages. Also:

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

Oder Sie laden das luatex85Paket und verwenden dann die pdftex-Grundelemente, sodass das Dokument sowohl mit pdflatex als auch mit lualatex kompiliert wird.

Antwort2

Die epdfBibliothek (basierend auf Poppler) wurde durch die pdfeBibliothek (basierend auf pplib) ersetzt. Außerdem haben Sie nicht definiert \luatexluaescapestring, Sie müssen gemeint haben \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}

verwandte Informationen