检测图像方向(横向,纵向)以正确打印XHTML报告

时间:2012-04-30 18:34:18

标签: html css image xslt orientation

我正在编写一个将XML转换为XHTML报告的XSL文件。此XML包含图像ID,这些图像ID是纸质扫描(US Letter),可以是各种尺寸,也可以是横向或纵向。我正在寻找一种方法将它们最大化打印到一页纸(带有自定义标题)。因此,我可以旋转图像以使其适合纵向页面,或者告诉打印机在横向模式下考虑此页面。看起来像:

<img id="portrait" src="http://1.2.3.4/img/getImage.cgi?ID=1" />
<img id="landscape" src="http://1.2.3.4/img/getImage.cgi?ID=2" />

<img src="http://1.2.3.4/img/getImage.cgi?ID=1" />
<div id="landscape">
    <img src="http://1.2.3.4/img/getImage.cgi?ID=2" />
</div>

我考虑过什么,为什么它不起作用:

  • 我知道XSL不能这样做,因为它只链接图像而不加载它们所以它不知道它们的属性。
  • HTML无法做到,因为它是由XSLT转换呈现的,并且代码无法令人遗憾地更新自己;)
  • 我认为这也不是CSS的目的。虽然我愿意尝试但没有找到明确的方法,但JavaScript可能不适用于飞碟(PDF生成)。
  • 我无法访问检索数据库中图像的CGI脚本。所以我无法修改它们。

我没有考虑过:   - 反过来评估问题,使用另一个工具(例如perl脚本)来读取XML文件并生成正确的HTML报告。然而,如果可能的话,这将是我想避免的不同技术。

您如何看待这一点,您是否有一些经验,以及有关如何解决此问题的任何提示或建议?

一如既往,非常感谢你的时间。

致以最诚挚的问候,

曼尼

1 个答案:

答案 0 :(得分:1)

如果您能够像评论中所说的那样在服务器端脚本上创建一些表单,我会考虑做一些事情

  1. 创建一个额外的脚本(即/img/GetInfoData.cgi?ID=2,返回类似于此的XML:<ImageInfo height="23" width="100" orientation="landscape" alt="Alt Text" src="/img/GetImage.cgi?ID=2"/>

  2. 然后在您的XSLT中,您可以使用<xsl:variable name="ImageInfo" select="document("/img/GetImageData.cgi?ID=2")/>

  3. 然后,您可以使用<xsl:if test="$ImageInfo/ImageInfo/@orientation='landscape'>

  4. 测试ImageInfo

    希望有所帮助。我相信它不是最快的解决方案,但它会阻止您使用太多其他技术。