簡體   English   中英

Ghostscript: PDF 總頁數

[英]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

在 Windows 系統中:

"gs exec 的路徑" -q -dNODISPLAY -dNOSAFER --permit-file-read="文件的路徑" -c "(""文件的路徑"") (r) file runpdfbegin pdfpagecount = quit"

評論:

  • 只需用您的路徑更改“通往...的路徑”的位置,其余部分保持原樣。
  • 在 -c 路徑上,您必須使用雙斜杠或類似 Unix 的斜杠。 例如:C:\\\\youfile.pdf(好)、C:/youfile.pdf(好)、C:\\yourfile.pdf(壞)。

例子:

  • 路徑: C:\\Temp\\Some Folder\\myFile.pdf
  • gs 路徑: C:\\Temp\\Some Folder\\gs\\bin\\gswin64c.exe
  • path -c 1: C:\\\\Temp\\\\Some Folder\\\\myFile.pdf
  • path -c 2: C:/Temp/Some Folder/myFile.pdf

命令:

"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 之一

  • cd /c "%~dp1" 將控制台切換到引用的文件驅動器路徑
  • “GSwin..c.exe”的完整引用路徑安全地遠程調用它
  • -q 將抑制(不顯示)開始消息
  • 從 9.5+ 版本開始,建議/需要 --permit-file-read="file name"
  • -c "(%~nx1) 不需要 name.xtension 的引號
  • 如果以快捷方式運行 cmd,需要暫停才能看到結果

當心僅在您信任的文件上使用作為您的重寫 GS -dSAFER 限制。

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM