我想将纯文本和 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");
}
您可以使用
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");
}
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);
}