PDFBox - 单个drawString方法调用以生成普通和粗体字体

时间:2015-06-18 10:15:31

标签: java pdfbox

我在我的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调用,这应该实现。任何人都可以帮忙吗?

提前致谢。

1 个答案:

答案 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();