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;
}
我对从多个表单生成 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;
}