2016-07-23 57 views
0

我試圖使用iTextSharp 5.5.9來編輯PDF文件。問題是當我在PDF上編輯一個大的矩形字段時,它不能保存文件。這是代碼:如何編輯iTextSharp的PDF大矩形?

PdfReader reader1 = new PdfReader(new FileStream(DesFile, FileMode.Open)); 

Stream fs = new FileStream(DesFile, FileMode.Open); 

PdfStamper stamper = new PdfStamper(reader1, fs); 

List<PdfCleanUpLocation> cleanUpLocations = new List<PdfCleanUpLocation>(); 

cleanUpLocations.Add(new PdfCleanUpLocation(1, new Rectangle(77f,77f,600f,600f), BaseColor.GRAY)); 

PdfCleanUpProcessor cleaner = new PdfCleanUpProcessor(cleanUpLocations, stamper); 

cleaner.CleanUp(); 

stamper.Close(); 

reader1.Close(); 

我用http://sox.sourceforge.net/sox.pdf來測試,如果我改變矩形以

new Rectangle(77f,77f,200f,200f) 

它會工作得很好......但是,當我變回了較大的矩形:

new Rectangle(77f,77f,600f,600f) 

它停止工作。請幫忙!

+2

它停止工作不是很描述性錯誤消息。是否拋出異常? 'redact'的 – nbokmans

+0

你的意思是'減少'還是'縮小'? – TaW

+0

它沒有拋出任何異常@nbokmans – SuperBerry

回答

0

iText開發通常會警告不要在同一文件中加蓋底層的PdfReader讀取內容。如果按照OP的代碼完成,讀取和寫入操作可以相互進行,結果是不可預測的。

使用不同的文件讀取和寫入後,OP的解決方案開始工作。


如果一個第一讀取源文件到存儲器作爲byte[],然後從該陣列構造PdfReader,能夠使用相同的文件作爲對讀取器操作PdfStamper的輸出。但是不建議使用這種模式:如果在打印過程中出現問題,原始文件內容可能已被刪除,因此您既沒有印出原始PDF,也沒有印出結果PDF。

這可能是尷尬不得不向客戶解釋說,他的文件都完全消失了......