2017-02-19 85 views
0

我一直在試圖將圖像添加到一個利用iText 7添加圖片到現有的PDF,JAVA

我創建添加圖像功能的PDF文檔需要的ImageData類型,然後將其添加到一個畫布上的矩形並將其添加到PDF。不過,我不斷收到錯誤

異常在線程 「主」 了java.lang.RuntimeException:異常在應用程序啓動方法

然後

產生的原因:java.io .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

的問題已經在這裏

PdfDocument pdfDoc = new PdfDocument(new PdfReader("pdf.pdf"), new PdfWriter("pdf.pdf")); 

iText的不支持寫入到正在讀取相同的文件。簡而言之,寫入臨時文件並在完成時用它替換原始文件。