Search code examples
javapdftextpdfbox

How to render Colored Text in Apache PDFBox


Yes, it seems a weird question, but I was not able to render a colored text in PDFBox.

Usually the code for generating text looks like that:

//create some document and page...
PDDocument document = new PDDocument();
PDPage page = new PDPage(PDRectangle.A4);

//defined some font
PDFont helveticaRegular = PDType1Font.HELVETICA;

//content stream for writing the text
PDPageContentStream contentStream = new PDPageContentStream(document, page);

contentStream.beginText();
contentStream.setFont(helveticaRegular, 16);
contentStream.setStrokingColor(1f,0.5f,0.2f);
contentStream.newLineAtOffset(64, page.getMediaBox().getUpperRightY() - 64);
contentStream.showText("The hopefully colored text");
contentStream.endText();

//closing the stream
contentStream.close();

[...] //code for saving and closing the document. Nothing special

Interestingly the setStrokingColor is the only method accepting colors on the stream. So I thought this is the way to color something in PDFBox.

BUT: I'm not getting any color to the text. So I guess this is a method for other types of content.

Does anybody know how to achieve a colored text in PDFBox?


Solution

  • You use

    contentStream.setStrokingColor(1f,0.5f,0.2f);
    

    But in PDFs text by default is not drawn by stroking a path but by filling it. Thus, you should try

    contentStream.setNonStrokingColor(1f,0.5f,0.2f);
    

    instead.