2017-06-21 526 views
2

我想用Ghostscript製作自己的「PDF打印機」。Ghostscript PDF打印

大多數解決方案我發現在互聯網上的涉及第三方像雷德曼重定向PS打印機的GS可執行文件。

有沒有辦法做同樣沒有第三方(除GS等)?

這裏是我的2個想法:

  • 繞道打印驅動程序和軟件直接生成的PostScript(從GDI到後記,使用也許像圖元文件設備上下文定製的設備上下文存在)

  • 以編程方式爲要轉換的每個文檔創建一個新的本地端口。也許使用這種技術:https://stackoverflow.com/a/1331777/99276

第一個解決方案將是巨大的,但找不到任何關於它。

而我efraid第二個是在所有的效率不高(並檢測當文檔被完全印刷可以是棘手的)

回答

0

首先;請注意,Windows打印系統已在Windows Vista及更高版本中重新設計。雖然舊系統在WIndows 7和8仍然有效,但我不確定它在Windows 10中的可用性。在Windows 10中,一切都通過XPS進行,我認爲(可能是錯誤的)PostScript是通過先經由XPS生成的。

你的第一個想法對我來說聽起來不合理。如果您沒有打印機驅動程序,您如何擁有打印機(並允許您的應用程序進行打印)?即使你可以這樣做,爲什麼你會從GDI創建PostScript,然後將它發送給Ghostscript並讓它創建PDF?直接創建PDF將會更加合理。

在我不知道如何添加一個新的本地端口會幫助你在所有的第二種情況。端口只是打印機驅動程序的輸出指向的位置。什麼是端口監視器(RedMon是端口監視器)所做的是重定向發送到端口的數據流,並用它「做點什麼」。在Ghostscript + RedMon的情況下,'something'是創建一個PDF文件。

我不清楚爲什麼你不希望使用雷德曼,因爲你使用的Ghostscript顯然高興。但是,如果你真的不想這樣做,那麼編寫你自己的端口監視器。該過程記錄在Windows設備驅動程序開發工具包中,並不是特別困難。如果您遇到困難,您甚至可以查看RedMon代碼作爲指導。例如,請參閱here

+0

他們想到了所有這些。 使用postscript的想法是,我不必像自己覆蓋設備上下文一樣自己繪製PDF。 然後,本地端口背後的想法是它在光盤上輸出Postscript文件,而不會提示像FILE端口那樣的文件位置。 最後是我已經看了redmon源代碼。但如果它是我唯一的解決方案,我會這樣做。 – MiniScalope

+0

從Windows繪圖操作創建PDF並不困難,然後從相同的操作創建PostScript程序,請相信我。當然,您可以創建保存到特定文件的本地端口,但是您需要代碼才能對該文件名進行掃描並在找到該文件時對其進行處理。這是可能的(早期版本的Adobe'PDF打印'功能做到了這一點,其他實現也如此)。但其(相對)處理器價格昂貴。如果掃描程序崩潰並且用戶打印另一個文件,它也容易丟失數據。 – KenS