我在我的java应用程序中使用PDFBox生成PDF文件,我是这方面的新手。我有一个要求,输出文本内容在变量中。输出文本应该是BOLD和Normal字体的混合。
PDDocument document = new PDDocument();
PDPage page = new PDPage();
document.addPage( page );
PDFont font = PDType1Font.HELVETICA_BOLD;
PDPageContentStream contentStream = new PDPageContentStream(document, page);
float xStartPos = 100;
float yStartPos = 650;
contentStream.beginText();
contentStream.setFont( font, 12 );
contentStream.moveTextPositionByAmount( xStartPos, yStartPos );
String displayText = "Hello world";
contentStream.drawString(displayText);
contentStream.endText();
在上面的代码中,Hello应该是粗体字,而world应该是普通字体。我的要求是使用单个drawString调用,这应该实现。任何人都可以帮忙吗?
提前致谢。
答案 0 :(得分:3)
单drawString
方法调用以生成普通字体和粗体字(正如您在问题标题中提到的那样)是不可能的,因为PDPageContentStream.drawString
实际上在PDF使用当前字体绘制整个参数字符串。因此,需要多次drawString
次呼叫。
在你的情况下,例如:
contentStream.beginText();
contentStream.moveTextPositionByAmount( xStartPos, yStartPos );
contentStream.setFont( PDType1Font.HELVETICA_BOLD, 12 );
contentStream.drawString("Hello ");
contentStream.setFont( PDType1Font.HELVETICA, 12 );
contentStream.drawString("world");
contentStream.endText();