2015-07-19 31 views
2

有沒有辦法用CGPDF < ...>來創建PDF對象(例如帶有自定義PDF生產者/消費者/查看者所需參數的PDF字典)...還是必須編寫我自己的解析器並創建新的預告片,外部參照等,以便將新對象添加到PDF中?據我瞭解,CG在創建PDF時將其圖形上下文的所有繪圖調用轉換爲正確的PDF對應文件 - 但我擁有應存儲在PDF中的自定義數據/對象(例如用於註釋,線程等),但顯然CG不能自動創建。CGPDF <...> - 安裝人員在哪裏?

我只能找到這些干將

從字典

CGPDFDictionaryGetArray
CGPDFDictionaryGetBoolean
CGPDFDictionaryGetCount
CGPDFDictionaryGetDictionary
CGPDFDictionaryGetInteger
CGPDFDictionaryGetName
CGPDFDictionaryGetNumber獲取數據10 CGPDFDictionaryGetObject
CGPDFDictionaryGetStream
CGPDFDictionaryGetString

任何幫助,將不勝感激?

順便說一句 - 有沒有人知道一些鏈接,我可以找出在現實世界中用這個函數和它的回調可以實現什麼。

CGPDFDictionaryApplyFunction
CGPDFDictionaryApplierFunction

也許示例應用程序來看到它在行動?

Thx預先

回答

2

有沒有setters。 CGPDF API是隻讀的。
CGPDFDictionaryApplyFunction只是讓您枚舉字典對象中的條目。如果您想查看真實世界的用法,PDFKitten框架在一些地方使用此功能。

+0

感謝您的小貓鏈接。所以你認爲除了我可以用CGPDF API檢索的信息之外,我還必須進行私人解析? – mramosch

+0

是的,你將不得不做你的私人解析和寫作,或使用專用的第三方PDF庫。 –

+0

** // @ Mihai:**那麼 - 開心編碼;-) – mramosch

1

我們發現,當我們在iOS和Android的商業PSPDFKit SDK中添加批註支持的時候,我們感到困難。

查看PDF Specification,第23頁以獲取您需要支持的標準過濾器列表,旁邊是簡單的詞法分析器/解析器。

我們在Objective-C中構建了初始版本,使用原始文件訪問,然後使用我們自己的小解析器。分析完所有對象後,可以爲要更改的對象附加一個新的預告片。如果不支持所有上述壓縮方法,這將不適用於所有文檔。花了幾年的時間才達到可以說99.9%的文件在那裏工作的狀態。這裏有PDF規範,然後就是現實中存在的文件不應該在任何理智的渲染器中工作,但Adobe Acrobat會愉快地呈現文檔。其中的PDF更像HTML,即使在事情可怕並且破碎的情況下,瀏覽器仍然顯示一些東西。

我們最終重新實現了C++中的所有內容,以實現出色的解析性能,併爲此組件單獨進行了數千次測試。您也可以查看其他商業產品,例如muPDF,它可以幫助您 - 我只是想讓您從頭開始重新實施所有事情,因爲只需幾年時間就可以使代碼可以接受兼容性和性能水平。