C# ASP.NET MVC 从视图 Rotativa 或 iTextSharp 创建 PDF?

C# ASP.NET MVC Create PDF from view Rotativa or iTextSharp?

我对从多个表单生成 PDF 非常陌生。 事实上,我从未使用任何编程语言生成过 PDF。现在我一直在尝试两种不同的方法来做我想做的事情。不幸的是,几天后我仍然没有找到如何做到这一点。

我有多个表格,其中使用 3 个不同的列表预先填写了数据,现在我想生成此表格的 PDF,为此我一直在使用 Rotativa。不幸的是,一旦我调用生成 PDF 的方法,它就会生成视图的 PDF,但数据丢失了。使用 iTextSharp 我可以获得 1 个列表的数据,而不是所有列表,我也不知道是否可以使用 iTextSharp 将此 PDF 保存在服务器上。

Q1:我应该用什么方法?你有什么建议?使用 Rotativa 或 iTextSharp?

问题 2:这对于没有太多编程经验的人来说可行吗?还是我应该尝试寻找其他方法?我

问题 3:我是否仍然缺少执行此操作的方法?我更喜欢不使用第 3 方软件的方法。

使用 ITextSharp,它是一个 .NET PDF 库,可让您生成 PDF(便携式文档格式)。

所以首先需要在你的项目中添加对iTextSharp的引用。

您可以使用包管理器获取 iTextSharp 引用,您只需执行以下命令下载并添加引用。

PM> 安装包 iTextSharp

现在您需要创建一个方法来为您提供 PDF 内容的字节数组,因此我们的代码将是

public byte[] GetPDF(string pHTML) { byte[] bPDF = null;

MemoryStream ms = new MemoryStream();
TextReader txtReader = new StringReader(pHTML);

// 1: create object of a itextsharp document class
Document doc = new Document(PageSize.A4, 25, 25, 25, 25);

// 2: we create a itextsharp pdfwriter that listens to the document and directs a XML-stream to a file
PdfWriter oPdfWriter = PdfWriter.GetInstance(doc, ms);

// 3: we create a worker parse the document
HTMLWorker htmlWorker = new HTMLWorker(doc);

// 4: we open document and start the worker on the document
doc.Open();
htmlWorker.StartDocument();

// 5: parse the html into the document
htmlWorker.Parse(txtReader);

// 6: close the document and the worker
htmlWorker.EndDocument();
htmlWorker.Close();
doc.Close();

bPDF = ms.ToArray();

return bPDF;

}