【问题标题】:Convert style-laden HTML tables to PDF, in .NET 1.1在 .NET 1.1 中将包含样式的 HTML 表格转换为 PDF
【发布时间】:2010-09-27 08:52:00
【问题描述】:

我有同事从事 .NET 1.1 项目,他们从外部方获取 XML 文件,并以编程方式指示 iTextSharp 基于 XML 数据生成 PDF 内容。

棘手的部分是,在这个 XML 中是任意 HTML 内容的片段。这些是用户从其 Office 应用程序复制和粘贴的 HTML 代码。在 Web 浏览器上看起来仍然不错,但是当将此 HTML 输入 iTextSharp 的 HTMLWorker 对象以解析并转换为 PDF 对象时,格式和对齐会在生成的 PDF 文档中到处运行。例如

<span id="mceBoundaryType" class="portrait"></span>
<table border="0" cellspacing="0" cellpadding="0" width="636" class="MsoNormalTable"
    style="margin: auto auto auto 4.65pt; width: 477pt; border-collapse: collapse">
    <tbody>
        <tr style="height: 15.75pt">
            <td width="468" valign="bottom" style="padding-right: 5.4pt; padding-left: 5.4pt;
                padding-bottom: 0in; width: 351pt; padding-top: 0in; height: 15.75pt; background-color: transparent;
                border: #ece9d8">
                <p style="margin: 0in 0in 0pt" class="MsoNormal">
                    <font face="Times New Roman">&nbsp;</font></p>
            </td>
            <td colspan="3" width="168" valign="bottom" style="padding-right: 5.4pt; padding-left: 5.4pt;
                padding-bottom: 0in; width: 1.75in; padding-top: 0in; height: 15.75pt; background-color: transparent;
                border: #ece9d8">
                <p style="margin: 0in 0in 0pt; text-align: center" class="MsoNormal" align="center">
                    <u><font face="Times New Roman">Group</font></u></p>
            </td>
        </tr>

标签中充满了 Style 属性,而 iTextSharp 不支持 CSS 和解释该属性。其他 iTextSharp 用户尝试了哪些替代方法来解决此问题,或其他可行的 HTML 到 PDF 组件?

【问题讨论】:

    标签: .net pdf itextsharp


    【解决方案1】:

    我发现ExpertPDFABCpdf 等基于.NET 2.0 的组件在解释CSS 样式和正确对齐PDF 中的表格方面做得相当好。现在,我建议我的同事使用可以使用此类组件的单独 .NET 2.0 Web 服务,ASP.NET 1.1 Web 应用程序将通知该服务继续抓取生成的网页,该网页本质上是报告在 HTML 视图中。

    更新:

    这是答案,因为它是提供给应用程序团队的推荐方法。

    【讨论】:

      【解决方案2】:

      我没有任何可靠的答案,但我会给你两个探索的方向,这两个方向都是我以前用过的。

      1 - 使用 HtmlAgilityPack 之类的东西来清理你的 HTML - 你可以遍历 DOM 并删除样式和类,这显然会在一定程度上搞砸布局。我不清楚您是否需要保留这种样式。然后,您可以使用 iTextSharp 或 HtmlDoc(也不支持 CSS)之类的替代程序来呈现 PDF。我们编写了一个简单的包装器,其中包含一个获取 URL 的方法,然后调用 Htmldoc 来生成 PDF。

      2 - 使用 WebBrowser 控件呈现 HTML 服务器端,从中生成图像,然后使用 PDFsharp 或您选择的库将图像转换为 PDF。这显然不会为您提供可以搜索或复制文本的 PDF。有一些很好的示例代码here 用于将渲染页面转换为图像(注意:您可以获得全高图像,而不仅仅是您可以在不滚动的情况下看到的图像)。

      编辑:我认为 WebBrowser 控件在 .NET 1.1 中不可用。

      【讨论】:

      • 是的,我也一直在尝试 .NET 1.1 版的 HtmlAgilityPack,但它有一些错误会删除我需要改天调试的段落内容部分。
      • 是的,必须为 HTML 标签保留样式——这些是首先保持表格正确对齐的标签。因此,删除它们与当前的情况有些相同,它们被忽略了。
      • 好吧,如果您可以在 PDF 中使用图像,我建议您选择 2。
      猜你喜欢
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 2017-10-30
      • 2010-10-08
      • 2015-08-17
      • 2019-09-19
      相关资源
      最近更新 更多