2016-07-23 20 views
0

iTextSharp 5.5.9を使ってPDFファイルを編集しようとしました。問題は、PDF上に大きな四角形のフィールドを編集するときにファイルを保存できないことです。これはコードです:PDFの大きな矩形をiTextSharpで書き直すにはどうすればいいですか?

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(); 

私は

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

に四角形を変更する場合にはうまく動作しますが、テストにhttp://sox.sourceforge.net/sox.pdfを使用して...しかし、私は大きな長方形をバックに変更する場合:

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

動作を停止します。助けてください!

+2

は非常にわかりやすいエラーメッセージではありません。例外はスローされますか? – nbokmans

+0

by 'redact'あなたは 'reduce'または 'shrink'を意味しますか? – TaW

+0

それは例外をスローしなかった@nbokmans – SuperBerry

答えて

0

iTextの開発では、通常、下にあるPdfReaderから読み取る同じファイルにスタンプすることを警告します。 OPのコードのようにすれば、読み書き操作はお互いにつながり、結果は予測できません。

異なるファイルを読み書きすると、OPのソリューションが動作し始めました。


一方が第byte[]としてメモリ内にソースファイルを読み込み、その配列からPdfReaderを構築する場合、そのリーダー上で動作PdfStamperの出力と同じファイルを使用することが可能です。ただし、このパターンは推奨されません。スタンピング中に問題が発生した場合、元のファイルの内容が既に削除されている可能性があります。それは機能を停止し

彼の文書は完全に良いのためになくなっていることをクライアントに説明する必要があることが恥ずかしいかもしれません...

関連する問題