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

将html转换为pdf

史烈
2023-03-14

我想在pdf中更改一些超文本标记语言。我所有的html都是超文本标记语言字符串,但我不知道如何在iTextSharp中正确传递。

public void PDF()
        {

            // Create a doc object
            var doc = new doc(PageSize.A4, 50, 50, 25, 25);

            // Create a new PdfWrite object, writing the output to the file ~/PDFTemplate/SimpleFormFieldDemo.pdf
            var output = new FileStream(Server.MapPath("t.pdf"), FileMode.Create);
            var writer = PdfWriter.GetInstance(doc, output);

            // Open the doc for writing
            doc.Open();

            //Add Wallpaper image to the pdf
            var Wallpaper = iTextSharp.text.Image.GetInstance(Server.MapPath("hfc.png"));
            Wallpaper.SetAbsolutePosition(0, 0);
            Wallpaper.ScaleAbsolute(600, 840);
            doc.Add(Wallpaper);


            iTextSharp.text.html.simpleparser.HTMLWorker hw = new iTextSharp.text.html.simpleparser.HTMLWorker(doc);
            StyleSheet css = new StyleSheet();
            css.LoadTagStyle("body", "face", "Garamond");
            css.LoadTagStyle("body", "encoding", "Identity-H");
            css.LoadTagStyle("body", "size", "12pt");

            hw.Parse(new StringReader(HTML));

            doc.Close();
            Response.Redirect("t.pdf");
        }

如果有人知道怎么做。。一定很好。多谢多姆

共有1个答案

云瑞
2023-03-14

下载有关StackOverflow的最佳iText问题。这是一本免费电子书,你会从中受益。

下载is后,请转到题为“解析XML和XHTML”的部分。

请允许我引用这个问题的答案:RowSpan在iTextSharp中不工作?

您使用的是HTMLWorker而不是XML Worker,您是对的:HTMLWorker不支持CSS。说CSS在iTextSharp中不起作用是错误的。当您使用HTMLWorker时,它不起作用,但这是有文档记录的:您需要的CSS在XML Worker中工作。

请丢弃代码,使用XML Worker重新开始。

书中有许多例子(简单的和复杂的)。让我只给你一个:

using (var fsOut = new FileStream(outputFile, FileMode.Create, FileAccess.Write))
    using (var stringReader = new StringReader(result))
    {
        var document = new Document();
        var pdfWriter = PdfWriter.GetInstance(document, fsOut);
        pdfWriter.InitialLeading = 12.5f;
        document.Open();
        var xmlWorkerHelper = XMLWorkerHelper.GetInstance();
        var cssResolver = new StyleAttrCSSResolver();
        var xmlWorkerFontProvider = new XMLWorkerFontProvider();
        foreach (string font in fonts)
        {
            xmlWorkerFontProvider.Register(font);
        }
        var cssAppliers = new CssAppliersImpl(xmlWorkerFontProvider);
        var htmlContext = new HtmlPipelineContext(cssAppliers);
        htmlContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory());
        PdfWriterPipeline pdfWriterPipeline = new PdfWriterPipeline(document, pdfWriter);
        HtmlPipeline htmlPipeline = new HtmlPipeline(htmlContext, pdfWriterPipeline);
        CssResolverPipeline cssResolverPipeline = new CssResolverPipeline(cssResolver, htmlPipeline);
        XMLWorker xmlWorker = new XMLWorker(cssResolverPipeline, true);
        XMLParser xmlParser = new XMLParser(xmlWorker);
        xmlParser.Parse(stringReader);
        document.Close();
    }
}

(来源:iTextWorker:从右到左)

如果你想要一个更简单的例子,请看以下问题的答案:

  • 如何将多个HTML文件解析为单个PDF
  • 如何向表格单元格添加富文本框(HTML)

将HTML字符串和CSS字符串解析为iText(Sharp)元素列表的代码如下所示:

ElementList list = XMLWorkerHelper.parseToElementList(html, css);

你可以在iText官方网站上找到更多的例子。

 类似资料:
  • 问题内容: 将PDF文档转换为HTML在浏览器中查看的最佳解决方案是什么?该站点有多个PDF文档,访问者可以单击HTML格式的视图,并且应在屏幕上以HTML文件的形式查看。 运行PHP,Linux,Apache的标准网站。 问题答案: pdftohtml可以正常工作:快速,稳定,但是html结果充其量是丑陋的。我已经在有很多工作简历的网站上使用了很长时间。 但是,这是提取文本内容的好方法。 或Go

  • 问题内容: 我们有一个水晶报表,我们需要将其作为电子邮件发送出去,但是从水晶报表生成的HTML几乎很丑陋,并且导致某些电子邮件客户端出现问题。我想将其导出为富文本格式,并尽可能将其转换为HTML。 有什么建议么? 问题答案: 我会在CodeProject RTFConverter上签出此工具。这个家伙很好地细分了程序的工作方式以及转换的细节。

  • 问题内容: 我有一些需要用XML迷惑的HTML文件。我们正在使用这些HTML为应用程序提供内容,但是现在我们必须以XML形式提供这些内容。 HTML文件包含,表格,div,图像,p,b或强标签等。 我用谷歌搜索并找到了一些应用程序,但是我还无法实现。 您能否建议一种将这些文件内容转换为XML的方法? 问题答案: 我成功使用了命令行实用程序。在Linux上,我使用迅速安装了它。然后命令: 给了一个x

  • 问题内容: 我想将从下面的脚本中获取的HTML表转换为CSV文件,但是出现如下类型错误: TypeError:序列项0:预期的字符串,找到标记 将其转换为CSV文件的最简单方法是什么?我尝试为: 但它写了“无” HTML是这样的: 问题答案: 这是csv lib的工作,将每一个td放入每一行并提取文本,它将处理每一行中缺少值的地方: 与您在页面上看到的表格完全匹配的表格: 如果您想使用字幕: 但是

  • 上面的代码给了我一个错误,如下所示 线程“main”java.lang.nosuchmethoderror:org.docx4j.org.xhtmlrenderer.docx.docx.docx.docxrenderer.(ljava/lang/string;)V在org.docx4j.convert.in.xhtml.xhtmlimporterimpl.getrenderer(xhtmlimpo

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