2017-04-19 62 views
0

我一直在修改與端口監視器(在HP PCL 6通用驅動程序)Ghostscript轉換成PDF打印作業。我已經測試過幾個應用程序,如Words,Excel,Adobe Reader,Microsoft Edge等,它們都正常工作。 但是,在測試Microsoft Powerpoint 2016時,似乎有些圖形無法通過Ghostscript正確呈現。問題與ghostscript呈現PPT到PDF

實際幻燈片下面的PDF enter image description here 輸出的Ghostscript下面 enter image description here

我測試過這甚至與其他一些PDF生成器,如BioPDF,CutePDF還有了AdobePDF,他們都會導致與上述相同的輸出。

只是想知道有人曾經嘗試過並面臨過類似的問題嗎?如果有的話可以有人指出我在正確的方向?

回答

2

你在做什麼不是一個單一的步驟PowerPoint到PDF和Ghostscript不是渲染PowerPoint。事實上,如果你正在創建一個PDF文件Ghostscript不是(理想情況下)呈現什麼。

實際發生的是您要求PowerPoint打印到畫布,然後將其傳遞到PostScript打印機驅動程序。這會產生髮送到端口的PostScript。您的(和其他人)端口監視器然後將PostScript發送到'Distiller'(在您的情況下爲Ghostscript和pdfwrite設備)。 Distiller將矢量繪圖命令重新格式化爲PDF格式,並從中構建PDF文件。它不渲染(變成位圖圖像),除非強制執行。

顯然,在這條路上有幾處地方會出現問題。鑑於你說Adobe產品(你提到的其他人使用Ghostscript)也有同樣的問題,我認爲它可以安全地假設問題不是 Ghostscript。

這也意味着你沒有使用你認爲你是的驅動程序。就我所知,Adobe無法將PCL作爲輸入媒體處理,Ghostscript也無法處理。 GhostPCL 作爲輸入處理PCL,但這不是你說的你正在使用的。

當然,您還沒有鏈接到示例文件來演示問題,也沒有提供示例命令行,所以這都是假設。

現在,如果您在某種程度上使用PCL6設備,那麼問題很可能是由於輸出中存在rasterOps。 Rasterops是PCL成像模型的一部分,它不存在於PDF中,並且是一種透明度。有三種方法可以處理PDF輸出設備的這些內容;首先將整個頁面內容渲染爲圖像,其次忽略rasterOps對象,然後將rasterOps視爲不透明。

GhostPCL和pdfwrite設備採取第三種選擇。因此,可以想象,您的原始內容有一些透明對象,它們被PCL打印機驅動程序作爲光柵處理,然後由GhostPCL和pdfwrite設備渲染爲不透明對象。

如果這在某種程度上是這種情況,那麼解決方案很簡單;不要使用PCL打印機驅動程序,請使用PostScript軟件。

如果你發佈一個鏈接到一個(簡單的,例如單頁)的例子,你發送給Ghostscript的例子和一個命令行,那麼我可以看看它。請不要給我發送PowerPoint,我無法使用它,即使可以,我的打印設置也不符合您的要求。我需要將數據發送給Ghostscript。 [查看文件後,編輯]

不要吝嗇聽起來像我講課,問題是人們找到谷歌搜索這些結果,然後嘗試基於一個什麼樣的認識不足加以應用發生。所以我覺得最好在我的答案中清楚說明發生了什麼。它可以在以後保存問題:-)

我看到的第一件事是PCL確實是PCL,如果您嘗試通過Ghostscript運行它,它會引發可怕的錯誤並退出。所以大概你沒有這樣做。

PostScript文件除了包含巨大圖像以外,不包含任何內容,呈現(大概在600dpi)包含2頁,這兩頁看起來像上面的圖像。這就是爲什麼PostScript比PCL文件大20倍的原因。

但是....如果我用OpenOffice打開.ppt文件(4.0.0是我必須要的),我看到完全一樣的東西。我恐怕沒有微軟PowerPoint的副本,但從我看到的這裏有兩個結論;

首先,至少與OpenOffice的觀察,我得到的PDF看起來很像PowerPoint演示。所以關於你的PowerPoint有一些「有趣的」。

其次,即使這不是你所期望的,它有什麼在PostScript程序。這意味着PowerPoint將幻燈片呈現爲位圖或Windows打印系統/ HP驅動程序。

現在,如果我通過GhostPCL而不是Ghostscript(渲染,不生成PDF)來運行PCL,那麼結果更像是我認爲您所期待的。但是,當發送到PDF文件時,結果非常糟糕。這強烈地暗示了涉及某種形式的透明度,PostScript根本不支持透明度,而PCL通過rasterOP來完成。

恐怕這意味着問題出現在PowerPoint,Windows打印系統或您正在使用的PostScript打印機驅動程序中。由於PCL至少接近您的預期,我懷疑這意味着PowerPoint正在做正確的事情,並且它的打印機驅動程序搞亂了。看來您正在使用Windows PostScript打印機驅動程序。

因此,有沒有辦法可以「修復」這對於像這樣的文件,至少不能使用Ghostscript。您需要'修復'Windows PostScript打印機驅動程序,或者可能的Windows打印系統。您可以嘗試向Microsoft報告錯誤,推測這些文件在發送到物理PostScript打印機時也會錯誤地打印。

+0

嗨KenS, 首先,感謝您的建議,請原諒我在PDF生成這一領域的淺層知識。我最近纔開始研究它。 根據你的建議,我嘗試將我的打印機驅動程序切換到PostScript的驅動程序,但它似乎不能解決問題,同樣的圓圈出現,但似乎有一些改進。 我已將輸入(** <.pcl>/<.ps> **轉換爲ghostscript以及下面鏈接中的我的命令)以及它們的輸出。 https://www.dropbox.com/sh/yx8xr8i7wandkix/AAB5Io7MbNQ0cP_05ZPcx_K7a?dl = 0 請諮詢我可以在下一步做什麼 –

+0

在[編輯] – KenS

+0

之後,在我的回答中添加了一堆東西,感謝Ken對這個問題的見解,並且您一直是一個很棒的幫助! –