我正在使用 iText 7,特别是HtmlConverter.ConvertToDocument
方法,将 HTML 转换为 PDF。问题是,我真的不想在我的服务器上创建 PDF 文件,我宁愿在内存中完成所有操作,然后将其发送到用户浏览器,以便他们可以下载它。
谁能向我展示如何使用这个库的示例,而不是写入文件写入 MemoryStream,以便我可以将其直接发送到浏览器?
我一直在寻找示例,我似乎能找到的只是那些引用文件输出的示例。
我已尝试以下操作,但不断收到有关无法访问关闭的内存流的错误。
public FileStreamResult pdf() {
using (var workStream = new MemoryStream())
using (var pdfWriter = new PdfWriter(workStream)) {
pdfWriter.SetCloseStream(false);
using (var document = HtmlConverter.ConvertToDocument(html, pdfWriter)) {
//Returns the written-to MemoryStream containing the PDF.
byte[] byteInfo = workStream.ToArray();
workStream.Write(byteInfo, 0, byteInfo.Length);
workStream.Position = 0;
return new FileStreamResult(workStream, "application/pdf");
}
//return new FileStreamResult(workStream, "application/pdf");
}
}
你干涉workStream
之前document
and pdfWriter
已完成在其中创建结果。此外,您干预的意图尚不清楚,首先您从内存流中检索字节,然后将它们写回其中......?
public FileStreamResult pdf()
{
var workStream = new MemoryStream())
using (var pdfWriter = new PdfWriter(workStream))
{
pdfWriter.SetCloseStream(false);
using (var document = HtmlConverter.ConvertToDocument(html, pdfWriter))
{
}
}
workStream.Position = 0;
return new FileStreamResult(workStream, "application/pdf");
}
顺便说一句,因为你基本上没有做任何特别的事情document
由返回HtmlConverter.ConvertToDocument
,你可能可以使用不同的HtmlConverter
代码中开销较少的方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)