2017-02-19 112 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的不支持写入到正在读取相同的文件。简而言之,写入临时文件并在完成时用它替换原始文件。