簡體   English   中英

將多個輸入插入到Ghostscript中

[英]Piping multiple inputs into Ghostscript

我正在嘗試創建一個單行Linux命令,以使用Ghostscript組合兩個PDF文件(從URL下載)。 但是, 我不想創建任何臨時文件 (所有操作都應在內存中完成)。

以下命令似乎不起作用(我嘗試通過進程替換來實現)。

gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=combined.pdf <(curl http://example.com/one.pdf) <(curl http://example.com/two.pdf)

當我運行此命令時,它給了我下面的錯誤。

**** Warning:  An error occurred while reading an XREF table.
**** The file has been damaged.  This may have been caused
**** by a problem while converting or transfering the file.
**** Ghostscript will attempt to recover the data.
Error: /ioerror in --run--
Current allocation mode is local
Last OS error: Illegal seek
GPL Ghostscript 9.18: Unrecoverable error, exit code 1

我相信正在發生的事情是,在兩個輸入的PDF有機會完成下載之前,正在運行Ghostscript命令,也許有一種方法可以等待這種情況發生。

好,這里有幾個問題。

首先,Ghostscript和pdfwrite設備不會合並PDF文件。 輸入被完全解釋,轉換為圖形基元,然后分配給設備。 渲染設備使用圖形庫將基元渲染為位圖,矢量設備創建基元的高級表示並將其以適當的語言寫入輸出。 因此,重要的是要注意輸出文件的內容與輸入文件的內容無關。 僅視覺效果在渲染時應該是相同的。

其次,您不能避免使用臨時文件。 如果您通過stdin將PDF文件通過管道傳輸到Ghostscript,則它只是創建一個臨時文件並將整個文件存儲在其中。 這是必需的,因為PDF文件需要隨機訪問才能進行解釋。

最后,您不能在命令行上兩次從stdin進行管道傳輸。 要處理兩個文件,您需要編寫自己的Ghostscript接口並使用流接口發送數據,或將它們都放在命令行中。

因此:gs file1.pdf file2.pdf

您嘗試做的事情根本行不通,並且無論如何也不會阻止創建兩個PDF文件,只是Ghostscript為您創建了它們,而您卻看不到它們。

暫無
暫無

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

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