【发布时间】:2021-04-04 06:48:53
【问题描述】:
我正在尝试通过 itext7 使用 asp.net webforms 显示(只是显示而不是下载)基于 html 字符串(不确定这是否是正确的术语?)的 pdf。
using iText.Kernel.Geom;
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.Layout.Font;
using iText.Layout.Properties;
//I think I'm missing something here? I added itext7pdfhtml via nuget but not sure how to reference it.
using (var memoryStream = new MemoryStream())
{
var pdfWriter = new PdfWriter(memoryStream);
var pdfDocument = new PdfDocument(pdfWriter);
var document = new Document(pdfDocument, PageSize.LETTER, true);
//pdfDocument.getCatalog().setOpenAction;
FontProvider provider = new FontProvider();
provider.AddFont("Arial");
StringBuilder sb = new StringBuilder();
sb.Append("<table width='100%' cellspacing='0' cellpadding='2' style='border: 20px solid #ccc;font-size: 9pt;font-family:Arial'>");
sb.Append("<tr><td align='center' style='background-color: blue' ><b>Sample</b></td></tr>");
sb.Append("<tr><td colspan = '2'></td></tr>");
sb.Append("<tr><td>");
sb.Append("<b>Sample:</b>");
sb.Append("</td><td align = 'right'><b>Sample</b>");
// sb.Append(DateTime.Now);
sb.Append(" </td></tr>");
sb.Append("<tr><td colspan = '2'><b>This is example: </b>");
sb.Append("this is trial");
sb.Append("</td></tr>");
sb.Append("</table>");
sb.Append("<br />");
// document = HtmlConverter.convertToPdf(sb.ToString(), memoryStream); // htmlconverter not found, already added itext7htmlpdf via nuget, not sure how to reference?
document.Close();
bytes = memoryStream.ToArray();
}
string base64PDF = System.Convert.ToBase64String(bytes, 0, bytes.Length);
string str = "<embed src='data:application/pdf;base64, " + base64PDF + "' type='application/pdf' width='500px' height='800px' />";
pdfdiv.InnerHtml = str; // basically showing the pdf here. this already works if I use document.Add(new Paragraph("test"));
我的问题是htmlconverter的正确引用和正确实现?
试过:使用 iText.Html2pdf 但不存在报错。
【问题讨论】: