Java PDFBox 问题:drawImage is not allowed within a text block.
·
try (PDDocument document = new PDDocument()) {
PDPage page = new PDPage();
document.addPage(page);
PDImageXObject pdImage = PDImageXObject.createFromFile("pdf/dzs.jpeg", document);
try (PDPageContentStream contentStream = new PDPageContentStream(document, page)) {
contentStream.beginText();
contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12);
contentStream.newLineAtOffset(100, 700);
contentStream.showText("Hello PDFBox");
contentStream.drawImage(pdImage, 100, 400, pdImage.getWidth() * 0.25f, pdImage.getHeight() * 0.25f);
contentStream.endText();
} catch (IOException e) {
e.printStackTrace();
}
document.save("pdf/example.pdf");
} catch (IOException e) {
e.printStackTrace();
}
- 在 Java 开发中,使用 PDFBox 库处理 PDF 文件时,出现如下错误信息
Exception in thread "main" java.lang.IllegalStateException: Error: drawImage is not allowed within a text block.
问题原因
-
这个错误发生在调用 beginText 方法之后,未调用 endText 方法,就调用了 drawImage 方法
-
在调用 beginText 方法之后与调用 endText 方法之前,只能进行文本操作,否则报错
处理策略
- 确保在调用 beginText 方法之后与调用 endText 方法之前,只能进行文本操作,其他操作在调用 beginText 方法之前或调用 endText 方法之后进行
try (PDDocument document = new PDDocument()) {
PDPage page = new PDPage();
document.addPage(page);
PDImageXObject pdImage = PDImageXObject.createFromFile("pdf/dzs.jpeg", document);
try (PDPageContentStream contentStream = new PDPageContentStream(document, page)) {
contentStream.beginText();
contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12);
contentStream.newLineAtOffset(100, 700);
contentStream.showText("Hello PDFBox");
contentStream.endText();
contentStream.drawImage(pdImage, 100, 400, pdImage.getWidth() * 0.25f, pdImage.getHeight() * 0.25f);
} catch (IOException e) {
e.printStackTrace();
}
document.save("pdf/example.pdf");
} catch (IOException e) {
e.printStackTrace();
}
更多推荐
所有评论(0)