如何在Lualatex中取得外部pdf檔的頁數?

如何在Lualatex中取得外部pdf檔的頁數?

我嘗試了有關該主題的所有答案,但無法找到工作。

這個 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頁數的正確方法是什麼盧拉泰克斯

在 Linux 上使用 TL 2019。

答案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}

相關內容