【问题标题】:Pdf setting the font color to the textpdf将字体颜色设置为文本
【发布时间】:2013-03-06 07:23:47
【问题描述】:

我正在尝试手动向 pdf 文件添加一些文本。我能够添加具有特定字体的新文本。但我无法设置字体颜色。那么我该如何手动完成呢? (我只想手动更改这些,因为我已经有了编写这些字节以制作 pdf 文件的代码) 另外,我如何使用 pdf 标准中指定的图形状态来操作文本,以便功能更改不会影响颜色变化等。我如何准确地使用图形状态?

源pdf文件click here 修改后的pdf文件clcik here

【问题讨论】:

  • 手动添加文字是什么意思?它是否与编程有关,还是您的意思是在 Adob​​e Acrobat 中?
  • 不是通过使用 adobe acrobat。我想使用编程来做到这一点。为此我想更改 pdf 的对象。
  • 你能展示你目前拥有的代码吗?你用的是什么编程语言?
  • 您的标签 adobe 具有误导性,因为您既不想使用 Adob​​e 库来创建 PDF,也不想遇到任何特定于 Adob​​e PDF 查看器的问题。

标签: pdf pdf-generation


【解决方案1】:

PDF 颜色操作符列在 PDF 规范 ISO 32000-1:2008 的表 74 中。

在您的情况下,您添加的内容流是

104 0 obj
<</Length 105 0 R>>stream
  /Helv 8 Tf
  BT
  1 0 0 1 15.67 150 Tm
  (l)Tj
  ET
  /Helv 8 Tf
  BT
  1 0 0 1 17.88 190 Tm
  (abcdefghijklmnopqr)Tj
  ET
endstream
endobj 

如果例如您希望文字在 RGB 颜色空间中用红色填充,您可以添加 1 0 0 rg:

104 0 obj
<</Length 105 0 R>>stream
  BT
  1 0 0 1 15.67 150 Tm
  /Helv 8 Tf
  1 0 0 rg
  [...]

编辑

如果您担心该更改可能会影响以后的文本,请记住使用图形状态堆栈运算符 qQ(参见 @ 的第 8.4.2 节) 987654322@)。例如

q
0 1 -1 0 595.22 0 cm
q
BT
1 0 0 1 36 540 Tm
/Xi0 12 Tf
0.75 g
(Hello people!)Tj
0 g
ET
Q
Q

(复制自How to add text object to existing pdf

【讨论】:

  • 谢谢。如果我通过指定诸如 1 0 0 rg 来使用颜色,那么它会影响所有字体和其他对象吗?因为我不想让我的 pdf 文件中的所有文本都发生这种颜色变化。
  • 我能够添加我想要的颜色文本。但是生成的 pdf 不能仅在 Windows 8 阅读器中打开(Win​​dows 8 中用于 pdf 视图的应用程序)。在 adobe 阅读器中它可以正常打开。我该如何解决?
  • 请提供。我假设不匹配的运算符对。
  • 或“手动”表示您已使用文本文件读/写代码打开 PDF 以插入附加说明。如果是这样,您还搞砸了文件末尾的交叉引用表,这可以解释为什么它仍然在 Adob​​e Reader 中打开(因为它非常擅长修复不正确的外部参照表)...
  • 关于它是否影响所有字体和其他对象 --- 填充颜色的变化会影响所有遵循填充颜色的后续对象。因此,记得使用 Graphics State Stack 运算符,我在上面的答案中添加了对其描述的引用。
猜你喜欢
  • 2021-11-29
  • 2015-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-07
  • 2020-11-13
相关资源
最近更新 更多