我一直在使用PHP Graphviz在iframe中绘制我的工作流程图。就在最近,我开始看到铬的不稳定行为(在Linux上)。当我通过PHP Graphviz创建一个简单的图形时(使用此处接受的答案:PHP GraphViz Documentation),Firefox正确创建图形并具有滚动条,但chrome会缩放整个图形以适合iframe。
问题是当iframe变得比图形小得多时,chrome会缩小图形而不是滚动它,从而使整个事物变得微小且不可读。我找不到任何可以解决问题的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中看到。 Firefox运行正常。
我在铬网站上看到过这种行为的错误报告,但它们已经过时并且都标记为已解决。
更新:在此处添加了演示页:http://www.legalinfo-online.com/demo/tool-temp-svg.php
答案 0 :(得分:0)
如果没有更多细节,我必须假设你在没有指定任何参数的情况下调用gv-&gt; image()方法,在这种情况下,gv用SVG输出回答。如果是这种情况,我认为Chromium实际上正在做正确的事情。 iframe为svg布局提供了边界框,它只是呈现svg以适应它。
为了强制svg渲染到更大的大小,我认为你可以改变svg节点的viewbox属性来指定布局的范围。想法是chrome会使svg适合指定的视图框,然后iframe会嵌入更大的视图框。警告 - 我没试过这个。
或者,作为解决方法,您可以使用参数调用gv-&gt; image()方法以强制Graphviz生成.png等。由于.png文件将自己的大小与之关联,我相信嵌入式iframe会调整它的内部边界以适应.png,然后在内部视图大于iframe的边界时显示滚动条。