蜡染将 SVG 转换为 JPEG
Batik Convert SVG to JPEG
JPEGTranscoder transcoder = new JPEGTranscoder();
String urlPath = "D:/CRD_Material/Scheme/scheme-2.svg";
String s1 = "<svg width='350' height='450' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'>"
+ "<!-- Created with SVG-edit - http://svg-edit.googlecode.com/ --> "
+ "<g><title>Layer 1</title> "
+ " <rect fill='none' stroke='#000000' stroke-width='2' stroke-linejoin='none' stroke-linecap='none' x='18' y='23' width='213' height='352' id='svg_6'/>"
+ " <line fill='none' stroke='#000000' stroke-width='2' stroke-linejoin='none' stroke-linecap='none' x1='17' y1='336' x2='230' y2='336' id='svg_7'/>"
+ " <line fill='none' stroke='#000000' stroke-width='2' stroke-linejoin='none' stroke-linecap='none' x1='20' y1='58' x2='231' y2='58' id='svg_8' stroke-dasharray='2,2'/>"
+ " <rect id='svg_3' height='65' width='181' y='74' x='31' stroke-width='2' stroke='#000000' fill='#0'/> </g> </svg>";
FileWriter writer = new FileWriter("D:/PDFBox/test.svg");
writer.write(s1);
writer.close();
transcoder.addTranscodingHint(JPEGTranscoder.KEY_QUALITY, new Float(1.0));
TranscoderInput input = new TranscoderInput(new FileInputStream("D:/PDFBox/test.svg"));
OutputStream ostream = new FileOutputStream("D:/PDFBox/out.jpg");
TranscoderOutput output = new TranscoderOutput(ostream);
transcoder.transcode(input, output);
ostream.close();
System.exit(0);
这是我的代码,我想将 SVG 字符串转换为 JPEG 图像。虽然 运行 此代码出现以下错误:
org.w3c.dom.DOMException: <unknown>:
The attribute "stroke-linecap" represents an invalid CSS value ("none").
Original message:
The "none" identifier is not a valid value for the "stroke-linecap" property
有人请帮助我..在此先感谢
stroke-linecap
的唯一有效值是 butt
、round
和 square
,例如,参见here。默认值为 butt
。因此,要么将 none
更改为其中之一,要么删除各处的 stroke-linecap='none'
段。
您的 svg 代码也有与 stroke-linejoin
类似的问题,请参阅有效值 here。
最后fill='#0'
也不正确。如果要黑色,请使用 fill='#000000'
或 fill='black'
。
因此新字符串可以是
String s1 = "<svg width='350' height='450' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'>"
+ "<!-- Created with SVG-edit - http://svg-edit.googlecode.com/ --> "
+ "<g><title>Layer 1</title> "
+ " <rect fill='none' stroke='#000000' stroke-width='2' x='18' y='23' width='213' height='352' id='svg_6'/>"
+ " <line fill='none' stroke='#000000' stroke-width='2' x1='17' y1='336' x2='230' y2='336' id='svg_7'/>"
+ " <line fill='none' stroke='#000000' stroke-width='2' x1='20' y1='58' x2='231' y2='58' id='svg_8' stroke-dasharray='2,2'/>"
+ " <rect id='svg_3' height='65' width='181' y='74' x='31' stroke-width='2' stroke='#000000' fill='#000000'/> </g> </svg>";
JPEGTranscoder transcoder = new JPEGTranscoder();
String urlPath = "D:/CRD_Material/Scheme/scheme-2.svg";
String s1 = "<svg width='350' height='450' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'>"
+ "<!-- Created with SVG-edit - http://svg-edit.googlecode.com/ --> "
+ "<g><title>Layer 1</title> "
+ " <rect fill='none' stroke='#000000' stroke-width='2' stroke-linejoin='none' stroke-linecap='none' x='18' y='23' width='213' height='352' id='svg_6'/>"
+ " <line fill='none' stroke='#000000' stroke-width='2' stroke-linejoin='none' stroke-linecap='none' x1='17' y1='336' x2='230' y2='336' id='svg_7'/>"
+ " <line fill='none' stroke='#000000' stroke-width='2' stroke-linejoin='none' stroke-linecap='none' x1='20' y1='58' x2='231' y2='58' id='svg_8' stroke-dasharray='2,2'/>"
+ " <rect id='svg_3' height='65' width='181' y='74' x='31' stroke-width='2' stroke='#000000' fill='#0'/> </g> </svg>";
FileWriter writer = new FileWriter("D:/PDFBox/test.svg");
writer.write(s1);
writer.close();
transcoder.addTranscodingHint(JPEGTranscoder.KEY_QUALITY, new Float(1.0));
TranscoderInput input = new TranscoderInput(new FileInputStream("D:/PDFBox/test.svg"));
OutputStream ostream = new FileOutputStream("D:/PDFBox/out.jpg");
TranscoderOutput output = new TranscoderOutput(ostream);
transcoder.transcode(input, output);
ostream.close();
System.exit(0);
这是我的代码,我想将 SVG 字符串转换为 JPEG 图像。虽然 运行 此代码出现以下错误:
org.w3c.dom.DOMException: <unknown>:
The attribute "stroke-linecap" represents an invalid CSS value ("none").
Original message:
The "none" identifier is not a valid value for the "stroke-linecap" property
有人请帮助我..在此先感谢
stroke-linecap
的唯一有效值是 butt
、round
和 square
,例如,参见here。默认值为 butt
。因此,要么将 none
更改为其中之一,要么删除各处的 stroke-linecap='none'
段。
您的 svg 代码也有与 stroke-linejoin
类似的问题,请参阅有效值 here。
最后fill='#0'
也不正确。如果要黑色,请使用 fill='#000000'
或 fill='black'
。
因此新字符串可以是
String s1 = "<svg width='350' height='450' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'>"
+ "<!-- Created with SVG-edit - http://svg-edit.googlecode.com/ --> "
+ "<g><title>Layer 1</title> "
+ " <rect fill='none' stroke='#000000' stroke-width='2' x='18' y='23' width='213' height='352' id='svg_6'/>"
+ " <line fill='none' stroke='#000000' stroke-width='2' x1='17' y1='336' x2='230' y2='336' id='svg_7'/>"
+ " <line fill='none' stroke='#000000' stroke-width='2' x1='20' y1='58' x2='231' y2='58' id='svg_8' stroke-dasharray='2,2'/>"
+ " <rect id='svg_3' height='65' width='181' y='74' x='31' stroke-width='2' stroke='#000000' fill='#000000'/> </g> </svg>";