前言
PDF是一種常用的文件格式,實現其打印、查看操作是較為常見的需求。例如打印PDF格式的快遞面單、發票等。如何通過編寫C#代碼實現打印、查看需求,可以使用一些三方C#組件庫。如Spire.PDF for .NET、PdfiumViewer等,本文介紹使用PdfiumViewer實現方式。
PdfiumViewer
PdfiumViewer 是基于 Pdfium 庫的.NET PDF查看器組件。可以使我們輕松地在應用程序中嵌入PDF文檔,對文檔的查看與打印。(或其他基于 Pdfium 庫.NET庫)。.NET Framework》PdfiumViewer;.NET 6》PdfiumViewer.Core
1、使用和附錄
https://github.com/pvginkel/PdfiumViewer
https://github.com/TimChen44/PdfiumViewer.Core
PdfiumViewer.Native.x86_64.v8-xfa:64位的Pdfium。PdfiumViewer.Native.x86.v8-xfa:32位的Pdfium。
2、使用的類或控件
類名 | 描述 |
---|
PdfDocument | 用于呈現 PDF 文檔的類。 |
PdfRenderer | 用于呈現 PdfDocument 的控件類。 |
PdfViewer | 托管 PdfRenderer 的控件。 |
示例代碼
1、打印示例
/// <summary>
/// 靜默打印
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void buttonPrint_Click(object sender, EventArgs e)
{
try
{
string printerName = "Microsoft Print to PDF";
string documentName = Guid.NewGuid().ToString("N");
short printCopies = 1;
//
string fileName = string.Format(@"D:\Temp\{0}", "20240512193805.pdf");
// 判斷文件是否存在
if (!File.Exists(fileName))
{
MessageBox.Show(string.Format("【{0}】文件不存在!",fileName));
return;
}
// 讀取文件內容
byte[] fileBuffer = File.ReadAllBytes(fileName);
// 將字節內容轉為流
MemoryStream memoryStream = new MemoryStream(fileBuffer);
//
fileBuffer = null;
// 開始組件裝載文件
using (PdfiumViewer.PdfDocument pdfDocument = PdfiumViewer.PdfDocument.Load(memoryStream))
{
// 創建文檔輸出發送到打印機對像
PrintDocument printDocument = pdfDocument.CreatePrintDocument();
// 將文檔打印到打印機
printDocument.PrintController = new StandardPrintController();
if (!string.IsNullOrEmpty(printerName))
{
// 輸出的目標打印機
printDocument.PrinterSettings.PrinterName = printerName;
}
// 打印文檔名稱
printDocument.DocumentName = documentName;
// 打印份數
printDocument.PrinterSettings.Copies = printCopies;
// 開始發送打印
printDocument.Print();
}
}
catch(Exception exception)
{
MessageBox.Show(exception.Message);
}
}
2、查看示例
/// <summary>
/// 打開閱讀
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
try
{
// PDF 文件
string fileName = string.Format(@"D:\Temp\{0}", "20240512193805.pdf");
// 判斷文件是否存在
if (!File.Exists(fileName))
{
MessageBox.Show(string.Format("【{0}】文件不存在!", fileName));
return;
}
// 開始組件裝載文件
PdfiumViewer.PdfDocument pdfDocument = PdfiumViewer.PdfDocument.Load(fileName);
this.pdfViewer.Document = pdfDocument;
this.pdfViewer.Show();
}
catch (Exception exception)
{
MessageBox.Show(exception.Message);
}
}
3、其它示例
/// <summary>
/// 其它
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void buttonOther_Click(object sender, EventArgs e)
{
try
{
// PDF文件
string fileName = string.Format(@"D:\Temp\{0}", "20240512193805.pdf");
// 判斷文件是否存在
if (!File.Exists(fileName))
{
MessageBox.Show(string.Format("【{0}】文件不存在!", fileName));
return;
}
// 開始組件裝載文件
using (PdfiumViewer.PdfDocument pdfDocument = PdfiumViewer.PdfDocument.Load(fileName))
{
// 獲取文檔總頁數
int pageCount = pdfDocument.PageCount;
// 獲取文件信息
PdfInformation pdfInformation = pdfDocument.GetInformation();
// 在文件中搜索指定內容
var finder = pdfDocument.Search("文本",false,false);
}
}
catch (Exception exception)
{
MessageBox.Show(exception.Message);
}
}
小結
以上是PdfiumViewer組件簡單介紹,通過實現打印與查看示例了解其使用方式。對.NET 6及以上版本使用PdfiumViewer.Core,有興趣的可以試試。
該文章在 2024/7/2 8:35:40 編輯過