如何使用 itext7 将 HTML 和纯文本内容添加到新 PDF

问题描述 投票:0回答:2

我想将纯文本和 HTML 内容添加到我正在创建的 PDF 中。我能够添加纯文本,但不确定如何添加 HTML 内容。我不确定如何使用

pdfHTML
转换器将
htmlString1
htmlString
2 与纯文本结合起来。到目前为止,这是我的代码:

public ActionResult CreatePdf()
{
    byte[] pdfBytes;
    using (var stream = new MemoryStream())
    using (var wri = new PdfWriter(stream))
    using (var pdf = new PdfDocument(wri))
    using (var doc = new Document(pdf))
    {   

        doc.Add(new Paragraph("Working with iText7"));

        doc.Add(new AreaBreak(AreaBreakType.NEXT_PAGE));

        PdfOutline root = pdf.GetOutlines(false);

        foreach (var item in col1)
        {
                        
            doc.Add(new Paragraph(item.Name));
            root.AddOutline(item.Name);
            doc.Add(new AreaBreak());
        }
        
    string htmlString1 = " <!DOCTYPE html><html><body><h1>My First Heading</h1><p>My first paragraph.</p></body></html>";
        
    string htmlString2 = "<p>My 2nd paragraph</p><hr><p>My 3rd paragraph</p>";
        
        doc.Close();
        doc.Flush();
        pdfBytes = stream.ToArray();
    }

    return File(pdfBytes, "application/pdf", "test.pdf");
}
c# itext itext7
2个回答
0
投票

您可以使用

HtmlConverter.ConvertToElements
方法将 HTML 字符串转换为
iText
元素,然后将这些元素添加到您的 PDF 文档中

public ActionResult CreatePdf()
{
    byte[] pdfBytes;
    using (var stream = new MemoryStream())
    using (var wri = new PdfWriter(stream))
    using (var pdf = new PdfDocument(wri))
    using (var doc = new Document(pdf))
    {   
        doc.Add(new Paragraph("Working with iText7"));
        doc.Add(new AreaBreak(AreaBreakType.NEXT_PAGE));

    
        foreach (var item in col1)
        {
            doc.Add(new Paragraph(item.Name));
            PdfOutline root = pdf.GetOutlines(false);
            root.AddOutline(item.Name);
            doc.Add(new AreaBreak());
        }
        
        
        string htmlString1 = "<!DOCTYPE html><html><body><h1>My First Heading</h1><p>My first paragraph.</p></body></html>";
        List<IElement> elements1 = HtmlConverter.ConvertToElements(htmlString1);
        foreach (var element in elements1)
        {
            doc.Add(element);
        }

        string htmlString2 = "<p>My 2nd paragraph</p><hr><p>My 3rd paragraph</p>";
        List<IElement> elements2 = HtmlConverter.ConvertToElements(htmlString2);
        foreach (var element in elements2)
        {
            doc.Add(element);
        }

        doc.Close();
        doc.Flush();
        pdfBytes = stream.ToArray();
    }

    return File(pdfBytes, "application/pdf", "test.pdf");
}

0
投票
    string htmlString1 = "<!DOCTYPE html><html><body><h1>My First Heading</ h1><p>My first paragraph.</p></body></html>";
    List<IElement> elements1 = (List<IElement>)HtmlConverter.ConvertToElements(htmlString1);
    foreach (var element in elements1)
    {
      doc.Add((IBlockElement)element);
    }

    string htmlString2 = "<p>My 2nd paragraph</p><hr><p>My 3rd paragraph</p>";
    List<IElement> elements2 = (List<IElement>)HtmlConverter.ConvertToElements(htmlString2);
    foreach (var element in elements2)
    {
       doc.Add((IBlockElement)element);
    }
© www.soinside.com 2019 - 2024. All rights reserved.