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

Sat May 11, 2024 12:07 am

你好,
我使用下面的代码静默打印文件时, 字体会丢失, 从WPS中直接打印, 没有这个问题, 我没有找到相关的设置, 请求帮助, 谢谢
Code: Select all
//初始化Document实例
Document doc = new Document();

//加载一个Word文档
doc.LoadFromFile("sample.docx");

//获取PrintDocument对象
PrintDocument printDoc = doc.PrintDocument;

//设置PrintController属性为StandardPrintController,用于隐藏打印进程
printDoc.PrintController = new StandardPrintController();

//打印文档
printDoc.Print();

kongyanhua
 
Posts: 16
Joined: Sat May 11, 2024 12:02 am

Sat May 11, 2024 1:21 am

你好,

感谢留言。
关于这个问题建议首先检查一下环境中是否有安装Word文档中用到的字体,我们产品需要在环境中找到对应字体才能正确打印。其次,如果使用的不是我们最新版本Spire.Doc12.4.7,建议从下面下载最新版本测试,因为新版本会包含更多修复。如果还是有问题,请提供测试文件和您的环境信息(如 Windows10)供我们进一步调查,您可以将其附在论坛也可以通过邮件发送给我们(support@e-iceblue.com)。
感谢您的协助调查!

Spire.Doc12.4.7: https://www.e-iceblue.cn/Downloads/Spire-Doc-NET.html

Sincerely,
Doris
E-iceblue support team
User avatar

Doris.Liu
 
Posts: 334
Joined: Mon Nov 07, 2022 8:10 am

Sat May 11, 2024 2:42 am

感谢回复:
使用的是spire.Doc最新版,
windows 10 专业版 1909
系统已经安装了字体 HarmonyOS Sans SC , 在word, wps软件中直接打印是正常的,

测试文件无法通过附件上传

kongyanhua
 
Posts: 16
Joined: Sat May 11, 2024 12:02 am

Sat May 11, 2024 3:33 am

你好,

能将测试文件和打印的结果照片通过邮件发给我们调查吗?感谢您的配合!

Sincerely,
Doris
E-iceblue support team
User avatar

Doris.Liu
 
Posts: 334
Joined: Mon Nov 07, 2022 8:10 am

Sat May 11, 2024 3:37 am

一上传附件就报错, 试了N次都不行

就是用 HarmonyOS Sans SC 字体新建的wps文件. docx类型, 我传了文件, 你那里没有字体也不行啊

打印出来的字体变成了宋体

kongyanhua
 
Posts: 16
Joined: Sat May 11, 2024 12:02 am

Sat May 11, 2024 3:39 am

Doris.Liu wrote:你好,

能将测试文件和打印的结果照片通过邮件发给我们调查吗?感谢您的配合!

Sincerely,
Doris
E-iceblue support team


用另一竞品组件测试, 没有字体缺失的情况, 确定是spire.Doc组件的问题, 对咱们的组件还不太熟悉,

kongyanhua
 
Posts: 16
Joined: Sat May 11, 2024 12:02 am

Sat May 11, 2024 3:41 am

Doris.Liu wrote:你好,

能将测试文件和打印的结果照片通过邮件发给我们调查吗?感谢您的配合!

Sincerely,
Doris
E-iceblue support team


忘了提了, 是在 .NET8项目下, 测试的C#代码

kongyanhua
 
Posts: 16
Joined: Sat May 11, 2024 12:02 am

Sat May 11, 2024 7:35 am

您好,

感谢您的反馈。
我这边下载了HarmonyOS_Sans_SC并模拟一份word文档,在Net8下进行了打印,但是没能重现你提到的问题。为了方便我们进一步调查,请使用下面的代码进行测试,打印后会得到一个PDF文件。测试完成后,请将您的测试文件和生成的PDF文件通过邮件(support@e-iceblue.com)的方式发送给我们,提前感谢。

Sincerely,
William
E-iceblue support team
User avatar

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

Sat May 11, 2024 8:43 am

William.Zhang wrote:您好,

感谢您的反馈。
我这边下载了HarmonyOS_Sans_SC并模拟一份word文档,在Net8下进行了打印,但是没能重现你提到的问题。为了方便我们进一步调查,请使用下面的代码进行测试,打印后会得到一个PDF文件。测试完成后,请将您的测试文件和生成的PDF文件通过邮件(support@e-iceblue.com)的方式发送给我们,提前感谢。

Sincerely,
William
E-iceblue support team


你好, 没有看到你提到的代码

