4

我将创建一个从 html 到某种格式的转换器。我正在考虑使用中间格式 XML(XSL-FO)。

我的问题:如果没有那么多应用程序呈现 FO 格式,为什么它会流行?

4

4 回答 4

6

我很清楚 CSS 和 XSL-FO 的支持者之间正在进行一场大辩论,双方都有正确的观点。

这是迄今为止我看到的关于 XSL-FO 的最佳简短论点:

XSL-FO 提供了比 HTML+CSS 更复杂的视觉布局模型。XSL-FO 支持但 HTML+CSS 不支持的格式,包括从右到左和从上到下的文本、脚注、边注、交叉引用中的页码等。特别是,当 CSS(层叠样式表)主要用于 Web 时,XSL-FO 是为更广泛的用途而设计的。例如,您应该能够编写一个 XSL 样式表,该样式表使用格式化对象来布置整个印刷书籍。不同的样式表应该能够将相同的 XML 文档转换为 Web 站点。

(来源: http: //www.cafeconleche.org/books/bible2/chapters/ch18.html

以下是一些争论 XSL-FO 优越性的观点:

虽然这里有人说 CSS 更好:

于 2009-08-10T08:00:59.993 回答
1

RenderX和Antenna House都是出色的 XSLFO->PDF 渲染器。还有免费的 [Apache FOP] 渲染器,对于许多项目来说已经足够了。为了全力支持 FO 的所有血腥细节,需要付出认真的努力;根据市场规模、现有参与者和潜在回报,进入门槛可能太高了。

不是您问的,而是在您对FO 到 HTML做太多工作之前,有几个免费的选择可能会为您节省一些精力。

于 2009-08-10T07:32:36.150 回答
1

您检查过Ecrion XSL-FO引擎吗?老板之所以选择它,是因为它支持多种输出格式(PDF、Word、PowerPoint、Postscript、HTML 和非常酷的 Silverlight 输出模式),而且它有一个令人难以置信的设计师(据我所知,这是唯一可以与其他格式一起工作的设计师)格式化引擎,包括 FOP)。使用 HTML 生成 PDF 的问题在于:

  • HTML 不允许您控制分页(例如在偶数/奇数页上有不同的布局,就像书或目录一样)。
  • 您无法控制页眉和页脚。
  • 没有关于创建页码引用、脚注、插入页数以及可打印出版物可能具有的无数其他内容的说明。

Ecrion、Antenna 和 Renderx 等高级引擎也能够生成高质量的 PDF 输出(例如用于存档的 PDF/A 或用于打印的 PDF/X)。

于 2010-01-11T04:12:17.443 回答
0

XSL-FO 是工具实现者可以遵循以确保兼容性的通用标准,就像 HTML 是网页的通用标准、XSL 是 XML 到 * 转换的标准等一样。

如果您的 HTML 可以被认为是格式良好的 XML(即:短标签正确关闭,例如 <br /> 和 <img /> - 不是 <br> 和 <img>),那么您应该能够使用 XSL 来翻译它直接传递给 XSL-FO,然后您可以直接将其传递给Apache FOP等工具进行转换。如果格式不正确,您始终可以使用 Python 的 BeautifulSoup 或 PHP 的 DOMDocument::loadHTML() 等工具来加载 HTML 并输出格式正确的 XHTML 以进行转换。

还有像FPDF (PHP) 和Prawn (Ruby,用于非常漂亮的Dopplr 报告) 之类的工具,但恕我直言,它们使用起来更加“繁琐” - 更像是在 CSS 中使用绝对定位而不是让事物流动通过他们自己。当您考虑分页符等时可能会导致问题。

但是,这一切都取决于您对输出所做的操作。

于 2009-08-10T08:01:39.523 回答