以编程方式更改PDF中文本的字体颜色

时间:2009-08-15 22:52:14

标签: python pdf fonts

我根本不熟悉PDF规范。我想知道是否可以直接操作PDF文件,以便我认为重要的某些文本块以我选择的颜色突出显示。选择的语言将是python。

2 个答案:

答案 0 :(得分:13)

这可能,但不一定容易,因为PDF格式是如此丰富。您可以找到详细描述它的文档here。它给出了PDF如何显示文本的第一个基本示例是:

BT
/F13 12 Tf
288 720 Td
(ABC) Tj
ET

BT和ET是开始和结束文本对象的命令; Tf是一个使用外部字体资源F13(恰好是Helvetica)的命令,大小为12; Td是将光标定位在给定坐标处的命令; Tj是为前一个字符串写入字形的命令。味道有些“反向抛光符号” - 实际上非常接近Postscript的味道,后者是Adobe对排版的其他重要贡献之一。

问题是,PDF规范中没有任何内容表明文本“看起来像”它在页面上属于一起显示必须实际上“在一起”;因为总是可以给出精确的坐标,如果PDF是由复杂的排版布局系统生成的,它可以通过坐标逐个字符地精确定位文本。因此,以文字和句子的形式重建文本并不一定容易 - 它几乎和光学文本识别一样难,除了你精确地给出了字符(好吧 - 差不多......一些所谓的“图像”实际上可能显示为字符...; - 。)

pyPdf是一个非常简单的纯Python库,是玩PDF文件的好起点。它的“文本提取”功能非常简单,除了连接一些文本绘图命令的参数外什么都不做;你会看到某些文档就足够了,并且在其他文档中无法使用,但至少它是一个开始。作为分布式,pyPdf几乎没有任何颜色,但有一些黑客可以解决。

reportlab强大的Python库完全专注于生成新的PDF,而不是解释或修改现有的PDF。在另一个极端,纯Python库pdfminer完全专注于解析PDF文件;它确实做了一些聚类,试图在更简单的库被难倒的情况下重建文本。

我不知道现有的库可以执行您想要的转换任务,但是混合和匹配其中一些现有的库应该是可行的,以完成大部分工作......祝你好运!

答案 1 :(得分:0)

使用PDF注释可以在pdf文件中突出显示,但在本地执行并不是那么容易。如果任何提到的图书馆提供这样的设施是你可能寻找的东西。