2017-12-27 11 views
1

私は、入力データによって要求された数字でPDFファイルを作るプログラムを作ることを任されました。この画像では、入力データがどのようになるか、すなわちサイズ、形状間のギャップ、形状のタイプ、青写真の番号を見ることができる。実際のダイアグラムがどのように表示されるかを示します。svgのサイズをhtmlページ内に保つ

input data above and actual graphics below

プロジェクトは、ベクトルグラフィックスを使用することが非常に重要ですので、彼らは本当に柔軟だと、それはプログラム的にそれらを生成するために、比較的簡単だと私はSVGsを使用して考えました。 次に、私は現在、.NETライブラリ(Select.HtmltoPdf)を使用してHTML文字列をPDFに変換しています。これは、C#でPDFを直接設計することが脚の間の痛みであるため便利です。 HTMLを使用すると、CSSと私が比較的よく知っているものを使用する利点が得られます。唯一の欠点は、私はそのライブラリを直接使用してsvgをレンダリングできないことです。まずそれらをhtmlファイルの中に入れなければなりません。

問題は、SVGをHTMLに挿入し、ライブラリを使用してPDFにレンダリングするときに発生します。 Corel DrawやAdobe Illustratorなどで直接svgを開くと、寸法が保持され、すべてがそのまま維持されます。ただし、ファイルの拡張子を.htmlに変更してChromeで開き、PDFに印刷したり、自分のプログラムから直接PDFをレンダリングしたりすると、図形がわずかに縮小されます。

私の質問は、パスの寸法をHTMLページに表示している間はそのままにする方法です。

<svg x="0" y="0" width="215.9mm" height="279.4mm" viewBox="0 0 215.9 279.4"> 
<rect x="40" y="40" width="25" height="25" rx="1.5875" ry="1.5875" stroke="black" stroke-width="0.5" fill-opacity="1"/> 
<ellipse cx="20" cy="20" rx="20" ry="20" stroke="black" stroke-width="0.5" fill-opacity="0"/> 
</svg> 

そして、基本的にその周り<html>タグと同じSVGである私が使用しようとしているHTML、:

は、ここに私の現在の.SVGです。

<!DOCTYPE html> 
 
<html> 
 
<meta HTTP-EQUIV="Content-Style-Type" CONTENT="text/css" CHARSET="UTF-8"/> 
 
<svg x="0" y="0" width="215.9mm" height="279.4mm" viewBox="0 0 215.9 279.4"> 
 
<rect x="40" y="40" width="25" height="25" rx="1.5875" ry="1.5875" stroke="black" stroke-width="0.5" fill-opacity="1"/> 
 
<ellipse cx="20" cy="20" rx="20" ry="20" stroke="black" stroke-width="0.5" fill-opacity="0"/> 
 
</svg> 
 
</html>

ありがとう!

答えて

1

"形状がわずかに縮小されている"ということで、正確には何を意味するのかは明確ではありません。

しかし、あなたの問題は、CSSの「215.9mm」が実際の世界215.9mmと同じではないという事実に関連している可能性があります。 CSS値「1in」(または「25.4mm」)は、96個の「CSSピクセル」に相当すると定義されています。スクリーン上にレンダリングされるか印刷されるかは、ブラウザによって決まります。

SVGがHTMLに埋め込まれている場合は、HTMLページで "215.9mm"が表すものとそれから生成されるPDFを決定するのはブラウザです。また、HTMLページの考え方をプリンタページのサイズに合わせて調整することも考えられます。

あなたのベクターソフトウェアがPDFを生成するとき、私はあなたのPDFサイズに基づいてそれらの長さの値をより正確に表現することを期待しています(A4など)。

関連する問題