当前位置: 首页 > 知识库问答 >
问题:

当HTML作为输入字符串和CSS作为文件传递时,使用Html2pdf将Itext7 HTML转换为PDF

蒙弘图
2023-03-14
using (var ms = new MemoryStream())
using (var document = new Document())
{
 using (var writer = PdfWriter.GetInstance(document, ms))
 {
  document.Open();
  document.SetMargins(30, 60, 60, 60);
  using (var strReader = new StringReader(htmlToExport))
  {
    //Set factories
    var htmlContext = new HtmlPipelineContext(null);
    htmlContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory());
    //Set css
    var cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver   (false);
    // cssResolver.AddCssFile(HttpContext.Current.Server.MapPath  ("~/Content/bootstrap.min.css"),
    //    true);
    cssResolver.AddCssFile("http://localhost:8902/Content/bootstrap.css", true);
    //Export
    var pipeline = new CssResolverPipeline(cssResolver,
    new HtmlPipeline(htmlContext, new PdfWriterPipeline(document, writer)));
    var worker = new XMLWorker(pipeline, true);
    var xmlParse = new XMLParser(true, worker);
    xmlParse.Parse(strReader);
    xmlParse.Flush();
  }
  document.Close();
  }
}

我无法在iText7中找到相关的例子来完全满足上面的要求。

共有1个答案

郎刚捷
2023-03-14

您不再需要显式地传递/添加CSS文件,pdfHTML(Html2Pdf曾经是内部开发名称)可以拾取链接在HTML中的样式表。如果CSS与HTML不在同一文件夹中,您可能需要定义一个基本资源位置。

在HTML中,在标题中添加以下一行

<link rel="stylesheet" type="text/css" href="bootstrap.css"/>

的转换代码将它们添加到

File pdf = new File(pdfDest);
pdf.getParentFile().mkdirs();

PdfWriter writer  = new PdfWriter(pdfDest);
PdfDocument pdfDoc = new PdfDocument(writer);

ConverterProperties converterProperties = new ConverterProperties().setBaseUri(resourceLoc);

HtmlConverter.convertToPdf(new FileInputStream(htmlSource), pdfDoc, converterProperties);
pdfDoc.close();
 类似资料:
  • 我正在遵循这个位置中指定的示例,将现有的HTML转换为可访问的PDF。 https://developers.itextpdf.com/de/content/itext-7-examples/itext-7-converting-html-pdf/pdfhtml-accessible-pdf-创建 有没有一种方法可以将CSS作为字符串传递给PDF转换器,而不是在html文件本身中指定它?我需要根据

  • 我只是无法在c中转换不同的数据类型,我知道c是一种强类型语言,所以我在这里使用了,但我面临一个问题,错误消息是 从“std::string{aka std::basic_string}类型转换为“int”类型的static_

  • 问题内容: 我有一个包含HTML标记的字符串变量。该HTML标记基本上表示电子邮件内容。 现在,我想从该字符串内容创建一个图像,该图像实际上包含HTML标记。我不想通过将这些内容写入它们来创建HTML文件。我只想使用此字符串创建图像文件。 这是我所拥有的: 如何从该字符串内容创建图像? 问题答案: 感谢大家的回应。我使用HtmlRenderer外部dll(库)来实现相同目的,并在下面的代码中找到了

  • 从java中字符串的值创建对现有对象的引用 在我的项目中,有很多按钮(目前大约70个);每个按钮都会在数据库的jlabel中提出一个问题。现在,根据用户的选择,每个按钮(swings的jButton)将被分配颜色,这取决于用户是否想查看问题,或者他是否标记了问题的答案。 一种方法是为每个jbutton的actionperformed编码,并在每个jbutton中使用if-else来获得确切的颜色,

  • 问题内容: 我有一个HTML(不是XHTML)文档,可以在Firefox 3和IE 7中很好地呈现。它使用相当基本的CSS对其进行样式设置,并在HTML中很好地呈现。 我现在正在寻找一种将其转换为PDF的方法。我努力了: [DOMPDF]:表格有很大的问题。我考虑了我的大型嵌套表并对其进行了帮助(在此之前,它只消耗了128M的内存然后就死了-这就是我对php.ini中的内存的限制),但是它使表完全

  • 问题内容: 我正在开发Chrome扩展程序,我希望用户能够添加自己的CSS样式来更改扩展程序页面(而非网页)的外观。我已经研究过使用,但是似乎要分割规则,并且不允许您插入完整的样式表。有没有可以让我使用字符串在页面上创建新样式表的解决方案? 我目前不使用jQuery或类似的产品,因此最好使用纯Javascript解决方案。 问题答案: 有两种方法可以完成此操作,但是最简单的方法是创建一个元素,设置