【问题标题】:How to use html string for iText7如何为 iText7 使用 html 字符串
【发布时间】: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的正确引用和正确实现?

编辑:这些是当前通过 nuget 安装的以下内容:

试过:使用 iText.Html2pdf 但不存在报错。

【问题讨论】:

    标签: c# asp.net itext7


    【解决方案1】:

    您确实缺少用于 iText.Html2pdf 命名空间的 using 指令,其中包含 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;
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-10-10
      • 2015-11-28
      • 1970-01-01
      • 1970-01-01
      • 2014-02-09
      • 2016-09-06
      • 2011-01-07
      • 2021-07-04
      • 1970-01-01
      相关资源
      最近更新 更多