当您从Google Docs打印(使用“打印”链接,而不是文件/打印),您最终会打印出一个漂亮格式的PDF文件,而不是依赖于浏览器的打印引擎。Google Analytics中的某些报告也是如此...打印的报告作为PDF非常漂亮。他们是如何做到的呢?我无法想象他们使用类似Adobe Acrobat之类的软件来实现它,但也许他们确实这样做了。我有时会在网上看到一些昂贵的HTML转PDF转换器,但从未尝试过。您有什么想法吗?
我已经成功地使用了pd4ml。它有一个标签库,因此您可以通过
将任何现有的HTML转换为PDF<pd4ml:transform>
<!-- Your HTML is here -->
<c:import url="/page.html" />
</pd4ml:transform>
嗯,我怀疑生成HTML那么容易吗……我的意思是,首先,PDF不是人类可读的格式,也不是纯文本(如SVG)。实际上,我会把SVG文件和PDF文件进行比较,因为两者在印刷页面布局方面都具有精确控制。但SVG不同之处在于它是XML(也不完全支持浏览器……还在研究SVG)。说到这里,SVG可能应该是我接下来的问题。
我知道Google不使用.NET,我怀疑他们也不使用Java,因此他们必须使用其他库来生成PDF文件。更重要的是,他们如何在不将所有内容都重写为PDF的情况下创建PDF?我的意思是,当他们生成HTML视图和PDF视图时,一定有一些共享的代码。现在想起来了,也许PDF视图和HTML视图是完全独立的,他们只有两个视图,因此MVC开发风格似乎是正确的选择。
渲染PDF是一个困难而复杂的问题。然而生成它们并不困难。只需创建一些实体并生成即可。这类似于为网页生成HTML与显示(渲染)它的问题域。