kongyanhua
 
Posts: 16
Joined: Sat May 11, 2024 12:02 am

Sat May 11, 2024 9:19 am

您好,
感谢您的提醒。
抱歉,之前的回复忘了贴上代码了,下面是测试代码。
Code: Select all
Document doc = new Document();
//加载一个Word文档
doc.LoadFromFile("test.docx");
//获取PrintDocument对象
PrintDocument printDoc = doc.PrintDocument;
//设置PrintController属性为StandardPrintController,用于隐藏打印进程
printDoc.PrintController = new StandardPrintController();
printDoc.PrinterSettings.PrinterName = "Microsoft Print to PDF";
printDoc.PrinterSettings.PrintToFile = true;
printDoc.PrinterSettings.PrintFileName = "res.pdf";
//打印文档
printDoc.Print();

Sincerely,
William
E-iceblue support team
User avatar

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

Sat May 11, 2024 10:23 am

William.Zhang wrote:您好,
感谢您的提醒。
抱歉,之前的回复忘了贴上代码了,下面是测试代码。
Code: Select all
Document doc = new Document();
//加载一个Word文档
doc.LoadFromFile("test.docx");
//获取PrintDocument对象
PrintDocument printDoc = doc.PrintDocument;
//设置PrintController属性为StandardPrintController,用于隐藏打印进程
printDoc.PrintController = new StandardPrintController();
printDoc.PrinterSettings.PrinterName = "Microsoft Print to PDF";
printDoc.PrinterSettings.PrintToFile = true;
printDoc.PrinterSettings.PrintFileName = "res.pdf";
//打印文档
printDoc.Print();

Sincerely,
William
E-iceblue support team

测试后文件
https://f.ws59.cn/f/e33fxbqf8xh 复制链接到浏览器打开

kongyanhua
 
Posts: 16
Joined: Sat May 11, 2024 12:02 am

Mon May 13, 2024 2:03 am

你好,

不好意思,您发的文件显示已过期销毁。能重新发送一下文件吗?

Sincerely,
Doris
E-iceblue support team
User avatar

Doris.Liu
 
Posts: 334
Joined: Mon Nov 07, 2022 8:10 am

Mon May 13, 2024 5:39 am

Doris.Liu wrote:你好,

不好意思,您发的文件显示已过期销毁。能重新发送一下文件吗?

Sincerely,
Doris
E-iceblue support team


https://f.ws59.cn/f/e3lyeraxuc6 复制链接到浏览器打开

我看了一下, 用微软内建的pdf打印打印的字体也丢失了,

但尝试了两个同类的组件, 都没有这个情况

kongyanhua
 
Posts: 16
Joined: Sat May 11, 2024 12:02 am

Mon May 13, 2024 7:38 am

您好,

感谢您分享的文件。
您说的字体丢失的意思指的是打印出来的字体不是HarmonyOS Sans SC吗?还是说您那边打印文本会出现缺失的情况?如果是前者的话,请参考下面的代码设置,将HarmonyOS_Sans_SC的字体文件复制到文件夹中,然后将文件夹的路径作为参数传入。如果是后者的话,请提供打印的图片供我们参考调查。

Document.SetGlobalCustomFontsFolders(@".\fonts");

Sincerely,
Doris
E-iceblue support team
User avatar

Doris.Liu
 
Posts: 334
Joined: Mon Nov 07, 2022 8:10 am

Mon May 13, 2024 9:24 am

Doris.Liu wrote:您好,

感谢您分享的文件。
您说的字体丢失的意思指的是打印出来的字体不是HarmonyOS Sans SC吗?还是说您那边打印文本会出现缺失的情况?如果是前者的话,请参考下面的代码设置,将HarmonyOS_Sans_SC的字体文件复制到文件夹中,然后将文件夹的路径作为参数传入。如果是后者的话,请提供打印的图片供我们参考调查。

Document.SetGlobalCustomFontsFolders(@".\fonts");

Sincerely,
Doris
E-iceblue support team


打印出来的效果和上面代码(将文件通过微软的虚拟打印出来的PDF)效果一样, 打印文本没有缺失, 就是字体变了
另外, 把字体文件复制到文件夹, 这个太不现实了, 根本无法部署, 我就不尝试了
我试用下面的组件, 还有两个也试了, 就不贴了, 都没有咱们的上面的情况
https://www.gemboxsoftware.com/document ... t-word/351

kongyanhua
 
Posts: 16
Joined: Sat May 11, 2024 12:02 am

Return to 中文技术支持