Apache PDFbox Java 出现无法读取输入文件的错误
Apache PDFbox Java getting error Cant read input file
我正在尝试使用 PDFBox 2.0.1 版向我的 PDF 文件添加徽标。我有以下代码:
public class PDFService {
public void createPdf() {
// Create a document and add a page to it
PDDocument document = new PDDocument();
PDPage page = new PDPage();
document.addPage(page);
// Create a new font object selecting one of the PDF base fonts
PDFont font = PDType1Font.HELVETICA_BOLD;
ServletContext servletContext = (ServletContext) FacesContext
.getCurrentInstance().getExternalContext().getContext();
try {
PDImageXObject pdImage = PDImageXObject.createFromFile(
servletContext.getRealPath("/resources/images/logo.png"),
document);
PDPageContentStream contentStream = new PDPageContentStream(
document, page);
contentStream.drawImage(pdImage, 20, 20);
contentStream.beginText();
contentStream.setFont(font, 12);
contentStream.endText();
// Make sure that the content stream is closed:
contentStream.close();
// Save the results and ensure that the document is properly closed:
document.save("Hello World.pdf");
document.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
我收到错误 javax.imageio.IIOException:无法读取输入文件!在行
PDImageXObject pdImage = PDImageXObject.createFromFile(
servletContext.getRealPath("/resources/images/logo.png"),
document);
servletContext.getRealPath返回的路径是C:\Users\erickpezoa\Desktop\Multivision\Materials\apps\eclipse Kepler\eclipse\Projects\.metadata\.plugins\org.eclipse.core.resources\Servicios_Exequiales\build\weboutput\resources\images\logo.png
我做错了什么?
如果您使用的是 Maven,并且您的图像文件夹在 Eclipse 中位于 src/main/resources 下,您可以尝试:
PDImageXObject pdImage = PDImageXObject.createFromFile(
PDFService.class.getResource("/images/logo.png").getPath(),
document);
如果 src/main/resources
下有另一个名为 resources
的文件夹,则只需要 作为路径 /resources/images/logo.png
。或者不使用 Maven,并且您的输出文件夹包含:/resources/images。在那种情况下:
PDImageXObject pdImage = PDImageXObject.createFromFile(
PDFService.class.getResource("/resources/images/logo.png").getPath(),
document);
希望对您有所帮助。
我正在尝试使用 PDFBox 2.0.1 版向我的 PDF 文件添加徽标。我有以下代码:
public class PDFService {
public void createPdf() {
// Create a document and add a page to it
PDDocument document = new PDDocument();
PDPage page = new PDPage();
document.addPage(page);
// Create a new font object selecting one of the PDF base fonts
PDFont font = PDType1Font.HELVETICA_BOLD;
ServletContext servletContext = (ServletContext) FacesContext
.getCurrentInstance().getExternalContext().getContext();
try {
PDImageXObject pdImage = PDImageXObject.createFromFile(
servletContext.getRealPath("/resources/images/logo.png"),
document);
PDPageContentStream contentStream = new PDPageContentStream(
document, page);
contentStream.drawImage(pdImage, 20, 20);
contentStream.beginText();
contentStream.setFont(font, 12);
contentStream.endText();
// Make sure that the content stream is closed:
contentStream.close();
// Save the results and ensure that the document is properly closed:
document.save("Hello World.pdf");
document.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
我收到错误 javax.imageio.IIOException:无法读取输入文件!在行
PDImageXObject pdImage = PDImageXObject.createFromFile(
servletContext.getRealPath("/resources/images/logo.png"),
document);
servletContext.getRealPath返回的路径是C:\Users\erickpezoa\Desktop\Multivision\Materials\apps\eclipse Kepler\eclipse\Projects\.metadata\.plugins\org.eclipse.core.resources\Servicios_Exequiales\build\weboutput\resources\images\logo.png
我做错了什么?
如果您使用的是 Maven,并且您的图像文件夹在 Eclipse 中位于 src/main/resources 下,您可以尝试:
PDImageXObject pdImage = PDImageXObject.createFromFile(
PDFService.class.getResource("/images/logo.png").getPath(),
document);
如果 src/main/resources
下有另一个名为 resources
的文件夹,则只需要 作为路径 /resources/images/logo.png
。或者不使用 Maven,并且您的输出文件夹包含:/resources/images。在那种情况下:
PDImageXObject pdImage = PDImageXObject.createFromFile(
PDFService.class.getResource("/resources/images/logo.png").getPath(),
document);
希望对您有所帮助。