2017-02-19 10 views
0

私はiTextの7は、既存のPDFに画像を追加し、Javaの

私はイメージを追加するために作成した関数を使用してPDF文書に画像を追加しようとしているがImageDataをの型を取ると、その後に追加しますキャンバス上の矩形を選択してPDFに追加します。アプリケーションの起動方法で例外

、その後

によって引き起こさ

:java.ioしかし、私はエラーにスレッド "メイン" java.lang.RuntimeExceptionで

例外を取得しておきます.FileNotFoundException:pdf.pdf(要求された操作は、ユーザーがマップしたセクションが開いているファイルでは実行できません)

機能コードは次のとおりです。次のように

protected void ExportToPdf(ImageData img) throws IOException { 
PdfDocument pdfDoc = new PdfDocument(new PdfReader("pdf.pdf"), new PdfWriter("pdf.pdf")); 

PdfCanvas canvas = new PdfCanvas(pdfDoc.getFirstPage()); 

PageSize ps = PageSize.A4; 

Rectangle page = new Rectangle(ps.getWidth(),ps.getHeight()); 

canvas.addImage(img, page, true); 

pdfDoc.close(); 

`

そして、私のメインは、次のとおりです。

public static void main(String[] args) throws IOException { //adds values to maps for the program to use 


    //starts PDF writer 
    PdfWriter writer = new PdfWriter("pdf.pdf"); 
    //Initialize PDF document 
    PdfDocument pdf = new PdfDocument(writer); 
    // Initialize document 
    Document document = new Document(pdf); 
    pdf.addNewPage(); 

    document.close(); 
    writer.close(); 
    pdf.close(); 

完全なプログラムは、シーンを取り込み、画像に変換し、その後に関数にそれを供給しますPDFに追加することができます。そのコードは次のとおりです:

WritableImage img = new WritableImage(1000, 700); 
scene.snapshot(img); 
RenderedImage renderedImage = SwingFXUtils.fromFXImage(img, null); 
ImageData imgData = ImageDataFactory.create(SwingFXUtils.fromFXImage(img, null), null); 
ExportToPdf(imgData); 

何か助けが驚くべきでしょう、ありがとうございます。

答えて

1

問題はiTextのは、あなたが読んでいるから、同じファイルへの書き込みをサポートしていません

すでにここ

PdfDocument pdfDoc = new PdfDocument(new PdfReader("pdf.pdf"), new PdfWriter("pdf.pdf")); 
です。単に、一時ファイルに書き込んで、完了したら元のファイルと置き換えてください。

関連する問題