我(我认为)正确地遵循了https://memorynotfound.com/apache-pdfbox-add-image-pdf-document/的指示:
我正在尝试插入图像logo.png
。该代码运行并且不会引发任何错误,但是生成的PDF不包含图像!文本确实按预期方式显示。有谁知道这是为什么以及如何解决?我在Apache NetBeans 11中使用Java 8。
谢谢。这是代码:
public void generate(File samplefile) throws IOException {
PDDocument document = new PDDocument();
//Adding the blank page to the document
//Repeat this next line for further pages
PDPage page = new PDPage();
document.addPage(page);
File dir = new File(ArdenRecord.sadd + "/Sample Reports");
if (!dir.exists()) {
dir.mkdir();
}
String fname = samplefile.toString().split("\\.")[0].split("\\\\")[2];
File f = new File(ArdenRecord.sadd + "/Sample Reports/" + fname + ".pdf");
File imfile = new File(ArdenRecord.sadd + "/logo.png");
PDImageXObject pdImage = PDImageXObject.createFromFile(imfile.toString(), document);
PDPageContentStream contents = new PDPageContentStream(document, page);
PDRectangle mediaBox = page.getMediaBox();
float startX = (mediaBox.getWidth() - pdImage.getWidth()) / 2;
float startY = (mediaBox.getHeight() - pdImage.getHeight()) / 2;
contents.drawImage(pdImage, startX, startY);
contents.beginText();
contents.newLineAtOffset(25, 700);
contents.setFont(PDType1Font.TIMES_ROMAN, 12);
BufferedReader br = new BufferedReader(new FileReader(samplefile));
String st;
int n = 0;
while ((st = br.readLine()) != null) {
if (n < 4 || n > 20 && n < 30) {
contents.showText(st);
contents.newLineAtOffset(0, -18);
}
n++;
}
contents.endText();
contents.close();
document.save(f);
document.close();
Desktop.getDesktop().open(f);
}
}```
我(我认为)正确地遵循了以下指示:https://memorynotfound.com/apache-pdfbox-add-image-pdf-document/我正在尝试插入图像logo.png。该代码可以运行,但不会...
也许您的代码没有错。我在文本文件中使用PDFBox 2.0.17,OpenJDK 8,this PNG file和Lorem Ipsum的第一章进行了复制粘贴,编译和测试。请参见下面的结果(Adobe Reader屏幕截图)。