[英]Ghostscript: PDF total pages
我正在使用 Ghostscript 庫 API(從 C# 包裝)從我的應用程序打印 PDF 文檔。
使用“ -dFirstPage ”和“ -dLastPage ”參數,我能夠打印 select 一系列頁面,但 PDF 頁面的總數如何?
允許用戶 select 頁面間隔從 2 到 10 不是很好,讓我說,PDF 文檔只有 4 頁。
考慮到我正在通過gsapi_init_with_args API 庫調用使用 Ghostscript 庫。
Ghostscript 可以在stdout
上計算和顯示 PDF 的頁數。 命令行是
gswin32c ^
-q ^
-dNODISPLAY ^
-c "(input.pdf) (r) file runpdfbegin pdfpagecount = quit"
這里所有的-c "..."
內容都是 PostScript 命令行片段(使用一些 GS 內部命令擴展)。 input.pdf是 PDF 文件名(也可以是完整路徑,如(c:/path/to/my.pdf)
)。
然而,對於這樣的工作更好更快的工具是使用pdfinfo
(的XPDF的實用程序的一部分,也可以在Windows上)。
更新:
@ebyrob 想知道是否可以修改我的示例命令行,以便它還可以在單個操作中顯示PDF。 試試這個:
gswin32c ^
-q ^
-c "(input.pdf) (r) file runpdfbegin pdfpagecount =" ^
-f input.pdf
嗯,這不是一個單一的操作——它只是一個命令行中的兩個不同的操作。
我試圖制作這個腳本:
gswin32c ^
-q ^
-c "(input.pdf) (r) file runpdfbegin pdfpagecount =" ^
-f input.pdf
在c# 包裝的解決方案中工作並不斷收到錯誤“/undefinedfilename”。 在這種情況下,請確保您的文件路徑使用斜杠“/”作為 DirectorySeperator 而不是反斜杠“\\”。 我知道 Kurt Pfeifle 已經寫了它,但它發生在我身上,我只是忽略了它。
對於在 ghostscript >9.50 中遇到問題的人,請添加 --permit-file-read=input.pdf
"gs exec 的路徑" -q -dNODISPLAY -dNOSAFER --permit-file-read="文件的路徑" -c "(""文件的路徑"") (r) file runpdfbegin pdfpagecount = quit"
命令:
"C:\Temp\Some Folder\gs\bin\gswin64c.exe" -q -dNODISPLAY -dNOSAFER --permit-file-read="C:\Temp\Some Folder\myFile.pdf" -c "(""C:\\Temp\\Some Folder\\myFile.pdf"") (r) file runpdfbegin pdfpagecount = quit"
"C:\Temp\Some Folder\gs\bin\gswin64c.exe" -q -dNODISPLAY -dNOSAFER --permit-file-read="C:\Temp\Some Folder\myFile.pdf" -c "(""C:/Temp/Some Folder/myFile.pdf"") (r) file runpdfbegin pdfpagecount = quit"
總結以上針對 windows 用戶的一些單獨評論,以避免需要在 / 和 \\ 之間進行更改,顯示總頁數可以設置為拖放或“發送到”的快捷方式,首先切換到工作目錄。
@echo off & cd /d "%~dp1" & "C:\path to gs\bin\gs.exe" -q --permit-file-read="%~nx1" -c "(%~nx1) (r) file runpdfbegin pdfpagecount = quit" & pause
其中 gs.exe 是 windows c(onsole) 變體 gswin32c.exe 或 gswin64c.exe 之一
當心僅在您信任的文件上使用作為您的重寫 GS -dSAFER 限制。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.