PdfiumViewer庫簡介
PdfiumViewer是一款基于谷歌開源PDF渲染引擎PDFium的.NET庫,主要用于在Windows應用程式中顯示和處理PDF文檔。PdfiumViewer提供了多種API和控件,使得開發者可以輕松地将PDF文檔嵌入到其應用程式中。同時,PdfiumViewer還支援多種平台,包括Windows、Linux以及MacOS。
PdfiumViewer庫使用場景
PdfiumViewer适用于各種需要在應用程式中顯示和處理PDF文檔的場景。比如,可以将PdfiumViewer用于制作PDF閱讀器、PDF編輯器、報告生成器等。
PdfiumViewer庫的架構設計群組件子產品
PdfiumViewer的架構設計主要包含以下幾個元件子產品:
- PDF Rendering:PDF Rendering是PdfiumViewer的核心子產品,主要用于解析和渲染PDF文檔。該子產品包含多個類,如PDFDocument、PDFPage、PDFRenderer等,用于描述PDF文檔的各個部分,并将它們渲染到螢幕上。
- Input Handling:Input Handling是PdfiumViewer的輸入處理子產品,負責處理使用者與PDF文檔的互動。該子產品包含多個類,如PDFMouseHandler、PDFKeyboardHandler等,用于響應滑鼠、鍵盤事件,實作PDF文檔的滾動、縮放等功能。
- User Interface:User Interface是PdfiumViewer的使用者界面子產品,負責實作PDF文檔的顯示和控制。該子產品包含多種UI控件,如PDFViewControl、PDFSearchControl、PDFBookmarkControl等,用于顯示PDF文檔内容并提供互動功能。
PdfiumViewer庫的優點和缺點
PdfiumViewer的優點包括:
- 高品質渲染:PdfiumViewer基于PDFium引擎實作,能夠對PDF文檔進行高品質的渲染和展示,保證了PDF文檔在應用程式中的可視化效果。
- 輕量級:PdfiumViewer是一款輕量級的庫,易于學習和使用,同時也占用較少的計算機資源。
- 跨平台支援:PdfiumViewer支援多種平台,包括Windows、Linux以及MacOS,友善開發者進行跨平台開發。
PdfiumViewer的缺點包括:
- 輸入處理相對簡單:PdfiumViewer對使用者輸入的處理相對簡單,無法滿足進階使用者互動的需求。
- 文檔較少:由于PdfiumViewer是一個相對較新的庫,目前的文檔比較少,需要自行閱讀源碼或查找社群資源。
PdfiumViewer的基本功能和代碼示例。
加載PDF文檔
要在PdfiumViewer中加載PDF文檔,需要使用PdfiumViewer.PdfDocument類。使用Load方法加載指定路徑的PDF文檔。Load方法傳回PdfDocument對象,用于描述PDF文檔的各個部分。
using PdfiumViewer;
// Load a PDF document from a file
using (var document = PdfDocument.Load("sample.pdf"))
{
// Use the document object
}
渲染PDF文檔
PdfiumViewer支援多種方式渲染PDF文檔,包括渲染到螢幕、渲染到記憶體和渲染到檔案。下面分别介紹這三種方式。
渲染到螢幕
要将PDF文檔渲染到螢幕上,需要使用PdfViewerControl控件。将PdfDocument對象指派給PdfViewerControl的Document屬性,即可在控件中顯示PDF文檔。
using PdfiumViewer;
// Create a PdfViewerControl
var viewer = new PdfViewerControl();
// Load a PDF document from a file
using (var document = PdfDocument.Load("sample.pdf"))
{
// Set the document object to the PdfViewerControl
viewer.Document = document;
// Add the viewer control to a parent container
this.MyGrid.Children.Add(viewer);
}
渲染到記憶體
要将PDF文檔渲染到記憶體中,需要使用PdfiumViewer.PdfRenderer類。将PdfDocument對象和指定的頁面參數傳遞給PdfRenderer的Render方法,即可獲得一個Bitmap對象,該對象包含渲染後的圖像資料。
using System.Drawing;
using PdfiumViewer;
// Load a PDF document from a file
using (var document = PdfDocument.Load("sample.pdf"))
{
// Create a PdfRenderer object
var renderer = new PdfRenderer(document);
// Render the first page of the PDF to a Bitmap object
Bitmap bitmap = renderer.Render(0, 300, 300, true);
// Use the bitmap object
}
渲染到檔案
要将PDF文檔渲染到檔案中,需要使用PdfiumViewer.PdfRenderer類。将PdfDocument對象和指定的頁面參數傳遞給PdfRenderer的RenderToStream方法,即可将渲染後的圖像資料寫入到指定的檔案流中。
using System.IO;
using PdfiumViewer;
// Load a PDF document from a file
using (var document = PdfDocument.Load("sample.pdf"))
{
// Create a PdfRenderer object
var renderer = new PdfRenderer(document);
// Render the first page of the PDF to a file stream
using (var fileStream = new FileStream("page1.png", FileMode.Create))
{
renderer.RenderToStream(0, fileStream, ImageFormat.Png);
}
}
處理PDF文檔
PdfiumViewer提供了多種API,用于處理PDF文檔。下面介紹一些常用的API。
擷取PDF文檔資訊
要擷取PDF文檔的各種資訊,需要使用PdfiumViewer.PdfDocument類的相應屬性。比如,可以擷取PDF文檔的标題、作者、頁數等資訊。
using PdfiumViewer;
// Load a PDF document from a file
using (var document = PdfDocument.Load("sample.pdf"))
{
// Get the title of the PDF document
string title = document.Title;
// Get the author of the PDF document
string author = document.Author;
// Get the number of pages in the PDF document
int pageCount = document.PageCount;
}
擷取PDF頁面資訊
要擷取PDF頁面的各種資訊,需要使用PdfiumViewer.PDFPage類的相應屬性。比如,可以擷取PDF頁面的大小、旋轉角度等資訊。
using PdfiumViewer;
// Load a PDF document from a file
using (var document = PdfDocument.Load("sample.pdf"))
{
// Get the first page of the PDF document
PdfPage page = document.Pages[0];
// Get the size of the PDF page
SizeF size = page.Size;
// Get the rotation angle of the PDF page
int rotation = page.Rotation;
}
搜尋PDF文本
要搜尋PDF文本,需要使用PdfiumViewer.PdfTextFinder類。将PdfDocument對象和指定的搜尋字元串傳遞給PdfTextFinder的Search方法,即可獲得一個PdfTextMatches對象,該對象包含比對結果的詳細資訊。
using PdfiumViewer;
// Load a PDF document from a file
using (var document = PdfDocument.Load("sample.pdf"))
{
// Create a PdfTextFinder object
var finder = new PdfTextFinder(document);
// Search for a string in the PDF document
PdfTextMatches matches = finder.Search("search string");
// Use the matches object
}
使用WPF代碼案例介紹PdfiumViewer庫用法
下面是一個WPF程式中使用PdfiumViewer庫的完整執行個體。
示例包含一個MainWindow視窗,其中包含一個Button控件和一個Grid控件。點選Button控件會調用ShowPDF方法,在Grid控件中顯示PDF文檔。
同時,需要将PdfiumViewer庫的dll檔案添加到項目中,并在代碼中引用。
using System.Windows;
using System.Windows.Controls;
using PdfiumViewer;
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
ShowPDF();
}
private void ShowPDF()
{
// Create a PDFDocument object from a file
using (var document = PdfDocument.Load("sample.pdf"))
{
// Create a PDFViewerControl object and set its document property
var viewer = new PdfViewerControl { Document = document };
// Add the viewer control to a parent container
this.MyGrid.Children.Add(viewer);
}
}
}
在XAML中,添加以下控件:
<Window x:Class="WpfApp1.MainWindow"
...
xmlns:pdf="clr-namespace:PdfiumViewer.Wpf;assembly=PdfiumViewer.Wpf">
<Grid>
<Button Content="Show PDF" Click="Button_Click"/>
<Grid x:Name="MyGrid"/>
</Grid>
</Window>
以上代碼會在MainWindow視窗中添加一個Button和一個Grid控件。當按鈕被點選時,調用ShowPDF方法,在Grid控件中顯示PDF文檔。需要確定将PdfiumViewer庫的dll檔案添加到項目中,并在代碼中引用。也可以通過NuGet包管理器安裝PdfiumViewer庫。
總結PdfiumViewer庫
PdfiumViewer是一款基于PDFium引擎的.NET庫,适用于各種需要在應用程式中顯示和處理PDF文檔的場景。它提供了多種API和控件,使得開發者可以輕松地将PDF文檔嵌入到其應用程式中。同時,PdfiumViewer還支援多種平台,具有良好的跨平台支援。開發者可以根據自己的需求來選擇合适的PDF處理庫。