为有中文需求的客户提供多渠道中文技术支持.

Fri Jun 09, 2023 4:10 am

问题:
为何要点选栏位才可以看到文字? (验证测试程式码2的结果)

系统环境
- Windows11 Traditional Chinese

安装字型
- 使用附件中的TEST-Plus-Kai.ttf
- 档案总管中点选此字型档按右键, 必需选择"为所有使用者安装".

开发环境
- VS2022, .net 7
- 安装 Spire.PDF Latest Stable 9.6.0

附件
1.TEST-Plus-Kai-98.ttf
2.F91E1字码的实际显示样示.jpg
3.EmbedGridInCell.pdf
4.我测试产生的:TEST-Plus-Kai-98_embedded.pdf

测试程式码1: 使用Windows11 Traditional Chinese的标楷体
Code: Select all
// 加载PDF文件
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile("C:\\temp\\EmbedGridInCell.pdf");
// 获取表单字段
PdfFormWidget form = pdf.Form as PdfFormWidget;
// 检查表单是否存在
if (form != null)
{
    // 查找名为"txt_Guardian"的表单字段
    var fieldName = "txt_Guardian";
    //遍历所有域名
    for (int i = 0; i < form.FieldsWidget.Count; i++)
    {
        PdfField field = form.FieldsWidget.List[i] as PdfField;
        if (field is PdfTextBoxFieldWidget)
        {
            PdfTextBoxFieldWidget textBoxField = field as PdfTextBoxFieldWidget;
            //为textbox填入文本设置字体: 若您的windows没有该中文字体, 请自行换成"宋体"或其它windows中的中文字体
            textBoxField.Font = new PdfTrueTypeFont(new Font("DFKai-SB", 16f, FontStyle.Regular), true);
            textBoxField.Text = $"你好{char.ConvertFromUtf32(0xF91E1)}!";
        }
    }
}
// 保存填充后的PDF文件
pdf.SaveToFile("DFKai-SB_test_output.pdf");
pdf.Close();


验证测试程式码1的结果
1.使用Adobe Acrobat Reader开启DFKai-SB_test_output.pdf
2.可以看到"你好 !". 其中空白部份是'0xF91E1'字码

---
测试程式码2: 使用Windows11 Traditional Chinese的自建字型TEST-Plus-Kai-98

测试程式码2: 使用Windows11 Traditional Chinese的自建字型TEST-Plus-Kai-98
Code: Select all
// 加载PDF文件
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile("C:\\temp\\EmbedGridInCell.pdf");
// 获取表单字段
PdfFormWidget form = pdf.Form as PdfFormWidget;
// 检查表单是否存在
if (form != null)
{
    // 查找名为"txt_Guardian"的表单字段
    var fieldName = "txt_Guardian";
    //遍历所有域名
    for (int i = 0; i < form.FieldsWidget.Count; i++)
    {
        PdfField field = form.FieldsWidget.List[i] as PdfField;
        if (field is PdfTextBoxFieldWidget)
        {
            PdfTextBoxFieldWidget textBoxField = field as PdfTextBoxFieldWidget;
            //为textbox填入文本设置自建字体
            textBoxField.Font = new PdfTrueTypeFont(new Font("TEST-Plus-Kai-98", 16f, FontStyle.Regular), true);
            textBoxField.Text = $"你好{char.ConvertFromUtf32(0xF91E1)}!";
        }
    }
}
// 保存填充后的PDF文件
pdf.SaveToFile("TEST-Plus-Kai-98_test_output.pdf");
pdf.Close();


验证测试程式码2的结果
1.使用Adobe Acrobat Reader开启TEST-Plus-Kai-98_test_output.pdf.pdf
2.在表单栏位完全看不到"你好 !"的字. 点选该栏位后, 4个字都正常显示. => 问题: 为何要点选栏位才可以看到文字?
3.检视PDF内容的字型资料, 显示TEST-Plus-Kai-98字型已经内嵌. (附件:TEST-Plus-Kai-98_embedded.pdf)

tonychen1201
 
Posts: 20
Joined: Fri Mar 11, 2022 1:01 am

Fri Jun 09, 2023 9:19 am

您好,

感谢您的咨询。
如果使用了自建字体,为了保证字体能够正确显示,可以在保存文档前调用以下代码来进行测试。如果您还有任何问题,请随时与我们联系。
Code: Select all
pdf.Form.NeedAppearances = true


Sincerely,
Swain
E-iceblue support team
User avatar

Swain.Wang
 
Posts: 34
Joined: Thu Jun 01, 2023 3:55 am

Mon Jun 12, 2023 9:28 am

Code: Select all
form.NeedAppearances = true;
使用的结果:
1. 使用Adobe Acrobat Reader开启PDF, 可以直接看到文字.
2. 但是将PDF用Edge或Chrome开启, 则看不到文字, 只有看到'!'

请问第2点有办法解决吗?

tonychen1201
 
Posts: 20
Joined: Fri Mar 11, 2022 1:01 am

Tue Jun 13, 2023 2:10 am

您好,

感谢您的反馈。
经过测试,我的确重现了您提到的问题。我们已将该问题记录到我们跟踪系统中,问题编号为:SPIREPDF-6055。我们的开发人员会进一步调查并确认是否有任何可以修复的方案,如果有进展我们会及时通知您。抱歉对您造成不便。

Best regards,
Swain
E-iceblue support team
User avatar

Swain.Wang
 
Posts: 34
Joined: Thu Jun 01, 2023 3:55 am

Tue Jun 13, 2023 2:59 am

谢谢你, 期待贵团队的好消息.

tonychen1201
 
Posts: 20
Joined: Fri Mar 11, 2022 1:01 am

Tue Jun 13, 2023 6:11 am

您好

感谢您的回复。
如果有进展了我们会第一时间通知您。如果您还有任何其它问题,请随时与我们联系。祝您一切顺利。

Best regards,
Swain
E-iceblue support team
User avatar

Swain.Wang
 
Posts: 34
Joined: Thu Jun 01, 2023 3:55 am

Sun Jul 02, 2023 3:36 am

请问这个问题已经获得解决了吗?

tonychen1201
 
Posts: 20
Joined: Fri Mar 11, 2022 1:01 am

Mon Jul 03, 2023 10:12 am

您好,

感谢您的跟进。
抱歉,开发反馈0xF91E1这个编码大于有效 Unicode 码点范围,它会被转换成两个char,但是我们Spire.PDF在字体文件里匹配的时候,是用的一个charCode去找一个对应的字形,所以这一个编码无法匹配到字形, 构建的嵌入式字体文件也就缺少了这个字形,浏览器也就不能从嵌入式字体文件里加载到对应的字形造成此部分内容不显示。对于这个问题,我们无法区分一个字符串转成char数组后,哪些能够正常转换,哪些是由一个unicode转换得到的两个char。很抱歉这个问题目前无法解决,抱歉对你造成的不便。

Sincerely,
William
E-iceblue support team
User avatar

William.Zhang
 
Posts: 767
Joined: Mon Dec 27, 2021 2:23 am

Return to 中文技术支持

cron