【问题标题】:FOP Error Says HTML File Needs Matching End Tag Even Though It Already DoesFOP 错误表明 HTML 文件需要匹配结束标记,即使它已经匹配
【发布时间】:2015-01-28 19:35:42
【问题描述】:

我目前正在使用 Apache FOP 创建 HTML 文件的 PDF 版本。文件本身已经准备好各种 fo 标签,但是当我尝试使用命令行 (fop -fo NoteBook.html -pdf test.pdf) 执行 FOP 时,我收到一条错误消息,提示“元素类型 'META' 必须由匹配的结束标签 ''" 终止。它特指标签。在对文件进行完整搜索后,我找到了结束标记。什么可能导致 FOP 出现这种错误?

注意:我在分享这个程序的实际代码方面非常有限。

【问题讨论】:

  • 也许你需要严格的 html/xhtml,但我不知道 fop
  • 某些中间标签可能不匹配。标签必须正确嵌套和关闭。没有看到你的 HTML 是不可能的,但是当你说你必须做一个“完整的文件搜索”时,听起来好像有很多中间的 HTML。
  • 大约有 9,000 行代码。问题是,这段代码还用于在网络浏览器中创建各种笔记本,并且工作正常。
  • Web 浏览器比 XML 应用程序更宽容,也没有那么严格。您的 FO 文件根本不是格式正确的 XML。没有看到实际代码就可以这么说。

标签: html pdf apache-fop


【解决方案1】:

您遇到的错误可能是由于您的 HTML 文件不是有效的 XML,因此无法解析。

例如,<meta name="description" content="a book"> 是正确的 HTML,但为了成为有效的 XML,它应该是 <meta name="description" content="a book"/><meta name="description" content="a book"></meta>

但这只是冰山一角,因为真正的问题是 FOP 不接受 HTML 文件作为输入;它接受:

  • 符合XSL-FO specifications 的 FO 文件
  • 或 XML 文件 + XSLT 样式表产生 FO 结果(只是为了用户方便,因为样式表转换是使用库完成的,而不是直接通过 FOP)

如果您有一个 HTML 文件并想使用 FOP 生成 PDF,您必须找到或开发一种工具来将其转换为 FO 文件。特别是,如果您选择使用 XSLT 转换,则必须确保输入是有效的 XML。

【讨论】:

  • 当我应该使用 FO 或 XML 和 XSLT 的组合时,您对我使用 HTML 是正确的。我已经能够创建 FO 文件,但是当我尝试将其转换为 PDF 时,同样的错误仍然存​​在。但是,您确实回答了我的问题,所以我可能不应该再使用这篇文章了。
  • @Sir_Muffin META 不是有效的 FO 元素,如果您的 FO 文件中有它,则 XSLT 可能有问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-16
  • 1970-01-01
  • 1970-01-01
  • 2017-01-28
  • 2021-09-23
  • 2012-08-14
相关资源
最近更新 更多