C#生成PDF的方法

之前项目中是通过wkhtmltopdf渲染web页面生成的pdf文件,这个方案一直不是很稳定,并且在不同的场景样式也常不一样,老需要调整。 今天研究了一下C#直接生成PDF的方案,还是比较简单的,整体方案如下:

  1. 通过WPF库生成XPS文件
  2. 通过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

以上就是C#生成PDF的方法的详细内容,更多关于C#生成PDF的资料请关注我们其它相关文章!

(0)

相关推荐

  • C#利用iTextSharp组件给PDF文档添加图片/文字水印

    最近在做关于PDF文档添加水印的功能,折腾了好久,终于好了.以下做个记录: 首先会用到iTextSharp组件,大家可以去官网下载,同时我也会在本文中附加进来. 代码中添加引用为: using System; using System.Collections.Generic; using System.Linq; using System.Text; using iTextSharp.text.pdf; using System.IO; using iTextSharp.text; 创建一个显示

  • C#打印PDF文档的10种方法(小结)

    操作PDF文档时,打印是常见的需求之一.针对不同的打印需求,可分多种情况来进行,如设置静默打印.指定打印页码范围和打印纸张大小.双面打印.黑白打印等等.经过测试,下面将对常见的几种PDF打印需求做一些归纳总结,这里归纳了10种打印需求及方法.如下: 使用默认打印机打印PDF文档 使用虚拟打印机(Microsoft XPS Document Writer)打印PDF文档 指定打印机及PDF文档打印页码范围 静默打印PDF文档 双面打印PDF文档 黑白打印PDF文档 打印PDF文档时选择不同的出纸盒

  • C#将Excel转成PDF的方法

    PS:公司的业务中有个超级大的作业就是把OFFICE文档转成PDF,我猜之前没程序猿们,公司那些人应该是一个个手动转.强烈为猿们感叹,帮你们做了这么多事,还在那抱怨....无法满足你们的需求啊: 微软net平台提供了对Office文档非常好的支持:其中有com组件直接集成到了VS中.利用这些API可以快速的免去N多繁琐的工作: 以下代码是翻阅了公司的代码,一个个敲出来的:奉上代码: using System; using System.Collections.Generic; using Sys

  • c#添加图片、文本水印到PDF文件

    概述 一般我们在向文档添加水印时,会分为直接添加文字水印和加载图片添加图片水印两种情况.常见的,在添加文字水印时会多以声明文档版权.权威性的文字.标语或者名称等:同样的,图片水印也通常可以是某组织的LOGO.印章.或者其他能够指示性的图片等.在下面的文档中,将介绍通过C#编程来添加PDF水印的方法,包括: 1 添加文本水印 2 添加图片水印 使用工具 Spire.PDF for .NET C#代码示例(供参考) [示例1]添加PDF文本水印 using Spire.Pdf; using Spir

  • C# 对PDF文档加密、解密(基于Spire.Cloud.SDK for .NET)

    Spire.Cloud.SDK for .NET提供了接口PdfSecurityApi可用于加密.解密PDF文档.本文将通过C#代码演示具体加密及解密方法. 使用工具: Spire.Cloud.SDK for .NET Visual Studio 必要步骤: 步骤一: dll文件获取及导入.在程序中通过Nuget搜索下载,直接导入所有dll. 导入效果如下如所示: 步骤二: App ID及Key获取.在"我的应用"板块中创建应用以获得App ID及App Key. 步骤三: 源文档上传

  • C#实现Word转为PDF的方法

    这里主要提供一种将word文档转成PDF文档的实现: 具体实现看c#代码:要引入Microsoft.Office.Interop.Word;版本12.0.0.0 using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Runtime.InteropServices; using Microsoft.Office.Inter

  • C#/VB.NET 在PDF中添加文件包(Portfolio)的方法

    PDF文件包(Portfolio)允许用户将多种不同类型的文件如Word.Excel.PDF.PowerPoint和图片等集合到一个PDF文件中,用户可以打开.更改PDF文件包中的单个文件.添加文件包时,可支持创建文件包时并直接将文件添加到文件包:或者创建文件包的同时创建文件夹,并将文件添加到文件夹. 环境准备:程序中需要使用到PDF类库工具(Spire.PDF for .NET hotfix 6.5.15及以上版本)下载后,解压,将Bin文件夹下的dll文件添加引用到VS程序.如下效果: 1.

  • C#添加、获取、删除PDF附件实例代码

    概述 附件,指随同文件发出的有关文件或物品.在PDF文档中,我们可以添加同类型的或其他类型的文档作为附件内容,而PDF中附件也可以分为两种存在形式,一种是附件以普通文件形式存在,另一种是以注释的形式存在.在下面的示例中介绍了如何分别添加以上两种形式的PDF附件.此外,根据PDF附件的不同添加方式,我们在获取PDF附件信息或删除PDF附件时,也可以分情况来执行操作. 工具使用 pire.PDF for .NET 4.0 代码示例(供参考)  1.添加PDF附件    1.1 以普通文档形式添加附件

  • C#将PPT文件转换成PDF文件

    这里在提供C#代码,将PPT转成PDF.直接上代码: 要引入Microsoft.Office.Interop.PowerPoint; 版本12.0.0.0: using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Runtime.InteropServices; using Microsoft.Office.Interop

  • C#导出pdf的实现方法(浏览器不预览直接下载)

    前言 这篇文章主要给大家介绍了关于C#导出pdf的实现方法,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 方法如下: 一.接口部分的代码 [HttpGet] public HttpResponseMessage ExportPdf(string id) { string pdfName = ""; //id 查询条件,根据实际情况修改即可 //pdfName 例如download.pdf byte[] pdfData= _policyGapManagerService

随机推荐