【问题标题】:XSL-fo Image size issue with pdfsXSL-fo pdf 的图像大小问题
【发布时间】:2010-11-23 22:51:43
【问题描述】:

我有大量在 docbook 中创建的 XML 文档,并通过 maven 以 html for 和 pdf 形式发布。几代人工作正常,html看起来很好。我遇到的问题是 pdf 版本中图像的大小。这些图片是截图的集合,有些是全屏的,有些是大约 2/3 的宽度和高度,还有一些是小的搜索框。很明显,我需要对图像数据的属性进行大规模重构。我想知道我应该将它重构为什么?我正在寻找一种方法来创建多达 4 种“类型”的图像,并让这些图像强制执行它们自己的大小。 图像示例如下所示:

  <section><title>Screenshot</title>
     <mediaobject>
       <imageobject>
        <imagedata fileref="./views/screenshots/editNote.png" scalefit="0" width="100%"/>
       </imageobject>
     </mediaobject>
  </section>

而且它只适用于我的部分屏幕截图尺寸。

我玩过 scalefit、width 和 contentwidth/contentheight,它们似乎解决了问题的不同部分。我也应该查看视口吗?

注意:不必担心破坏 html 生成,因为我可以在 XSL 中打开“排除属性”。

【问题讨论】:

  • Ace,不清楚你在问什么。您似乎在谈论 XSL-FO 属性 scale-to-fit、content-width 等?我用 xsl-fo 标记了您的问题,因为我认为这就是您所说的。您能否详细说明“refactor of the attributes”是什么意思?
  • 一旦我知道如何正确处理图像,我需要重构原始 docbook xml 和 xsl-fo。

标签: xml xslt image-manipulation xsl-fo docbook


【解决方案1】:

严格来说,这并不是您要问的问题,但是您是否对图像文件中的 DPI 设置进行了规范化?尽管在 HTML 渲染中被忽略,但它们在 docbook->PDF 渲染中至关重要。

当我过去处理过这个问题时,修复 DPI 让我无需进一步调整 DocBook 源代码。

【讨论】:

  • 是否像将属性添加到我的图像数据一样简单?
  • @Ace,PNG 文件中嵌入了 DPI 信息。例如,您可以使用 ImageMagick 套件中的程序来处理该信息。 (因此,例如,如果您有一个 800 像素宽的 PNG,您想将其呈现为 5 英寸宽的图像,您可以通过 mogrify -density 160 -units PixelsPerInch image.png 相应地更改 DPI 信息。)
  • 看来我所有的截图都有 96*96 dpi。因此,一些较小的图像显得又宽又高,被严重拉伸,全屏截图似乎过度像素化。当我在 MS Paint 或其他工具中打开这些图像时,为什么不能像它们一样显示它们?
【解决方案2】:

你有@scalefit="0" 试试@scalefit="1":

<section><title>Screenshot</title>
     <mediaobject>
       <imageobject>
        <imagedata fileref="./views/screenshots/editNote.png" 
                   scalefit="1" width="100%" contentdept="100%"/>
       </imageobject>
     </mediaobject>
  </section>  

这里有一些使用指南 缩放属性。

  • 要将图形缩放到给定的宽度, 在 imagedata 中设置 contentwidth 元素到那个大小,例如 内容宽度=“8.5cm”。如果您指定一个 没有单位的数字,假设 是像素。

  • 缩放图形以适应 打印输出中的可用宽度,使用 width="100%" 和 scalefit="1" 属性。对于缩进的文本,如 列表中,可用宽度来自 当前缩进到右边距。

  • 保留用于打印输出的图形 在它的自然大小,除非它太 大以适合可用宽度,在 在哪种情况下缩小它以适应,使用 scalefit="1", width="100%", 和 contentdepth="100%" 属性。

...

  • 某些 XSL-FO 处理器不支持 所有这些属性。你可能需要 试验看看什么是有效的。为了 例如,FOP 版本 0.20.5 对待 宽度就像它是 contentwidth 和 忽略任何真实的内容宽度 属性。

http://www.sagehill.net/docbookxsl/ImageSizing.html

【讨论】:

  • 添加 scalefit="1" width="100%" contentdept="100%" 适用于我 90% 的屏幕。我还有一些超出页眉或页脚的内容。我应该为那些人做些什么?他们似乎有过高的高度,但我仍然希望他们扩大到页面中
猜你喜欢
  • 2013-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-27
  • 1970-01-01
  • 1970-01-01
  • 2020-02-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多