2010-12-14 123 views
0

我一直在使用Itextsharp預填充.aspx頁面中可填寫的PDF文件。但是當我試圖用i-9文件(從國土安全部門下載)完成同樣的事情時,它給了我一個大小爲0的文件,這個文件無法打開(我得到一個錯誤消息說,它是一個損壞的文件) 。itextsharp創建一個損壞的/空白的pdf文件,i-9文件

我只是複製的代碼片段(我在我的解決方案所需的Itestsharp引用),這是產生腐敗的PDF文件(大小爲0)

string pdfTemplate = @"c:\PDF\i-9.pdf"; 
    string newFile = @"c:\PDF\completed_i-9.pdf"; 
    PdfReader pdfReader = new PdfReader(pdfTemplate); 
    PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream(
                   newFile, FileMode.Create)); 
    pdfStamper.Close(); 

但是,如果我做同樣的事情任何其他可填寫的pdf文件,例如W4它工作得很好。任何想法的傢伙,這裏出了什麼問題?

謝謝

+0

嘗試使用較舊的Acrobat保存i-9文件,並查看iText是否可以讀取它;這可能是一個兼容性問題。 – BeemerGuy 2010-12-15 00:14:11

+0

感謝您的回覆。如果我正確地理解了你 - 這就是我所做的。我卸載了當前版本的acrobat reader(這是9+)並安裝了acrobat 8​​.打開i-9文件並保存了它的副本(通過保存爲>>)。但我仍然得到同樣的錯誤。最讓我感到困擾的是,它與其他pdf文件(保存在相同版本中)完全吻合,例如W4。 i-9有什麼內在的錯誤嗎?我可以以某種方式重新創建這個pdf嗎?謝謝。 – Tintin 2010-12-15 16:16:30

+0

如果您點擊ctrl + d並單擊安全選項卡,您將看到PDF已被保護。進一步的細節請查看我的答案。 – 2010-12-15 19:35:03

回答

0

啊。有tracked down the PDF,我看到了問題。它有一個空白的開放密碼,但沒有一個文件安全。我們在打開一個受密碼保護的PDF文件時會拋出一個異常(這個PDF的開放密碼是一個空字符串,它會自動打開,但它仍然存在),除非您使用OWNER密碼打開它,在這種情況下,任何事情都會發生。

如果你檢查你的日誌,你會看到異常。

只有國土安全部門知道所有者的密碼,我懷疑他們會告訴你。好消息是,有人問了一個更具體的「我怎樣才能用iText修改一個帶有」打開「密碼」類型問題的文件,併爲自己弄明白了。

然而,使用他們的答案在法律上是有問題的,所以我不會提供一個鏈接或告訴你答案(我已經知道,也沒有告訴其他提問者)。

+0

非常感謝Mark!是的,在發佈問題後不久,我發現文檔啓用了安全設置,不允許「內容複製」等[我錯過了它,因爲它沒有詢問任何密碼]。 問題是 - 他們爲什麼要加上這種限制?有沒有其他的方式來編程預先填寫PDF?再次感謝。 – Tintin 2010-12-15 20:25:04