10

洋服のテンプレートを作成するJavaプログラムに取り組んでいます。ユーザーが衣料品に見たい単語を入力すると、システムがPDFテンプレートを作成します。テンプレートを作成するには、プログラムでSVGドキュメントを作成してから、Batikを使用してSVGをPDF形式にトランスコードします。

私のクライアントは、カスタムフォントを使用してテンプレートを作成できるようにしたいと考えています。BatikトランスコーダーでTTFのようなフォントを使用できるかどうか疑問に思いましたか?もしそうなら、SVGをどのように設定しますか?

4

2 に答える 2

8

まず、batikのttf2svgを使用してフォントファイルをTTFからSVGに変換する必要があります。変換されたファイルを取得したら、SVGドキュメントの「defs」セクションに参照を追加する必要があります。これは私がそれをした方法です:

Element defs = doc.createElementNS(svgNS, "defs");

Element fontface = doc.createElementNS(svgNS, "font-face");
fontface.setAttributeNS(null, "font-family", "DroidSansRegular");

Element fontfacesrc = doc.createElementNS(svgNS, "font-face-src");
Element fontfaceuri = doc.createElementNS(svgNS, "font-face-uri");

fontfaceuri.setAttributeNS(svgNS, "xlink:href", "fonts/DroidSans-webfont.svg#DroidSansRegular");

Element fontfaceformat = doc.createElementNS(svgNS, "font-face-format");
fontfaceformat.setAttributeNS(svgNS, "string", "svg");

fontfaceuri.appendChild(fontfaceformat);
fontfacesrc.appendChild(fontfaceuri);
fontface.appendChild(fontfacesrc);
defs.appendChild(fontface);
svgRoot.appendChild(defs);

テキスト要素を作成するときは、他のフォントと同じようにフォントファミリを設定します

Element txtElem = doc.createElementNS(svgNS, "text");

txtElem.setAttributeNS(svgNS, "style", "font-family:DroidSansRegular;font-size:" + fontsize + ";stroke:#000000;#fill:#00ff00;");
txtElem.setTextContent("some text");
svgRoot.appendChild(txtElem);

私はこの記事から情報を得ました:http://frabru.de/c.php/article/SVGFonts-usageそれが役立つことを願っています。

于 2012-08-28T21:43:28.163 に答える
2

次の要素をの子として追加するだけです<svg/><style type="text/css">次に、HTMLと同様に...

于 2013-10-06T20:06:21.197 に答える