在iText中,阿拉伯文数据在表单展平时消失

在iText中,阿拉伯文数据在表单展平时消失,itext,arabic,pdfstamper,acrofields,Itext,Arabic,Pdfstamper,Acrofields,我使用PDFStamper用一些阿拉伯语数据填充了acrofield。文本消失时,我平坦的形式,而它是工作良好的英语。请导游 BaseFont unicode = null; unicode = BaseFont.createFont("D:/arialuni.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); form.setGenerateAppearances(true); form.addSubstitut

我使用PDFStamper用一些阿拉伯语数据填充了acrofield。文本消失时,我平坦的形式,而它是工作良好的英语。请导游

     BaseFont unicode = null;
     unicode = BaseFont.createFont("D:/arialuni.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
     form.setGenerateAppearances(true);
     form.addSubstitutionFont(unicode);
     form.setField("TextBox","اب اب اب اب اب اب اب اب اب اب اب اب اب اب اب اب اب");
     stamper.setFormFlattening(true);

当您保存、编译或执行代码时,可能是编码问题(这意味着您的问题与iText无关)。这是我尝试过的代码:

PdfReader reader = new PdfReader(src);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
AcroFields form = stamper.getAcroFields();
BaseFont unicode =
    BaseFont.createFont("c:/windows/fonts/arialuni.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
form.addSubstitutionFont(unicode);
form.setField("description", "\u0628\u0627 \u0628\u0627 \u0628\u0627 \u0628\u0627 \u0628\u0627 \u0628\u0627 \u0628\u0627 \u0628\u0627 \u0628\u0627 \u0628\u0627");
stamper.close();
reader.close();
结果是这样的:

我也有同样的问题。 您必须通过adobe acrobat pro重新创建sourec pdf,并将文本框的字体设置为操作系统中已知的字体之一,如arial


祝你好运。

你好,布鲁诺,我尝试了你的代码,在展平表单后,我得到了一个带矩形的空白pdf。请帮忙。我只能在字段可编辑时才能看到阿拉伯数据。我使用的字体有什么问题吗?我们正在尝试从数据库中抽取数据(阿拉伯语字符串不是java代码中硬编码的)。在这种情况下它也不起作用。您使用的是哪个版本的iText?我在我的示例中添加了一条使表单变平的线,得到了一个很好的结果。也许你正在使用一个强大的旧版本的iText,它不支持你想要的东西。另外:如果要从数据库提取数据,请确保使用正确的编码(“UTF-8”)获取字节。我使用的是iText 5.5,数据是以UTF-8编码提取的。我可以在单击文本字段时看到数据(不进行表单展平),但在尝试展平表单时数据消失。