在 PDFBox 中设置文本颜色
Setting text color in PDFBox
我正在尝试使用 PDFBox 向 PDF 页面添加文本行。我正在使用以下代码
PDPageContentStream cs = new PDPageContentStream(document, page, PDPageContentStream.AppendMode.APPEND, false);
cs.beginText();
cs.setFont(font, fontSize);
cs.newLineAtOffset(posX, posY);
cs.showText(text);
cs.endText();
cs.close();
这在大多数文档上都可以正常工作,但我在处理文本显示为白色的特定文档时遇到问题(不确定为什么文本会以这种方式呈现)并且由于页面背景本身是白色的,所以我最理想的做法是为该文本设置固定的黑色。怎么做到的?
正如 Tilman Hausherr 和其他人在评论中指出的那样,问题是在追加模式下打开流而不将 resetContext 参数设置为 true 会导致呈现文本的许多问题,因此使用
PDPageContentStream(document, page, PDPageContentStream.AppendMode.APPEND, false, true)
而不是
PDPageContentStream(document, page, PDPageContentStream.AppendMode.APPEND, false)
解决了文本渲染不正确的问题。另外,如果要为文字设置自定义颜色,需要调用
cs.setNonStrokingColor(r, g, b);
我正在尝试使用 PDFBox 向 PDF 页面添加文本行。我正在使用以下代码
PDPageContentStream cs = new PDPageContentStream(document, page, PDPageContentStream.AppendMode.APPEND, false);
cs.beginText();
cs.setFont(font, fontSize);
cs.newLineAtOffset(posX, posY);
cs.showText(text);
cs.endText();
cs.close();
这在大多数文档上都可以正常工作,但我在处理文本显示为白色的特定文档时遇到问题(不确定为什么文本会以这种方式呈现)并且由于页面背景本身是白色的,所以我最理想的做法是为该文本设置固定的黑色。怎么做到的?
正如 Tilman Hausherr 和其他人在评论中指出的那样,问题是在追加模式下打开流而不将 resetContext 参数设置为 true 会导致呈现文本的许多问题,因此使用
PDPageContentStream(document, page, PDPageContentStream.AppendMode.APPEND, false, true)
而不是
PDPageContentStream(document, page, PDPageContentStream.AppendMode.APPEND, false)
解决了文本渲染不正确的问题。另外,如果要为文字设置自定义颜色,需要调用
cs.setNonStrokingColor(r, g, b);