首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Batik SVG到PDF的转换

Batik SVG到PDF的转换
EN

Stack Overflow用户
提问于 2016-05-23 16:25:44
回答 1查看 1.2K关注 0票数 4

我正在尝试使用蜡染转换为JPG的SVG。在SVG中,我使用的是外部google字体,由于这个原因,这很不幸地失败了,错误如下:

代码语言:javascript
复制
org.w3c.dom.DOMException: https://fonts.googleapis.com/css?family=Tangerine:
Invalid CSS document.
The "src" property does not support function values.
    at org.apache.batik.css.engine.CSSEngine.parseStyleSheet(Unknown Source)
    at org.apache.batik.css.engine.CSSEngine.parseStyleSheet(Unknown Source)
    at org.apache.batik.css.engine.CSSEngine.parseStyleSheet(Unknown Source)
    at org.apache.batik.css.engine.CSSEngine.parseStyleSheet(Unknown Source)
    at org.apache.batik.anim.dom.SVGOMStyleElement.getCSSStyleSheet(Unknown Source)
    at org.apache.batik.css.engine.CSSEngine.getStyleSheetNodes(Unknown Source)
    at org.apache.batik.css.engine.CSSEngine.getCascadedStyleMap(Unknown Source)
    at org.apache.batik.css.engine.CSSEngine.getComputedStyle(Unknown Source)
    at org.apache.batik.bridge.CSSUtilities.getComputedStyle(Unknown Source)
    at org.apache.batik.bridge.CSSUtilities.convertVisibility(Unknown Source)
    at org.apache.batik.bridge.SVGSVGElementBridge.createGraphicsNode(Unknown Source)
    at org.apache.batik.bridge.GVTBuilder.build(Unknown Source)
    at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(Unknown Source)
    at org.apache.batik.transcoder.image.ImageTranscoder.transcode(Unknown Source)
    at org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(Unknown Source)
    at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(Unknown Source)
    at Test.main(Test.java:27)

有没有办法解决这个问题,或者有一个简单的方法来扩展Batik来支持这一点?

这是我使用的Java代码:

代码语言:javascript
复制
import java.io.*;

import org.apache.batik.transcoder.image.JPEGTranscoder;
import org.apache.batik.transcoder.TranscoderInput;
import org.apache.batik.transcoder.TranscoderOutput;

public class Test {

    public static void main(String[] args) throws Exception {

        // Create a JPEG transcoder
        JPEGTranscoder t = new JPEGTranscoder();

        // Set the transcoding hints.
        t.addTranscodingHint(JPEGTranscoder.KEY_QUALITY,
                   new Float(.8));

        // Create the transcoder input.
        String svgURI = new File(args[0]).toURL().toString();
        TranscoderInput input = new TranscoderInput(svgURI);

        // Create the transcoder output.
        OutputStream ostream = new FileOutputStream("out.jpg");
        TranscoderOutput output = new TranscoderOutput(ostream);

        // Save the image.
        t.transcode(input, output);

        // Flush and close the stream.
        ostream.flush();
        ostream.close();
        System.exit(0);
    }
}

这是我的SVG文件:

代码语言:javascript
复制
<svg data-name="Layer 1" id="Layer_1" viewBox="0 0 536.04 691.72" xmlns="http://www.w3.org/2000/svg">
    <title>Test_2</title>
    <defs>
    <style type="text/css">@import url(https://fonts.googleapis.com/css?family=Tangerine);</style>
    </defs>
    <text style="font-size: 20.289770126342773px;fill: #231f20;font-family: Myriad Pro" transform="translate(73.31 120.47) rotate(-27.42) scale(0.83 1)">Hello
        <tspan x="44.11" y="0"/>
        <tspan x="47.68" y="0">W</tspan>
        <tspan x="64.18" y="0">o</tspan>
        <tspan x="75.31" y="0">r</tspan>
        <tspan x="82.03" y="0">ld!</tspan>
        <tspan style="font-family: Marker Felt">
            <tspan style="letter-spacing: -1.2033549767559024px" x="0" y="67.55">W</tspan>
            <tspan x="16.31" y="67.55">e</tspan>
            <tspan x="26.13" y="67.55">l</tspan>
            <tspan x="31.59" y="67.55">c</tspan>
            <tspan x="41.82" y="67.55">o</tspan>
            <tspan x="52.51" y="67.55">m</tspan>
            <tspan x="69.17" y="67.55">e </tspan>
            <tspan style="font-family: Myriad Pro" x="83.37" y="67.55">t</tspan>
            <tspan style="font-family: Myriad Pro" x="89.96" y="67.55">o the </tspan>
            <tspan style="font-size: 36px;font-family: Phosphate" x="137.85" y="67.55">Jungle </tspan>
            <tspan style="font-family: Myriad Pro" x="261.4" y="67.55">!!!</tspan></tspan>
    </text>
    <text style="font-size: 12px;fill: #ec297b;font-family: Myriad Pro" transform="translate(296.88 156.85)">W
        <tspan x="9.76" y="0">el</tspan>
        <tspan x="18.6" y="0">c</tspan>
        <tspan x="23.9" y="0">ome </tspan>
        <tspan style="fill: #009345" x="49.06" y="0">t</tspan>
        <tspan style="fill: #009345" x="52.96" y="0">o </tspan>
        <tspan style="fill: #f05a28" x="62.09" y="0">the </tspan>
        <tspan style="fill: #ec1c24" x="81.28" y="0">Jungle </tspan>
        <tspan style="fill: #231f20;font-size: 60px;font-family: Marker Felt;letter-spacing: 2px" x="117.08" y="0">!!</tspan>
        <tspan style="fill: #231f20;font-size: 60px;font-family: Marker Felt" x="149.36" y="0">!</tspan></text>
    <rect height="99.22" style="fill: #ec297b" width="109.38" y="253.72"/>
    <ellipse cx="270.31" cy="269.35" rx="91.19" ry="41.55" style="fill: #e6e7e8;stroke: #231f20;stroke-linecap: round;stroke-miterlimit: 10"/>
    <rect height="136.33" style="fill: #009345;stroke: #ee4036;stroke-linecap: round;stroke-miterlimit: 10" width="136.33" x="297.07" y="355.87"/>
    <polygon points="141.5 386.05 65.64 517.45 217.37 517.45 141.5 386.05" style="fill: #e6e7e8;stroke: #231f20;stroke-linecap: round;stroke-miterlimit: 10"/>
    <ellipse cx="257.42" cy="643.57" rx="119.14" ry="47.66" style="fill: #e6e7e8;stroke: #231f20;stroke-linecap: round;stroke-miterlimit: 10"/>
    <text style="font-size: 14px;fill: #231f20; font-family: 'Tangerine', serif;" transform="translate(58.59 532.63)">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</text>
</svg>

谢谢,杰拉尔德

EN

回答 1

Stack Overflow用户

发布于 2017-09-19 22:03:46

代码语言:javascript
复制
<style type="text/css"> @font-face{ font-family:"Myriad Pro"; src:url(<true type font or svg font url>}</style>

Batik不支持woff字体渲染到image.it将采用默认字体,当使用woff类型渲染时。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37386077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档