-1

我一直在使用 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

4

1 回答 1

0

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

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

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

于 2012-05-09T17:28:19.987 回答