使用aspose.pdf写入英文字母时会出现下标显示不全的问题。

使用Aspose.PDF Java 24.5先用aspose.word将word转PDF,然后再用aspose.PDF生成pdf文件,文本域字体属性设置为DFKai-SB时,使用aspose.pdf写入英文字母时会出现下标显示不全的问题。


用word生成文本域字体为DFKail-SB文件.pdf (236.8 KB)

@SalesDhorde 出现该问题的原因可能是 PDF 文档中使用了字体子集。您尝试过完整字体嵌入吗?

Document doc = new Document("C:\\Temp\\in.docx");
        
PdfSaveOptions opt = new PdfSaveOptions();
opt.setEmbedFullFonts(true);
        
doc.save("C:\\Temp\\out.pdf", opt);

我们这边其实是在用aspose.pdf往文本域中插入内容且设置居底的时候英文字符偏下导致显示不全,好像和word转pdf没关系

我们这边也尝试使用aspose.word,调opt.setEmbedFullFonts(true);生成一份完整嵌入字体的pdf去做插入文本域的操作,依然没有达到想要的效果,这个效果做不出来,就是希望图中的ggg底部不被遮住

@SalesDhorde

如果您可以分享您使用 Aspose.PDF 在字段中添加文本的示例代码片段吗?我们将在我们的环境中测试该场景并相应地解决它。

Document document = new Document(“D:\TestFolder\转换前文档.pdf”);
// 获取指定名称的文本域
TextBoxField textBoxField = (TextBoxField) document.getForm().get(“field”);
// 设置文本居底
textBoxField.setTextVerticalAlignment(VerticalAlignment.Bottom);
// 填充文本内容
textBoxField.setValue(“abcdefghijklmnopqrstuvwxyz”);
textBoxField.updateAppearances();
document.save(“D:\TestFolder\转换后文档.pdf”);
document.close();

@SalesDhorde

看起来您的 PDF 中没有名为“field”的表单字段。您能分享该字段的正确名称吗?对于您遇到的麻烦,我们深表歉意。

转换前文档.pdf (109.8 KB)

@SalesDhorde

使用您共享的文件,我们无法复制该问题,即在填写表单字段时,一些英文字母被截断,例如“g”字符。您能否分享在您的环境中生成的输出 PDF,并且存在与上述相同的问题?

转换后文档.pdf (304.1 KB)

@SalesDhorde

image.png (3.1 KB)

这就是我们在使用 24.7 版本 API 时在环境中获取输出的方式。

你们在重现问题时,文本的垂直对齐方式没有设置为居底,我之前提供的代码中有一行是设置文本居底的:
// 设置文本居底
textBoxField.setTextVerticalAlignment(VerticalAlignment.Bottom);

@SalesDhorde

我们已在内部问题跟踪系统中打开以下新票证,并将根据 Free Support Policies 中提到的条款提供修复。

问题 ID:PDFJAVA-44193

如果您需要优先支持,以及直接联系我们的付费支持管理团队,您可以获取 Paid Support Services