关于c#窗口应用程序静默打印问题(已解决2021 3 29)
目录
废话不多说 引入库
通过NuGet安装
库名
PdfiumViewer
PdfiumViewer.Native.x86_64.v8-xfa
或者
32 位的
关于引入包的问题这里我遇到64位库文件报错 我这里没事用用32位的,看了下网上教程需自己重新编译
打印机设置
public void printset(string printer ,string sourpath,Duplex Duplexs) {
//string printerName = @"HP LaserJet Pro MFP M128fp";
//string filename = @"D:\Discrete Job Pick List Report\11.pdf";
string printerName=printer;
string filename = sourpath;
string pageSize = "A4";//[54] = {[PaperSize 用户定义大小 Kind=Custom Height=1169 Width=827]}{[PaperSize B5 ISO Kind=Custom Height=984 Width=693]}[42] = {[PaperSize 8" x 10.5" Kind=Custom Height=1050 Width=800]}
PrintPDF(printerName, pageSize, filename, 1,Duplexs);
// PrintPdf(filename);
Console.ReadLine();
//pdfPrint("D:\\Job Order\\111.pdf");
}
在这里插入代码片
这是 纸张设置 打印机名 和pdf文件路径 还有双面打印的翻转
标题静默打印代码
public static bool PrintPDF(string printer, string paperName, string filename, int copies,Duplex Duplexs)
{
try{
// iTextSharp.text.Rectangle pageSize = new iTextSharp.text.Rectangle(600, 830);
// pageSize.Left = -80;
// PdfReader reader = new PdfReader(filename);
// Document doc = new Document(pageSize, 0, 0, 0, 0);
// PdfWriter writer = PdfWriter.GetInstance(doc,
// new FileStream(".\\ccy.pdf", FileMode.Create));
// doc.Open();
// PdfContentByte cb;
// PdfImportedPage page;
// for(int i=1;i<=reader.NumberOfPages;i++)
// {
// if (i % 2 == 0) { doc.PageSize.Left = 0; }
// else {
// doc.PageSize.Left = 90;
// }
// doc.NewPage();
// cb = writer.DirectContent;
// page = writer.GetImportedPage(reader, i); //page #1
// cb.AddTemplate(page,0,0);
// //cb.AddTemplate(page,Scale,Scale,true,Scale,Scale,Scale,t
//}
// doc.Close();
//iTextSharp.text.Rectangle pageSize = new iTextSharp.text.Rectangle(1000, 500);
// Document document = new Document(pageSize, 10, 10, 120, 80);
//PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(filename, FileMode.Create));
//writer.Close();
//filename = ".\\ccy.pdf";
// Create the printer settings for our printer
var printerSettings = new PrinterSettings
{
PrinterName = printer,
Duplex = Duplexs,
Copies = (short)copies,
//双面打印开关
};
// Create our page settings for the paper size selected
var pageSettings = new PageSettings(printerSettings)
{
Margins=new Margins(0,0,0,0),
};
foreach (PaperSize paperSize in printerSettings.PaperSizes)
{
if (paperSize.PaperName == paperName)
{
pageSettings.PaperSize = paperSize;
//pageSettings.Landscape = false;
break;
}
}
// Now print the PDF document
using (var document = PdfiumViewer.PdfDocument.Load(filename))
{
using (var printDocument = document.CreatePrintDocument())
{
printDocument.PrinterSettings = printerSettings;
printDocument.DefaultPageSettings = pageSettings;
printDocument.PrintController = new StandardPrintController();
printDocument.Print();
}
}
return true;
}
catch
{
return false;
}
}
关于pdf打印为啥设边距没用
#公司小美女说pdf不可以在打印预览中设置边距
有谁知道请告知