IText - 使用PdfDictionary和PDF Stamper编辑西班牙文档

时间:2017-11-01 23:40:41

标签: java pdf character-encoding itext character-set

我正在尝试使用itext读取文档并替换其中的字符串。但是一旦被操纵,所有西班牙人的角色就变成了垃圾人物。以下是更改pdf的代码。

{{1}}

在实际的pdf中有一个字符串$ {address-line-one},我将其替换为“20th Street”

这有效,但是这个西班牙语单词在流

Documentación成为Documentaci�n

和其他西班牙语一样。

我还在java控制台中打印了bytes [],发现读取本身没有正确获得该字符。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您使用

new String(data)

将字节转换为字符串(使用一些默认编码)和

dataString.getBytes("UTF-8")

将字符串转回字节(使用utf-8)。

因此,如果第一个操作中的默认编码与utf-8不匹配,则这些转换将创建如上所示的伪像。

所以请使用

new String(data, encoding)

dataString.getBytes(encoding)

代替。

话虽如此,utf-8在这里是一个非常不合适的编码,使用的是拉丁语-1 / ISO-8559-1。

据说您编辑内容的方法仅适用于非常具体的PDF。特别是使用过的字体的编码必须是 WinAnsiEncoding 和行或"字段"必须在每个指令中绘制。此外,您的替换文件不得长于替换文本,并且不得包含Latin-1和WinAnsiEncoding不同的字符或PDF格式中具有特殊含义的字符,并且您必须确保不会偶然更改字符串。