C#静默打印 PDF

C#静默打印 PDF

本次使用第三方dll进行打印:


静默打印

: 选择电脑中默认打印机打印

using Spire.Pdf;

PdfDocument doc = new PdfDocument();
doc.LoadFromFile(@"C:\xxx.pdf", FileFormat.PDF);
Console.WriteLine(doc.UsedFonts);
PrintDocument printDoc = doc.PrintDocument;
printDoc.PrintController = new StandardPrintController();
printDoc.Print();
doc.Close();

不做任何设置的静默打印(有时)会有问题

开发的时候一直都有问题,但是问题解决之后,在来测试一下,发现不会出现问题了,很奇怪。(找不到有问题的pdf了就不放图了)

在这里说明一下
打印的pdf字形看不清楚,看上去只有半个字的样子,只有中文有问题,英文没问题

刚开始不清楚原因,因为自己新建的PDF打印也会有这个问题,就没往字体那方面想了,最后和前辈商量了一下,决定还是要确定一下是否是字体的问题,果真

##解决方法
替换原PDF文件的字体,保存为新PDF,最后打印新PDF
完整代码

using Spire.Pdf;
using Spire.Pdf.Graphics;
using Spire.Pdf.Graphics.Fonts;

PdfDocument doc = new PdfDocument();
//加载的打印PDF文件
doc.LoadFromFile(@"D:\xxx.pdf");
//获取pdf字体
PdfUsedFont[] fonts = doc.UsedFonts;
//获取自定义字体
String fontFileName = "kaiu.ttf";
Font newFont = new Font(fontFileName, 11f);
PdfTrueTypeFont newPDFFont = new PdfTrueTypeFont(newFont, true);
try {
   //替换pdf字体
   foreach (PdfUsedFont font in fonts) {
       font.Replace(newPDFFont);
   }
} catch (Exception) {
//会出现一个字体已存在的错误,不用管
}
//新PDF名字
String newPdfFileName = "new" + "xxx.pdf";
//保存新字体PDF
doc.SaveToFile(@path + newPdfFileName);
//暂停0.5秒
Thread.Sleep(500);

//打印pdf
doc = new PdfDocument();
doc.LoadFromFile(@path + newPdfFileName, FileFormat.PDF);
PrintDocument printDoc = doc.PrintDocument;
printDoc.PrintController = new StandardPrintController();
printDoc.Print();
doc.Close();
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值