Xml PDF中的XSL fo图像大小问题

Xml PDF中的XSL fo图像大小问题,xml,xslt,image-manipulation,xsl-fo,docbook,Xml,Xslt,Image Manipulation,Xsl Fo,Docbook,我有大量的XML文档,它们是在docbook中创建的,并且通过maven以html for和pdf格式发布。生成的代码运行良好,html看起来也不错。我遇到的问题是pdf版本中图像的大小。这些图片是一组截图,有些是全屏的,有些是2/3的宽度和高度,还有一些是小搜索框。很明显,我需要对imagedata的属性进行大规模重构。我想知道我应该把它重构成什么?我正在寻找一种方法来创建多达4种“类型”的图像,并为这些图像实施自己的大小调整。 图像的示例如下所示: <section><

我有大量的XML文档,它们是在docbook中创建的,并且通过maven以html for和pdf格式发布。生成的代码运行良好,html看起来也不错。我遇到的问题是pdf版本中图像的大小。这些图片是一组截图,有些是全屏的,有些是2/3的宽度和高度,还有一些是小搜索框。很明显,我需要对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,它们似乎解决了问题的不同部分。我是否也应该查看视口


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

严格来说,这不是您要问的问题,但是您是否规范了图像文件中的DPI设置?虽然在HTML呈现中被忽略,但它们在docbook->PDF呈现中至关重要

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

您有
@scalefit=“0”
尝试
@scalefit=“1”

截图
以下是使用 缩放属性

  • 要将图形缩放到给定的宽度, 在imagedata中设置contentwidth 例如,将元素设置为该大小 contentwidth=“8.5cm”。如果指定 不带单位的数量,假定为 必须是像素

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

  • 为打印输出保留图形的步骤 在它的自然大小,除非它太大 大到适合可用宽度,英寸 在哪种情况下,将其收缩以适合,使用 scalefit=“1”、width=“100%”和 contentdepth=“100%”属性

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

Ace,你问什么还不清楚。您似乎在谈论XSL-FO属性的匹配比例、内容宽度等。?我用xsl-fo标记了你的问题,因为我认为这就是你所说的。你能详细解释一下你所说的“属性重构”是什么意思吗?一旦我知道如何正确处理图像,我需要重构原始docbook xml和xsl fo。它是否像将该属性添加到imagedata中那样简单?@Ace,PNG文件中嵌入了DPI信息。例如,您可以使用ImageMagick套件中的程序来处理这些信息。(例如,如果你有一个800像素宽的PNG,你想显示为一个5英寸宽的图像,你可以通过
mogrify-density 160-units pixelsprench image.PNG
)相应地改变DPI信息。我的所有截图似乎都有96*96 DPI。因此,一些较小的图像显得又宽又高,严重拉伸,全屏照片似乎像素化过度。为什么这些图像不能像我在MS Paint或其他软件中打开时那样显示?添加scalefit=“1”width=“100%”contentdept=“100%”适用于我90%的屏幕。我还有一些超出页眉或页脚的。我应该为那些人做些什么?他们似乎有过高的高度,但我仍然希望他们的规模进入页面
<section><title>Screenshot</title>
     <mediaobject>
       <imageobject>
        <imagedata fileref="./views/screenshots/editNote.png" 
                   scalefit="1" width="100%" contentdept="100%"/>
       </imageobject>
     </mediaobject>
  </section>