Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将图像添加到现有PDF,java_Java_Javafx_Itext - Fatal编程技术网

将图像添加到现有PDF,java

将图像添加到现有PDF,java,java,javafx,itext,Java,Javafx,Itext,我一直在尝试使用iText 7将图像添加到PDF文档中 我创建的用于添加图像的函数采用ImageData类型,然后将其添加到画布上的矩形中,并将其添加到PDF中。然而,我不断地得到错误 线程主java.lang.RuntimeException中的异常:应用程序启动方法中的异常 然后 原因:java.io.FileNotFoundException:pdf.pdf无法对打开用户映射节的文件执行请求的操作 功能代码为: protected void ExportToPdf(ImageData im

我一直在尝试使用iText 7将图像添加到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);

任何帮助都将是惊人的,谢谢。

问题已经出现了

PdfDocument pdfDoc = new PdfDocument(new PdfReader("pdf.pdf"), new PdfWriter("pdf.pdf"));
Itext不支持写入正在读取的同一文件。只需写入一个临时文件,并在完成时用它替换原始文件即可