C#生成PDF的方法
之前項(xiàng)目中是通過(guò)wkhtmltopdf渲染web頁(yè)面生成的pdf文件,這個(gè)方案一直不是很穩(wěn)定,并且在不同的場(chǎng)景樣式也常不一樣,老需要調(diào)整。 今天研究了一下C#直接生成PDF的方案,還是比較簡(jiǎn)單的,整體方案如下:
- 通過(guò)WPF庫(kù)生成XPS文件
- 通過(guò)PdfSharp將XPS文件轉(zhuǎn)成PDF文件
首先看一下生成xps文件的代碼。,代碼如下:
var fixedDoc = new FixedDocument(); var pageContent = new PageContent(); var fixedPage = new FixedPage(); fixedPage.Children.Add(canvas); ((IAddChild)pageContent).AddChild(fixedPage); fixedDoc.Pages.Add(pageContent); using var xpsd = new XpsDocument(@"r:\3.xps", FileAccess.ReadWrite); var xw = XpsDocument.CreateXpsDocumentWriter(xpsd); xw.Write(fixedDoc); xpsd.Close();
由于可以將WPF中的Visual轉(zhuǎn)換成Xps文件。得益WPF強(qiáng)大的展示能力,即使渲染復(fù)雜的XPS文件也是非常容易的。
有了XPS文件后,下一步就是將其轉(zhuǎn)換為pdf了,這里用的是免費(fèi)的PdfSharp包,由于我用的是.net 5,引入的是PdfSharp.Xps.dotNet.Core,代碼比較簡(jiǎn)單,一行代碼可以搞定。
PdfSharp.Xps.XpsConverter.Convert(@"r:\3.xps", @"r:\3.pdf", 0);
這個(gè)生成PDF的方案借助了WPF平臺(tái)的類(lèi)庫(kù),簡(jiǎn)單好用,并且可以實(shí)現(xiàn)可視化。缺點(diǎn)是不能再Linux上跑。如果要在Linux平臺(tái)上實(shí)現(xiàn)PDF生成的話(huà),直接使用PdfSharp也是可以的,具體可以參考這篇文章:PDF Generation and Printing in .NET
以上就是C#生成PDF的方法的詳細(xì)內(nèi)容,更多關(guān)于C#生成PDF的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
c#重寫(xiě)TabControl控件實(shí)現(xiàn)關(guān)閉按鈕的方法
這是關(guān)于c#重寫(xiě)TabControl控件實(shí)現(xiàn)關(guān)閉按鈕的例子,整理了一下,與大家分享。2013-04-04listview控件實(shí)現(xiàn)點(diǎn)擊列表頭進(jìn)行l(wèi)istview排序示例分享
這篇文章主要介紹了listview控件實(shí)現(xiàn)點(diǎn)擊列表頭進(jìn)行l(wèi)istview排序示例分享,需要的朋友可以參考下2014-03-03Unity 如何通過(guò)反射給gameObject添加組件
這篇文章主要介紹了Unity 通過(guò)反射給gameObject添加組件的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04原生實(shí)現(xiàn)C#與Lua相互調(diào)用方法(Unity3D可用)
Lua是一種很好的擴(kuò)展性語(yǔ)言,Lua解釋器被設(shè)計(jì)成一個(gè)很容易嵌入到宿主程序的庫(kù),下面這篇文章主要給大家介紹了關(guān)于原生實(shí)現(xiàn)C#與Lua相互調(diào)用方法,Unity3D可用的相關(guān)資料,需要的朋友可以參考下2022-04-04C# paddlerocrsharp識(shí)別身份證號(hào)的實(shí)現(xiàn)示例
paddlerocrsharp可以進(jìn)行圖片識(shí)別,本文主要介紹了C# paddlerocrsharp識(shí)別身份證號(hào)的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02C# Onnx實(shí)現(xiàn)DIS高精度圖像二類(lèi)分割
這篇文章主要為大家詳細(xì)介紹了C# Onnx實(shí)現(xiàn)DIS高精度圖像二類(lèi)分割的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-11-11