XSL-fo pdf的图像大小问题

时间:2010-11-23 22:51:43

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

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

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

它仅适用于我的部分屏幕截图尺寸。

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

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

2 个答案:

答案 0 :(得分:4)

这不是您要求的严格要求,但您是否已将图像文件中的DPI设置标准化?虽然在HTML渲染中被忽略,但它们在docbook-&gt; PDF渲染中至关重要。

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

答案 1 :(得分:1)

@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   例如,该大小的元素   contentwidth = “8.5厘米”。如果你指定一个   没有单位的数字,假设为   是像素。

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

  •   
  • 保留打印输出的图形   在它的自然尺寸,除非它也是   大到适合可用的宽度,在   哪种情况缩小它适合,使用   scalefit =“1”,width =“100%”,和   contentdepth =“100%”属性。

  •   
     

...

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

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