2013-01-19 31 views
3

我正在尋找一種方法從PDF文件中刪除所有path對象。從PDF中刪除所有矢量路徑

我懷疑這可能可以用Adobe Acrobat中的javascript來完成,但是會真正感謝使用ghostscript或mupdf工具來做的提示。

總之任何工作的解決方案是正確的答案

+0

http://www.ehow.com/how_5855882_remove-document-path-adobe-pdf.html –

+0

感謝雷切爾,但這是爲了刪除鏈接目標。我正在尋找一種方法來刪除矢量路徑對象 – theta

回答

6

要使用Ghostscript做到這一點,你將不得不修改pdfwrite設備可以接受的。事實上,你可能不得不爲任何PDF解釋器做類似的事情。

你認爲什麼是'路徑'對象?例如一個shfill?文字怎麼樣?如何使用類型3字體(構建路徑)的文本?

剪輯路徑怎麼樣?

如果你真的想追求這個,我可以告訴你在哪裏修改pdfwrite,只要你不介意重新編譯Ghostscript。

它可能是一個愚蠢的問題,但你爲什麼要這樣做呢?是否有可能有另一個解決您的問題?如果你想要做的只是刪除填充路徑(或實際上是描邊路徑),一種解決方案是通過ps2write運行文件來獲得PostScript,並將代碼重新定義爲'fill'和'stroke'爲no-ops,然後運行文件恢復通過pdfwrite得到一個PDF。

[增加了閱讀的意見後]

PDF沒有一個「路徑」的對象,不像X對象是一個類型的對象。路徑是通過一系列的創建如'newpath','moveto','curveto'和'lineto'。一旦你建立了一條路徑,你就可以用'fill'或'stroke'來操作它,注意PDF也沒有'text'對象類型要麼

這就是爲什麼你的方法不窩rk,因爲沒有任何路徑對象,所以無法刪除'路徑對象',路徑是在內容流中創建的。您可以使用Form XObject來做類似的事情,但路徑構建在Form內容流中,它仍然不是一個單獨的對象。

PostScript也是如此,這些都是不是任何種類的面向對象的語言。由於沒有任何對象,因此無法以任何一種語言檢測「類型路徑的矢量對象」。在實踐中,任何不是圖像的東西都是矢量對象,並且是從一條路徑構建而成的(甚至有些圖像可能會被視爲路徑)

您已突出顯示的PostScript向一個矩形添加了一個矩形路徑(路徑不必在PDF或PostScript中連續),然後填充它。請注意,與PostScript中的通常做法一樣,這些不是直接使用PostScript運算符,而是執行使用運算符的過程。程序在程序序言中定義。

順便說一下,它看起來像你在這裏使用pswrite設備(不能確定這樣一個小樣本)。如果是這樣的話,你真的想用ps2write來代替。否則,你將最終導致很多東西退化爲微小的填充矩形(pswrite會對很多圖像類型執行此操作)

我沒有建議您嘗試'解密'ps2write輸出(它不是' t加密,其壓縮)。

我建議什麼是創建一個PostScript文件,重新定義「顯示」和/或「填充」運營商,讓他們什麼都不做,然後使用pdfwrite設備運行產生的PostScript程序回通過Ghostscript的。這將生成一個PDF文件,其中忽略所有描邊和/或填充對象。

[最後除了]

我拿起你的示例文件,並檢查它。

我認爲你看到的錯誤是PDF文件使用/ Separation顏色(當然它不能不填寫矩形)與ICCBased備用和沒有設備空間色調transfrom。在這種情況下,ps2write的當前版本可能會解決您的問題。它(目前,這是由於更改)不保留/分離顏色,而是將其作爲設備顏色發出,默認爲RGB。因此,簡單地將文件轉換爲PostScript並返回到PDF可能會完全解決您的問題。

如果您知道問題所在,如果您告訴我們,本來可以更快一些,我本可以在第一時間向您提供這些信息和解決方法。

使用ps2write然後我創建的文件的PostScript格式(注意,分離的色彩現在RGB),並與兩行前綴的PostScript程序:

/fill {newpath} bind def 
/stroke {newpath} bind def 

請注意,您必須使用它保留編輯二進制文件。然後使用pdfwrite設備通過Ghostscript重新運行PostScript程序,我得到一個PDF文件,其中我認爲您遇到問題的綠色「裝飾」已經消失。

因此,您的問題有一個解決方案,也可能是解決您的問題的一種更好的方法。

+0

謝謝Ken。由於這些路徑對象,我有幾個PDF導致移動渲染器出現問題。這些是'path'類型的對象,因爲有''xobject','text'等類型的對象。它們只是一些頁面裝飾,我希望我可以指示ghostscript遍歷每個pdf對象,如果'path'對象被檢測到然後刪除它。我會盡快將示例文件轉換爲postscript,並使用您的提示或類似方法來處理此問題,然後回覆。 – theta

+0

Ken,我將示例頁面轉換爲ps,並找到了矢量路徑的一部分:[編輯器截圖](http://i.imgur.com/bwsKmcW.png),但我看不到我如何檢測矢量對象類型路徑。 我也將相同的頁面導出到ps2,但無法解密對我有意義的任何內容 – theta

+1

您可能需要添加一些示例。也許這些都是破損的路徑對象,只需要修復... – mkl