
14

C#生成PDF的方案
source link: https://www.cnblogs.com/TianFang/p/14099913.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

之前项目中是通过wkhtmltopdf渲染web页面生成的pdf文件,这个方案一直不是很稳定,并且在不同的场景样式也常不一样,老需要调整。 今天研究了一下C#直接生成PDF的方案,还是比较简单的,整体方案如下:
-
通过WPF库生成XPS文件
-
通过PdfSharp将XPS文件转成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转换成Xps文件。得益WPF强大的展示能力,即使渲染复杂的XPS文件也是非常容易的。
有了XPS文件后,下一步就是将其转换为pdf了,这里用的是免费的PdfSharp包,由于我用的是.net 5,引入的是PdfSharp.Xps.dotNet.Core,代码比较简单,一行代码可以搞定。
PdfSharp.Xps.XpsConverter.Convert(@"r:\3.xps", @"r:\3.pdf", 0);
这个生成PDF的方案借助了WPF平台的类库,简单好用,并且可以实现可视化。缺点是不能再Linux上跑。如果要在Linux平台上实现PDF生成的话,直接使用PdfSharp也是可以的,具体可以参考这篇文章:PDF Generation and Printing in .NET
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK