Я пытаюсь отобразить (просто показать его, а не загружать) pdf-файл на основе строки html (не уверен, что это правильный термин?), Используя веб-формы asp.net через itext7.
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?
Обновлено: в настоящее время через nuget установлено следующее:

пробовал: используя iText.Html2pdf, но ошибка не возникает.





Вам действительно не хватает директивы using для пространства имен iText.Html2pdf, которое содержит HtmlConverter.
Вместо директивы using вы также можете попробовать использовать полное имя, чтобы проверить, правильно ли установлен pdfHTML в вашем проекте: iText.Html2pdf.HtmlConverter.ConvertToPdf(...)
Вот полностью рабочий пример, показывающий, как использовать HtmlConverter:
using System.IO;
using System.Text;
using iText.Html2pdf;
namespace Test
{
class Program
{
static void Main(string[] args)
{
byte[] bytes;
using (var memoryStream = new MemoryStream())
{
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 />");
HtmlConverter.ConvertToPdf(sb.ToString(), memoryStream);
//iText.Html2pdf.HtmlConverter.ConvertToPdf(sb.ToString(), memoryStream);
bytes = memoryStream.ToArray();
}
// writing PDF output to file for testing
File.WriteAllBytes("test.pdf", bytes);
//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;
}
}
}