
このトピックに関して見つけられる答えをすべて試してみましたが、何もうまくいきません。
この MWE は正常に動作しますが、\pdfximage
lualatex では動作しないため、pdflatex でのみ動作します。
\documentclass[12pt]{article}%
\usepackage{graphicx}
\begin{document}
\pdfximage{index.pdf}%
\the\pdflastximagepages
\end{document}
動作しない場合は、上記のリンクからのコードを以下に示します。
\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 プリミティブはなくなったわけではなく、名前が変更されただけです:\pdfximage
は\saveimageresource
、 は\pdflastximagepages
です\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}