You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PDFBox为PDF添加文本时如何设置固定黑色文字颜色

问题原因

出现该问题的核心原因是PDF内容流的图形状态继承规则:使用APPEND模式向已有PDF页面追加内容时,会直接继承页面原有内容流末尾留存的所有图形状态参数,文本填充色属于其中的一项。你处理的这份特定文档最后留存的填充色参数为白色,因此新增的文本默认使用白色填充,和白色背景重叠后完全不可见。绝大多数文档默认留存的填充色为黑色,因此原有代码可以正常运行。

解决方法

在写入文本前手动设置非描边填充色为固定黑色即可,修改后的代码如下:

import java.awt.Color;

// 其他原有代码不变
PDPageContentStream cs = new PDPageContentStream(document, page, PDPageContentStream.AppendMode.APPEND, false);
// 新增以下行设置文本填充色为黑色
cs.setNonStrokingColor(Color.BLACK);
cs.beginText();
cs.setFont(font, fontSize);
cs.newLineAtOffset(posX, posY);
cs.showText(text);
cs.endText();
cs.close();

补充说明

  • 文本默认使用填充色渲染,因此修改setNonStrokingColor参数即可生效,如果你需要自定义其他颜色,也可以传入RGB数值,比如cs.setNonStrokingColor(255,0,0)对应红色。
  • 颜色设置操作需要放在beginText()之前执行,避免在文本块内部修改状态引发部分PDF阅读器的兼容性问题。

内容的提问来源于stack exchange,提问作者Vrezh Arakelyan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 05:45:10