【发布时间】:2018-02-19 16:16:34
【问题描述】:
我正在使用 iText7。
我的课程在服务器上使用 pdf 文件(它是带有西里尔符号的模板)。
首先我阅读了文件。 其次,我编辑了一些信息并尝试将其保存在我的本地计算机上,但是我遇到了问题。我的新文本显示不正确。
如果我使用 ttf 字体创建一个新的 pdf 文件并将其添加到新创建的 pdf 文件中,一切正常,但如果我修改我的模板,则文本不正确(仅适用于西里尔字母)。
我正在尝试使用官方网站上的一个简单示例 - http://developers.itextpdf.com/examples/stamping-content-existing-pdfs/clone-replacing-pdf-objects
这是我的代码的相关部分:
PdfDocument document = new PdfDocument(new PdfReader(template), new PdfWriter(dest));
PdfPage page = document.getFirstPage();
PdfDictionary dictionary = page.getPdfObject();
PdfObject object = dictionary.get(PdfName.Contents);
if (object instanceof PdfStream) {
PdfStream stream = (PdfStream) object;
byte[] data = stream.getBytes(true);
stream.setData(new String(data).replace("user_fio", "Петров А.А.").getBytes("utf-8"));
}
document.close();
我正在尝试使用语言环境:http://www.oracle.com/technetwork/java/javase/javase7locales-334809.html
但结果是“????? ?.?.”或类似的东西。
我做错了什么?谢谢!
【问题讨论】:
-
如果您阅读我在您所引用的示例中添加的评论,您会看到我写道:这是一种快速而肮脏的方法(尤其是非常肮脏)和 你可以严重搞砸布局。在您的情况下,您将一种字体的文本替换为完全不同字体的文本,期望这会简单地工作。没那么简单。你不应该断章取义地使用这个例子。该示例仅适用于 PDF 专家,您不是 PDF 专家。 你在做什么错,不是问题。真正的问题是你没有做错什么!