基于WPF實(shí)現(xiàn)PDF的顯示與轉(zhuǎn)換
1.NuGet安裝
O2S.Components.PDFView4NET.WPF

2.添加組件
工具箱中,空白處 右鍵,選擇項(xiàng)

WPF組件 界面,選擇NuGet安裝庫(kù)對(duì)面路徑下的 O2S.Components.PDFView4NET.WPF.dll



3.引入組件命名空間并使用
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:PDFView"
xmlns:PageViewWPF="clr-namespace:O2S.Components.PDFView4NET.WPF;assembly=O2S.Components.PDFView4NET.WPF"
x:Class="PDFView.MainWindow"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800" Loaded="Window_Loaded">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<PageViewWPF:PDFPageView x:Name="PdfControl" HorizontalAlignment="Left" Height="auto" VerticalAlignment="Top" Width="auto" PageDisplayLayout="Custom" WorkMode="PanAndScan" HighlightFormFields="True"/>
</Grid>
</Window>using O2S.Components.PDFView4NET;
using System.Windows;
namespace PDFView
{
/// <summary>
/// MainWindow.xaml 的交互邏輯
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
PdfControl.Document = new PDFDocument() { FilePath = ".\\4.pdf" };
}
}
}4.PDF轉(zhuǎn)換成圖片
聽(tīng)說(shuō)有破解版(無(wú)水?。?,找到了兩個(gè)版本兩個(gè)不同O2S.Components.PDFRender4NET破解版

版本2.0.1.0 對(duì)于測(cè)試PDF,使用正常
版本4.5.1.2 對(duì)于測(cè)試PDF,使用異常
PdfToImage(".\\4.pdf", Environment.CurrentDirectory, "4", ImageFormat.Png, Definition.Eight);/// <summary>
/// PDF文檔所有頁(yè)全部轉(zhuǎn)換為圖片
/// </summary>
/// <param name="pdfInputPath">PDF文件流</param>
/// <param name="imageOutputPath">圖片輸出路徑</param>
/// <param name="imageName">生成圖片的名字</param>
/// <param name="imageFormat">設(shè)置所需圖片格式</param>
/// <param name="definition">設(shè)置圖片的清晰度,數(shù)字越大越清晰</param>
public static void PdfToImage(string pdfStream, string imageOutputPath, string imageName, ImageFormat imageFormat, Definition definition)
{
PDFFile pdfFile = PDFFile.Open(pdfStream);
int startPageNum = 1;
int endPageNum = pdfFile.PageCount;
for (int i = startPageNum; i <= endPageNum; i++)
{
try
{
Bitmap pageImage = pdfFile.GetPageImage(i - 1, 56 * (int)definition);
int canKao = pageImage.Width > pageImage.Height ? pageImage.Height : pageImage.Width;
int newHeight = canKao > 1080 ? pageImage.Height / 2 : pageImage.Height;
int newWidth = canKao > 1080 ? pageImage.Width / 2 : pageImage.Width;
Bitmap newPageImage = new Bitmap(newWidth, newHeight);
Graphics g = Graphics.FromImage(newPageImage);
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
g.DrawImage(pageImage, new Rectangle(0, 0, newWidth, newHeight),
new Rectangle(0, 0, pageImage.Width, pageImage.Height), GraphicsUnit.Pixel);
newPageImage.Save(imageOutputPath + imageName + (endPageNum >= 2 ? ("-" + i) : "") + "." + imageFormat);//+ i.ToString() imageFormat
g.Dispose();
newPageImage.Dispose();
pageImage.Dispose();
}
catch (Exception ex)
{
string ss = ex.ToString();
}
}
pdfFile.Dispose();
}
/// <summary>
/// 轉(zhuǎn)換的圖片清晰度,1最不清醒,10最清晰
/// </summary>
public enum Definition
{
One = 1, Two = 2, Three = 3, Four = 4, Five = 5, Six = 6, Seven = 7, Eight = 8, Nine = 9, Ten = 10
}5.官方代碼庫(kù)鏈接
PDFView4NET https://github.com/o2solutions/pdfview4net/tree/main
到此這篇關(guān)于基于WPF實(shí)現(xiàn)PDF的顯示與轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)WPF PDF內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#實(shí)現(xiàn)判斷字符串中是否包含中文的方法
這篇文章主要介紹了C#實(shí)現(xiàn)判斷字符串中是否包含中文的方法,非常實(shí)用的功能,需要的朋友可以參考下2014-08-08
使用c#實(shí)現(xiàn)隨機(jī)數(shù)猜數(shù)游戲的示例代碼
這篇文章主要介紹了使用c#實(shí)現(xiàn)隨機(jī)數(shù)猜數(shù)游戲的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
C#獲取鼠標(biāo)在listview右鍵點(diǎn)擊單元格的內(nèi)容方法
下面小編就為大家?guī)?lái)一篇C#獲取鼠標(biāo)在listview右鍵點(diǎn)擊單元格的內(nèi)容方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-01-01
C#中this用法系列(二) 通過(guò)this修飾符為原始類型擴(kuò)展方法
定義一個(gè)靜態(tài)類,類中定義靜態(tài)方法,方法中參數(shù)類型前邊加上this修飾符,即可實(shí)現(xiàn)對(duì)參數(shù)類型的方法擴(kuò)展,下面通過(guò)實(shí)例代碼給大家介紹下,需要的朋友參考下吧2016-12-12
C#中DataTable 轉(zhuǎn)實(shí)體實(shí)例詳解
這篇文章主要介紹了C#中DataTable 轉(zhuǎn)實(shí)體實(shí)例詳解,需要的朋友可以參考下2017-04-04
python實(shí)現(xiàn)AutoResetEvent類的阻塞模式方法解析
AutoResetEvent :當(dāng)某個(gè)線程執(zhí)行到WaitOne()方法時(shí),該線程則會(huì)處于阻塞模式,當(dāng)被調(diào)用了Set()方法,阻塞的線程則會(huì)繼續(xù)向下執(zhí)行,其狀態(tài)立即被自動(dòng)設(shè)置為阻塞模式2012-11-11
基于C#技術(shù)實(shí)現(xiàn)身份證識(shí)別功能
這篇文章主要介紹了基于C#技術(shù)實(shí)現(xiàn)身份證識(shí)別功能的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-07-07
C#基于Miniblink控件編寫(xiě)一個(gè)簡(jiǎn)易的瀏覽器
miniblink是一款精簡(jiǎn)小巧的瀏覽器控件,基于chromium精簡(jiǎn)而成,是市面上最小巧的chromium內(nèi)核控件沒(méi)有之一,本文將結(jié)合C#和Miniblink編寫(xiě)一個(gè)簡(jiǎn)易的瀏覽器,感興趣的可以了解下2024-01-01

