无法使用 PDFBox 将类路径中的图像插入到 PDF 中
Unable to Insert image from classpath into PDF using PDFBox
我有一个 springBoot 项目,我正在尝试使用 PDFBox 库将图像插入 PDF。该图像存在于 src/main/resources/image 文件夹 (myImage.jpg) 中。实现代码如下。虽然 运行 程序出现错误,指出在指定路径找不到图像。在这种情况下从类路径检索图像的正确方法是什么。
public class PDFImageService {
public void insertImage() throws IOException {
//Loading an existing document
File file = new File("/eclipse-workspace/blank.pdf");
PDDocument doc = PDDocument.load(file);
//Retrieving the page
PDPage page = doc.getPage(1);
//Creating PDImageXObject object
PDImageXObject pdImage = PDImageXObject.createFromFile("/image/myImage.jpg",doc);
//creating the PDPageContentStream object
PDPageContentStream contents = new PDPageContentStream(doc, page);
//Drawing the image in the PDF document
contents.drawImage(pdImage, 250, 300);
System.out.println("Image inserted Successfully.");
//Closing the PDPageContentStream object
contents.close();
//Saving the document
doc.save("/eclipse-workspace/blank.pdf");
//Closing the document
doc.close();
}
}
如果我将完全指定的图像路径指定为
,它就可以正常工作
PDImageXObject pdImage = PDImageXObject.createFromFile("C:\Users\Dell\Desktop\PDF\myImage.jpg",doc);
除非 eclipse-workspace 文件夹位于 OS 中的/(根)顶级文件,否则它将是隐含的和不正确的陈述,当您安装配置的 eclipse 时,它通常断言用户主文件夹放置工作区进入。如果它在 root / 那么我建议你在 IOException 之前添加一个 FileNotFoundException。
正如评论中所讨论的那样,它的工作原理是使用
PDImageXObject img;
try (InputStream is = PDFImageService.class.getResourceAsStream("/image/myImage.jpg");
{
// check whether InputStream is null omitted
byte [] ba = IOUtils.toByteArray(imageAsStream);
img = PDImageXObject.createFromByteArray(document, ba, "myImage.jpg");
}
我有一个 springBoot 项目,我正在尝试使用 PDFBox 库将图像插入 PDF。该图像存在于 src/main/resources/image 文件夹 (myImage.jpg) 中。实现代码如下。虽然 运行 程序出现错误,指出在指定路径找不到图像。在这种情况下从类路径检索图像的正确方法是什么。
public class PDFImageService {
public void insertImage() throws IOException {
//Loading an existing document
File file = new File("/eclipse-workspace/blank.pdf");
PDDocument doc = PDDocument.load(file);
//Retrieving the page
PDPage page = doc.getPage(1);
//Creating PDImageXObject object
PDImageXObject pdImage = PDImageXObject.createFromFile("/image/myImage.jpg",doc);
//creating the PDPageContentStream object
PDPageContentStream contents = new PDPageContentStream(doc, page);
//Drawing the image in the PDF document
contents.drawImage(pdImage, 250, 300);
System.out.println("Image inserted Successfully.");
//Closing the PDPageContentStream object
contents.close();
//Saving the document
doc.save("/eclipse-workspace/blank.pdf");
//Closing the document
doc.close();
}
}
如果我将完全指定的图像路径指定为
,它就可以正常工作PDImageXObject pdImage = PDImageXObject.createFromFile("C:\Users\Dell\Desktop\PDF\myImage.jpg",doc);
除非 eclipse-workspace 文件夹位于 OS 中的/(根)顶级文件,否则它将是隐含的和不正确的陈述,当您安装配置的 eclipse 时,它通常断言用户主文件夹放置工作区进入。如果它在 root / 那么我建议你在 IOException 之前添加一个 FileNotFoundException。
正如评论中所讨论的那样,它的工作原理是使用
PDImageXObject img;
try (InputStream is = PDFImageService.class.getResourceAsStream("/image/myImage.jpg");
{
// check whether InputStream is null omitted
byte [] ba = IOUtils.toByteArray(imageAsStream);
img = PDImageXObject.createFromByteArray(document, ba, "myImage.jpg");
}