我一直在尝试使用iText 7将图像添加到PDF文档中。
我创建的用于添加图像的函数采用ImageData类型,然后将其添加到画布上的矩形并将其添加到PDF。但是,我一直收到错误
线程“main”中的异常java.lang.RuntimeException:Application start方法中的异常
然后
引起: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);
任何帮助都会很棒,谢谢。
答案 0 :(得分:1)
问题已经存在
PdfDocument pdfDoc = new PdfDocument(new PdfReader("pdf.pdf"), new PdfWriter("pdf.pdf"));
Itext不支持写入您正在阅读的同一文件。只需改为写入临时文件,并在完成后用原始文件替换原始文件。