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

ApacheFop可以用于将任意HTML转换为PDF吗?

饶高雅
2023-03-14

我曾尝试使用ApacheFop将HTML转换为PDF。(HTML--

它适用于简单的html文件。

它不适用于带有样式(通过嵌入的css或样式属性)的html文件。PDF已创建,但完全未格式化。我试图转换超文本标记语言文件,我没有太多的样式/内容控制。

在我的用例中,为每个html创建xslt并不实用。

目前,我确实有一个与flyingsaucer一起工作的实现。但是,该要求要求在没有AGPL许可证的情况下实现。

我的问题是:这能通过FOP实现吗?

谢谢你的帮助

共有1个答案

房子昂
2023-03-14

tl;dr版本:

在最一般的情况下,不,您不能使用FOP转换任何保留原始样式的html(并且更改格式化程序不会解决问题)。

但是,您可以使用FOP(或任何其他格式化程序)尝试并合理地处理大量html文档;这可能需要一些XSLT调整。

HTML--

你对必要的转换链的描述是准确的。

但是,FOP仅涉及最后一步:除了尚未实现的功能外,最终的PDF文件应尊重FO文件中表达的印刷特征。

我使用了xhtml2fo。来自天线室的xhtml xsl--

PDF已创建,但完全未格式化

您使用的样式表是否来自AntennaHouse网站?

快速查看,它似乎应该转换样式=“…” 属性在FO输出中生成单独的属性,但它不处理外部CSS文件。

因此,使用外部CSS样式的超文本标记语言文件将被转换为没有任何格式属性的FO文件(font-Familyfont-sizetext-bridge,...)。

这可以通过FOP实现吗?

如果应用程序的默认值是应用程序的默认值,那么该应用程序的默认值是应用程序的默认值。

因此,根据您使用的格式化程序,您将有一个稍微不同的结果,但仍然是一个“未格式化”的结果。

您需要的是一个工具来“合并”html和css文件,内联样式以便XSLT可以处理它们,或者是一个能够考虑外部css文件的不同样式表(但我怀疑在一般情况下编写一个这样的样式表并不容易)。

在处理html表格时,链接的XSLT使用fo:table和caption元素,这是FOP不支持的,因此表格从输出中“消失”。

这可以通过XSLT中的一个小改变来解决,或者(可能是一个更干净的解决方案)使用导入另一个样式表的自定义样式表来解决:

<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:fo="http://www.w3.org/1999/XSL/Format"
  xmlns:html="http://www.w3.org/1999/xhtml">

  <xsl:include href="xhtml2fo.xsl"/>

  <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>

  <xsl:template match="html:table" priority="2">
    <fo:table xsl:use-attribute-sets="table">
      <!-- warning: table caption is not processed! -->
      <xsl:call-template name="process-table"/>
    </fo:table>
  </xsl:template>

</xsl:stylesheet>

您实际使用的样式表可能需要进行一些类似的调整,以便更好地与FOP配合使用。

披露:我是一个FOP开发者,虽然现在不是很活跃。

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

  • 我想在pdf中更改一些超文本标记语言。我所有的html都是超文本标记语言字符串,但我不知道如何在中正确传递。 如果有人知道怎么做。。一定很好。多谢多姆

  • 问题内容: 我是一名PHP开发人员,在我的一个项目中,我需要将一些HTML文档(大约30至50页)转换为PDF文档。 我的搜索找到了以下可能的解决方案。其中包括一些PHP库和一些命令行应用程序。每种都有自己的优点和缺点。 PHP库: fpdf(需要更多的转换努力) tcpdf(需要更多的转换努力) html2fpdf http://html2fpdf.sourceforge.net html2pd

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

  • 我想把HTMLdocument转换成PDF文件。为此,我毫无问题地将我的文档从HTML转换为。docx。把它从。docx到PDF我遵循以下链接:在java中将docx转换成PDF 但我有一个错误: 线程“JavaFX应用程序线程”java中出现异常。lang.NoSuchMethodError:org。阿帕奇。波伊。这是我最喜欢的部分。getPackageRelationship()Lorg/ap

  • 问题内容: 如何使用Python将PDF文件转换为HTML? 我只是在想Google会(或似乎会)对PDF文件建立索引的行为。 我的最终目标是设置Apache以显示PDF文件的HTML,因此,向该方向发展的任何事情也将不胜感激。 问题答案: 该poppler的包提供了一个实用PDF2HTML您可能能够使用。还有一个Python绑定到libpoppler。