-1

iframe内でワークフローのグラフを描画するためにPHPGraphvizを使用しています。つい最近、私はクロムからの不安定な振る舞いを見始めました(Linux上で)。PHP Graphvizを使用して単純なグラフを作成すると(ここで受け入れられている回答を使用して:PHP GraphViz Documentation)、Firefoxはグラフを適切に作成し、スクロールバーを備えていますが、クロムはグラフ全体をiframeに合わせてスケーリングします。

問題は、iframeがグラフよりもはるかに小さくなると、クロムがグラフをスクロールする代わりに縮小して、全体をミニチュアにして読めなくなることです。問題を解決するiframeまたはPHPGraphvizの設定が見つかりません。

私の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

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 に答える