- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个项目需要生成 PDF 文件。在此 PDF 中,我必须插入正文以及四到五张大图像(大约 800px*1000px)。为了使其更加灵活,我选择将 FreeMarker 与 XHTMLRenderer( Flying Saucer )结合使用。
我现在面临两个选择:
.xhtml
模板(将其保存到磁盘)并将处理后的 .xhtml
文件 URL 传递给 XHTMLRenderer 以生成 PDF。所有这些创建的文件(PDF 除外)都将使用 File.createTempFile
创建。这将允许 FreeMarker 从磁盘中拾取图像(就好像它们是在 XHTML 中链接的图像).xhtml
模板并将其保存在内存中。将图像作为 base64 编码的数据 url 传递给模板。这将消除保存任何临时文件的需要,因为 FreeMarker 的输出可以直接传递给 XHTMLRenderer。Base64 编码的图像 Url 示例(一个小文件夹图标):
<img src="data:image/gif;base64,R0lGODlhEAAOALMAAOazToeHh0tLS/7LZv/0jvb29t/f3//Ub/
/ge8WSLf/rhf/3kdbW1mxsbP//mf///yH5BAAAAAAALAAAAAAQAA4AAARe8L1Ekyky67QZ1hLnjM5UUde0ECwLJoExK
cppV0aCcGCmTIHEIUEqjgaORCMxIC6e0CcguWw6aFjsVMkkIr7g77ZKPJjPZqIyd7sJAgVGoEGv2xsBxqNgYPj/gAwXEQA7" />
我的主要问题是哪种技术更好?创建大量临时文件不好吗(它会带来很多开销)吗?我可能会在创建如此大的 base64 编码字符串时耗尽内存吗?
最佳答案
我发现自己最近也在问同样的问题。经过一些基准测试后,事实证明数据 URI 方法是最好的选择。
存储一堆 Base64 编码的图像可能很昂贵。但是创建临时文件、流式传输图像数据,然后等待 XHTMLRenderer 在清理临时文件之前命中该临时文件 4 次的开销也很繁重。
在我的实验中,Base64 图像被证明是一种更好的方法。话虽如此,我不确定它在多大程度上适用于较大的图像。就我而言,我使用 32x32 图标、80x80 Logo 、400x240 条形图和一个 600x400 图形进行测试。除了 600x400 图形之外,所有内容的开销差异都非常显着,在那里它可以忽略不计。
(Joop Eggen 的旁注 - 在我的例子中,PDF 生成时间紧迫。用户单击 PDF 按钮并希望立即开始下载。)
关于java - 内联图像与临时文件(Java XHTML->PDF 生成),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8844043/
有谁知道 xhtml 中选项卡的字符实体是什么? (嗯,如果有的话)... 最佳答案 (X)HTML 对制表符没有特殊支持:它们只是另一个空白字符,无论您是否对它们进行转义。 关于xhtml - XH
我了解根据 HTML 规范,向元素添加自定义属性是无效的。这对 XHTML 也无效吗? 我认为 XHTML 是 XML 家族的一部分,因此是可扩展的。作为可扩展性,使用自定义属性不是可以吗? 戴夫 最
有没有关于如何正确处理 XHTML (1.0 Transitional) 中的空格的信息?似乎 XHTML 不使用标准的 XML 空白处理。 编辑:梅比我对我到底在寻找什么有点不准确。我对元素如何呈现
据我了解,XHTML (1.0, 1.1) 和 XHTML 5 都不需要 DTD。如果这是真的,浏览器将如何区分两者? 我只能假设当浏览器供应商支持 (X)HTML 5 时,所有 XHTML 都将按照
我得到了一个带有 session 范围 bean 的 xhtml 页面。现在我想在另一个 html 页面中两次使用此页面,一次在屏幕左侧,一次在屏幕右侧。如果我包含它,它指的是同一个 bean,我怎样
就SEO而言,从客户端角度来看,我应该使用XHTML 1.0 Transitional还是XHTML 1.0 Strict? 为什么有些人仍然使用Transitional? 如果我们使用“严格过渡”,
我以前只用 p和 span元素...但我一直在插入使用正确的元素,这是我之前没有真正考虑过关于推荐的事情。 这是我想到的... I love your products! Jim Testimo
所有现代浏览器都理解 HTML,所以除了在键盘最右侧编写更多字符之外,兼容 XHTML 的意义何在。 最佳答案 没有一点我能想到的。 W3C 已经取消了 XHTML 2.0,尽管应该有一个 XHTML
我制作了一个 Windows 图标 (*.ico) 并将其命名为 favicon,它是 16 x 16 和 16 种颜色...我已将其包含在链接标签中 但是加载不正确 how do I add a f
我有一个问题: 在 Lift 网络框架 (Scala) 版本中。我得到: Message: java.util.NoSuchElementException scala.RandomAccessS
我已经编写了有效的 XHTML 1.0 Transitional 代码。我想添加社交分享按钮(twitter、facebook 和 google+),但所有这些按钮都使我的代码无效。有什么解决办法吗?
我想知道在 XHTML 中标记科学名称的最佳方法。 This answer说我应该使用 元素,我不太赞成,当然,除非它是正确的元素。 我可以使用 ,但鉴于 HTML 的第一个用途是标记科学文档,我想
角色属性是否有定义的值,如果有,您能说出它们是什么吗? 或者我可以为角色属性创建自己的值吗?它们区分大小写吗?它们必须是字母吗?可以有数字吗? 或者您可以同时拥有定义的值和用户创建的值。 最佳答案 快
分别阅读两者,看起来都一样,html+xml+javascript。 那和有什么区别?有没有? 最佳答案 XHTML是 w3c标准,一种也严格符合 XML 的 HTML 形式。 DHTML是一个很大程
在使用 XSL 将 XHTML 转换为 XHTML 时,我遇到了 namespace 问题。考虑作为示例输入: Test Remove this 然后
我有以下代码使用 Text.XHtml.Strict 库在 Haskell 中生成一个包含一系列带有 id 和类的 div 的空白 html 页面: module Main where import
我对 IE 的 XHTML 兼容性进行了激烈的辩论。唯一的问题是,我不确定这家伙是不是在挑衅。 从本质上讲,他声称 IE 完全不兼容 XHTML,并且无论使用何种浏览器,具有定义的 XHTML 文档类
我已经为此奋斗了一段时间,但我什至无法弄清楚为什么它不起作用。以这个简单的 XHTML 测试源为例: foobar
虽然不推荐使用 target="_blank",但为什么 W3C 验证器没有给出关于此的错误?您可以在 validator 中粘贴并检查此代码: Untitled Document Li
是否有可能使 anchor 链接内部没有具有背景图像和固定尺寸的文本,并且仍然适合SEO? CSS示例: a{display:block;width:50px;height:20px;backgrou
我是一名优秀的程序员,十分优秀!