6

Arial のように、フォント ファミリが異なるテキストがある場合、Apache Batik を使用して変換された PNG が異なるという問題があります。この問題は、Cent OS 6 が Tomcat 7 および Java 6 を実行している環境で発生します。

SVG を PNG に変換するために使用される Java コードは次のとおりです。

// Convert the SVG image to png and send back
PNGTranscoder transcoder = new PNGTranscoder();
// 
TranscoderInput input = new TranscoderInput(new ByteArrayInputStream(svgImage));
outStream = new ByteArrayOutputStream();
TranscoderOutput output = new TranscoderOutput(outStream);

// Transcode the given SVG
transcoder.transcode(input, output);

outStream.flush();

pngImage = outStream.toByteArray();

PNG に変換する SVG ファイルは次のとおりです。

<svg version="1.1" x="0" y="0" id="hjtqebzv1" width="610" height="240" xmlns="http://www.w3.org/2000/svg" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xlink="http://www.w3.org/1999/xlink">
  <defs>
    <linearGradient id="LFFFFFF0" x1="0%" y1="0%" x2="100%" y2="0%">
      <stop offset="0%" style="stop-color:#FFFFFF;stop-opacity:0.8"/>
      <stop offset="100%" style="stop-color:#FAFAFA;stop-opacity:1"/>
    </linearGradient>
  </defs>
  <g id="hjtqebzv-o1" transform="translate(5,5)">
      <rect x="1" y="1" width="578" height="20" fill="url(#LFFFFFF0)" stroke="#5e5ca7" stroke-width="2" stroke-linejoin="round" stroke-linecap="round"/>
      <text x="1" y="1" width="578" height="19" >
        <tspan x="2" y="14" style="font-family:Arial;font-size:12px;fill:#000000;">This is a test text for testing text overlapping in the rectangle when convert the svg to PNG using SVG-Batik</tspan>
      </text>
  </g>
</svg>

SVG ファイルを Firefox ブラウザで開くと、下の画像のように正しく表示されます。 ここに画像の説明を入力

しかし、Apache Batik を使用して SVG を変換すると、変換されたイメージが異なって見えます。Apache Batik に変換された PNG は次のとおりです。 ここに画像の説明を入力

tomcat 7 および Java 7 を実行する Windows 7 では、生成されたイメージは元の SVG と同じです。

Cent OSサーバーとして、テキストが乱れた画像が表示されるため、Tomcat/JavaアプリケーションでArialフォントを使用できないため、手動でロードする必要があると感じています。もしそうなら、SVG ファイルを変更せずに、基本的な OS の場所 (OS のフォントの場所) から共通の方法でそれらをロードするようにアドバイスしたいと思います。

4

1 に答える 1

4

Microsoft TrueType フォントをインストールし、JAVA_FONTS環境変数を設定して Java 仮想マシンで使用できるようにする必要があります。

wget http://www.my-guides.net/en/images/stories/fedora12/msttcore-fonts-2.0-3.noarch.rpm

rpm -ivh msttcore-fonts-2.0-3.noarch.rpm

ファイルを開い/etc/bashrcて末尾に以下を追加します

JAVA_FONTS=/usr/share/fonts/msttcore

export JAVA_FONTS

http://www.itzgeek.com/how-tos/linux/centos-how-tos/how-to-install-microsoft-truetype-fonts-in-centos-6-rhel-6.html#axzz2aibHZaOI

于 2013-08-01T12:21:34.857 に答える