「297mm」と「210mm」の幅と高さで定義された SVG 要素があり、viewbox はありません。これを行うのは、A4 ビューポート内で作業したいのですが、要素をピクセル単位で作成したいからです。
ある時点で、ピクセル単位で定義されたオブジェクトを拡大して、A4 ページの一部に収まるようにする必要があります。たとえば、幅 100 ピクセルのオブジェクトを水平方向に 30 mm に拡大したいとします。
これは可能ですか?新しい座標系を備えた 2 つ目のコンテナーが必要だと思いますが、これを行う方法が見つかりません。
編集
私 (または SVG) は、ピクセルとは何かを誤解しているようです。getBBox
線のサイズを 100% に設定し、必要なスケーリングを見つけるためにピクセル サイズを取得できることに気付きました。このコードを書き、2 つのクライアントで実行しました。
function getDotsPerInch() {
var hgroup, vgroup, hdpi, vdpi;
hgroup = svgDocument.createElementNS(svgNS, "g");
vgroup = svgDocument.createElementNS(svgNS, "g");
svgRoot.appendChild(hgroup);
svgRoot.appendChild(vgroup);
drawLine(hgroup, 0, 100, "100%", 100, "#202020", 1, 1);
drawLine(vgroup, 100, 0, 100, "100%", "#202020", 1, 1);
hdpi = hgroup.getBBox().width * 25.4 / WIDTH;
vdpi = vgroup.getBBox().height * 25.4 / HEIGHT;
drawText(hgroup, "DPI, horizontal: " + hdpi.toFixed(2), 100, 100);
drawText(hgroup, "DPI, vertical: " + vdpi.toFixed(2), 100, 120);
}
IE9、FF、Opera、および Chrome はすべて、両方のモニターが水平方向および垂直方向に96 dpi であることに同意しており (Opera は少し不正確ですが)、Safari は両方のモニターで 0 dpi を報告します。そのため、svg は「ピクセル」を「96dpi」と定義しているように見えます。いくつかの簡単なグーグルはこれを確認するように見えますが、決定的なものは何も見つかりませんでした。ほとんどのヒットは 90dpi で、FF バリアントは 96dpi です。