用连字读写PDF文件?

时间:2017-01-19 20:37:49

标签: python pdf reportlab

我正在尝试从PDF文件中读取文本,然后再使用Python将相同的文本写回另一个PDF。读入文本后,将字符串打印到控制台时字符串的表示形式为:

Officially, it’s called

但是,当我打印此文本字符串的repr()时,我看到:

O\xef\xac\x83cially, it\xe2\x80\x99s called

这对我来说很有意义 - 这些是来自PDF的符号的连字,即\ xef \ xac \ x83代表'ff'的连字。问题是,当我使用reportlab库将此字符串写入PDF时,PDF会有黑色符号,如下所示:

enter image description here

这只发生在某些连字上。我想知道我能做什么,以便我写入PDF的字符串不包含这些连字,或者是否有一种有效的方法来替换所有连字符。

2 个答案:

答案 0 :(得分:0)

您的输入似乎是正确的,但要查看输出中的字符,请使用具有一个字体的字体。 您在这里使用的字体是沼泽标准Arial,它不包含它。

一些建议(主要取决于您的平台,但其中一些是开源):

  • Arial Unicode MS
  • Lucida Grande
  • 宋体
  • 坎布里亚
  • 牛腿
  • Droid Sans / Droid Serif
  • Helvetica Neue
  • Ubuntu的

如果您不想要或无法更改字体,请在将文字写入PDF之前,将序列\xef\xac\x83替换为程序中的普通字符ffi。 (和你提到的其他某些连字类似。)

答案 1 :(得分:0)

我最终做的是将文字文​​件中的字符复制出来并对它们进行.replace。即str.replace(' ff',' ff') - 如果看起来相同,那就相同了。左边的参数是连字符,右边的参数是两个f。另外,不要忘记# - - 编码:utf-8 - - 。