【问题标题】:PHP Graphviz chromium scaling issuePHP Graphviz 铬缩放问题
【发布时间】:2012-06-06 23:42:08
【问题描述】:

我一直在使用 PHP Graphviz 在 iframe 中绘制我的工作流程图表。就在最近,我开始看到 chromium 的不稳定行为(在 Linux 上)。当我通过 PHP Graphviz 创建一个简单的图形时(使用此处接受的答案:PHP GraphViz Documentation),Firefox 会正确创建图形并具有滚动条,但 chrome 会缩放整个图形以适应 iframe。

问题是当 iframe 变得比图表小得多时,Chromium 会缩小图表而不是让它滚动,从而使整个事情变得微型且不可读。我找不到可以解决问题的 iframe 或 PHP Graphviz 的任何设置。

我的 iframe 文档是这样的:

  echo "<iframe id='graphwin' src='/tools/tool-temp-svg2.html' scrollbars='yes' frameborder='1' height='50' width='50'></iframe>";

内部文档与上面链接的问题中给出的相同。

chrome 上的输出如下所示(按实际比例):

Chromium 版本是:18.0.1025.151 (Ubuntu 12.04),但也可以在 chrome 中看到。火狐工作正常。

我在 chromium 网站上看到过这种行为的错误报告,但它们很旧并且都标记为已解决。

更新:在此处添加了一个演示页面:http://www.legalinfo-online.com/demo/tool-temp-svg.php

【问题讨论】:

  • 你应该提供一个 URL 来重现你所谈论的内容,因为这有点像猜谜游戏。
  • 恐怕在线网址在 htaccess 后面,我无法提供链接。通过创建两个文件可以重现该问题。第一个文件有我在上面粘贴的一行,第二个文件有我链接到的代码。希望有人能够使用这两个重现错误。
  • 然后进行第二次公开可用的设置。你真的希望别人为你这样做吗?
  • @hakre:对于发布如此愚蠢的回复,我深表歉意。我添加了一个公开可用的演示。请查看更新后的问题。

标签: php graphviz


【解决方案1】:

如果没有更多细节,我必须假设您在调用 gv->image( ) 方法时没有指定任何参数,在这种情况下,gv 会以 SVG 输出作为答案。如果是这种情况,我认为 Chromium 实际上是在做正确的事情。 iframe 为 svg 布局提供边界框,它只是渲染 svg 以适应其中。

为了强制 svg 渲染到更大的尺寸,我认为您可以更改 svg 节点的 viewbox 属性来指定布局的范围。这个想法是铬将渲染 svg 以适合指定的视图框,然后 iframe 将嵌入更大的视图框。警告 - 我还没有尝试过。

或者,作为一种变通方法,您可以调用带有参数的 gv->image( ) 方法来强制 Graphviz 生成 .png 等。由于 .png 文件将具有与其相关联的自己的大小,我相信嵌入的 iframe 会调整其内部边界以适应 .png,然后如果内部视图大于 iframe 的边界,则显示滚动条。

【讨论】:

  • 谢谢@parselmouth。不幸的是,PNG 不是一个选项,因为我必须有 SVG(包括可点击节点等)
  • @recluze 啊啊啊...是的,SVG 非常适合该功能。您应该能够阅读 SVG DOM,对吧?如果是这样,请尝试更改 viewbox 属性 - 希望这将强制 chromium 渲染到指定的大小而不是 iframe 的大小。无论如何 - 祝你和你的项目最良好。
猜你喜欢
  • 2011-05-05
  • 1970-01-01
  • 1970-01-01
  • 2017-02-08
  • 1970-01-01
  • 1970-01-01
  • 2019-05-24
  • 2013-02-12
  • 1970-01-01
相关资源
最近更新 更多