2012-09-06 37 views
1

所以,我有一個類似於文本編輯器的程序。我需要它的輸出格式是PDF,但我需要再次編輯該PDF。由於我的程序輸出永遠不會非常複雜,並且由於我的程序是創建PDF的程序,所以我可以直接從創建的PDF中讀取,但我認爲將另一個文件附加到PDF將更容易閱讀。在PDF中讀取PDF作爲字符串

但是,我不希望用戶看到文件附加到PDF。

我已經讀過一次,你可以把/EmbeddedFiles更改爲​​來欺騙PDF閱讀器。這樣他們就不會檢測到他們正在處理的PDF文件。

問題是,如何讀取PDF以便進行該更改,然後在編輯之前再次將其還原回來?

我不認爲PDF庫會幫助我,因爲我試圖「損壞」PDF。我想我應該解析它作爲一些字符串,然後尋找我想改變的子字符串。但我對PDF格式太不熟悉,不知道它是否真的很簡單,或者是否有特定的方法來做到這一點...

+0

:(過於本地化....你能告訴我們一些代碼嗎? – Sap

+0

我還沒有寫任何東西... 我只是問如何閱讀PDF格式的字符串,可以編輯,保存爲一個PDF文件,並且可以再次編輯,但是由於我搞亂了PDF的核心結構,我不希望PDF庫能夠支持這個功能,如果ist沒有幫助,那麼文件總是被附加到頂部文件,這對我的程序創建的每個文件都是一樣的... – Karlovsky120

+0

只是好奇:爲什麼你要隱藏的附件,如果it's您正在試圖提供的功能如此重要? – TheBlastOne

回答

1

如果您只創建一個自己的二進制格式版本並將其稱爲PDF,那麼您可以嘗試爲PDF文件的任何dictonary對象添加一個「自定義」條目,並將數據流與該條目相關聯。由於該條目不在PDF規範之內,因此所有(實施完善的)讀者應該能夠忽略它。
您可以使用PdfDictionary.put對iText進行此操作,例如,您可以將非標準數據添加到目錄字典中。

2

PDF不是用於編輯和附加附件的格式(隱藏或不是我不知道會工作)是有點兒。假設你的技巧:

  • 這是一個有效的PDF? 您可能想欺騙讀者,但是您會創建無效的PDF,這比您嘗試使用的方法更令我擔憂。

  • 如果PDF閱讀器更新其功能以支持無效語法,該怎麼辦? 這意味着突然你的文件可見,打敗你的意圖。

最好的辦法是:

讓用戶創建它的文檔。將文本存儲在程序文件夾中。創建一個PDF。編輯時,只需加載基於PDF標題的文本文檔(或其他)。再一次,PDF不是一種編輯格式。

或使用喬納森的解決方案。這適用於本地存儲文本。

無論哪種方式,破壞PDF文件是不可取的。

+0

我剛剛找到另一種方式。我可以在文本編輯器中打開PDF並添加'%'來開始與附件相關的每一行的開始,並將其註釋掉。 這可能會是一個更好的方法,然後在一個問題......不過,我還是不知道如何與Java做到這一點..難道我只是打開PDF一樣拒絕其他的文本文件,或者其他什麼東西? – Karlovsky120

+0

@ Karlovsky120「我可以打開文本編輯器PDF和添加%至每行的beggining」。不,你不能那樣做。 PDF是一種二進制格式,如果你對PDF文件做了這樣的事情,它肯定會變成腐敗和不可讀的。 – yms

+0

確切的說。那麼,我該如何在Java中對它進行打擊,以免它變得腐敗? P.S.好的,不是文本編輯器,我使用Eclipse編輯它... – Karlovsky120