Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
2D指向Java中的SVG或PDF文件_Java_Pdf_Svg_Canvas_2d - Fatal编程技术网

2D指向Java中的SVG或PDF文件

2D指向Java中的SVG或PDF文件,java,pdf,svg,canvas,2d,Java,Pdf,Svg,Canvas,2d,要将画布的二维点转换为svg或pdf文件 { “点”各点的“点”点:除了除了“x”x:158“x”:158“x”:158,“y”:781},,{“x”x:158,y:764},{“x”x:158,“x”x:158“x”:158,“x”:158,y:158,y:786,786,,,{“x”x:158,y:781;781,781,,,,,,{“x”158,“158,“y”158,y:764,y:764,,,,:764,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:767 7 7 7 7

要将画布的二维点转换为svg或pdf文件

{ “点”各点的“点”点:除了除了“x”x:158“x”:158“x”:158,“y”:781},,{“x”x:158,y:764},{“x”x:158,“x”x:158“x”:158,“x”:158,y:158,y:786,786,,,{“x”x:158,y:781;781,781,,,,,,{“x”158,“158,“y”158,y:764,y:764,,,,:764,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:767 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,x:184,y:428},{x:184,y:413},{x:184,y:406},{x:188,y:372},{x:193,y',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,x:203,y:240},{x:206,y:243},{x:210,y:251},{x:211,y:255},{x:214,y:260}{“x”:273万万万方,或“x”:227,y:273万万方,,,{“x”:273万方,y:2900万,{“x”:253,y:3257,y:257,y:277,y:277万方,y:273万方,y:273万方,,,{“x”:273万万方:281,,,,,,,{“x”x:236,y:236,y:290方,y:290},,,,,,,,,{“x:253万万万方,y:257,y:257,y:257,y,y:277,y:277,y:277,y:277,y:277,y:273万,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,{“x”:348,“y”:544},{“x”:357,“y”:566},{“x”:360,“y”:573},{“x”:361,“y”:575},{“x”:365,“y”:596},{“x”:372,y:607 7 7,,{“x”:377,y:607 7,,,{“x”:378,y:618,,{“x”:382,y:622},{“x”:382,y:383,y:607,y:607,,,,{“x”:377,y:607,y:607,,,,,,{“x”x:388,y:382,y:622,,,,,,,,,,,,,,,,{“x:383,y:383,y:383,y:383,y:383,y:383,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:383,y:383,y:383,,,,,{x:188,y:514},{x:193,y:514},{x:201,y:514},{x:201,y:514},{x:210,y:514},{x:223,“y”:514},,{“x”:514},{“y”:514},,,{“x”x:236,“y”:514},{“x”:242,“y”:514},,{“x”242,y:514},,{“x”:514},{“x”:514,,{“x”x:224:224,y:514},,,,{“x”x:236,y:514,,,,,,,{“x”x:242;242;242,242,242,y:242,,,,,,,,,,,,,,:242,学校学校学校学校学校学校学校学校学校:242,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:514},,,,,,,,,,,,,,{“x:257万万万万万万万万万万万万万万“““““:292,y:506},{x:302,y:495},{x:309,y:488},{x:326,y:475},{x:331,y:470},{x:335,y:467}“x”:361,“y”:450},,{“x”:361,“y”:450},,,{“x”:361,“y”:450,,,{“x”:365,“y”:441},,{“x”:341,“x”:348,“x”:348,“x”:348,y”:348,“y”:454 7},,,,,,,,,{“x”x:351,451,451,,,,,,,,,,,,,,,,,,,{“x”x:361;361,3万万万万元元元元:450,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,{x:426,y:368},{x:426,y:394},{x:426,y:403},{x:426,y:419},{x:426,y:458},{x:426,“y”:477 7},{“x”:426,“y”:497 7,,{“x”:426,“y”:510},{“x”:426,“y”:526,y:526,,{“x”:426,“y”:426,y:476,y:477},,{“x”:426,y:477,,,{“x”:426”,y:510,,,,,,,{“x”:426,y:426,y:526,y:526,,,,,,,,,,,,,,,,,,,,,,,,,,{“x:426”,526,y:526,y:526,526,526,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,},{x:426,y:643},{x:426,y:645},{x:426,y:645},{x:525,y:480},{x:525,y:475},{x:521,“y”:484},{“x”:499,“y”:493},,{“x”:499,“y”:493,”y:493},,{“x”:493,“y”:493,y:498},,,{“x”:493,y:498,,{“x”:485万万万万万元,,{“x”x:517,y:482,,,,,{“x”:484万万万,,,,,{“x”:499 9 9,y”:493,y:493,,,,,,,,,,,,,,,,,,,{“x”:493万万;493万万万万万元元元元元元元元元元元元3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,{“x:499”499 9 9,”493,,,:439,y:527},{x:434,y:527},{x:431,y:527},{x:434,y:523},{x:439,y:523},{x:441,y:523}“x”:452,“y”:528},,{“x”:452,“y”:528},,,{“x”:456,”y:528,,{“x”:456,“y”:531},,{“x”:456,“y”:531,{“x”:443,y:443,y:443,y:523,,,,{“x”x:447,y:523,,,,,,,,,,{“x”x:459,456,y:456,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2},{“x”:569,“y”:633},{“x”:572,“y”:635},{“x”:581,“y”:639},{“x”:584,“y”:646},{“x”:585,“y”:648},{“x”“:590,”590,“y”:652},,{“x”:593,y:652},,{“x”:594,y:652},{“x”:594,y:656},,,{“x”:593,y:655 5 5 5万,y:652},,,,{“x”:593,y:652,,,,,{“x”x:594,y:594,y:656},,,,,,,,,,,,,,{“x:594,”594,y:594,,,,,,,,,,,,,,,,,,,,:594,594,y:594,y:594,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:594,594,,,,,,,,,,,,,,,,,,,,{x:628,y:388},{x:628,y:411},{x:628,y:437},{x:628,y:446},{x:628,y:467},{x:628,“y”:518},,{“x”:628,“y”:518,,,{“x”:628,“y”:518,,,{“x”:628,“y”:553},,{“x”:628,“y”:553},,{“x”:628,y:506万,y:506万万万万万元,,{“x”:628,y:518,y:518,,,,,,{“x”:628”,y:628,y:553,,,,,,,,,,,,,,,,,,,,:553,,,,,,,,,,,,,,,,,,{“x:628,元元元元元元元元元元元元元元元元7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,{“x:587 7 7 7 7 7{“x:633,y:579},{“x:736,y:708},{“x:736,y:712},{“x:736,y:712},{“x:628,y:531},{“x:633,y:531}”,{x:636,y:531},{x:637,y:531},{x:640,y:531},{x:641,y:531},{x:646,y:531},{x:648,y:531},{x:650,y:531},{x:651,y:531},{x:654,y:531},{x:659,y:531},{x:663,y:531},y:661,y:531},{

“高度”:1548, “宽度”:1536
}

类似的内容只能转换为svg中的路径,而不能转换为pdf,除非先转换为图形。svg生成代码:

public static String generatePath(String input, boolean closePath) {
    Pattern vertexPattern = Pattern.compile("\\{\\\"x\\\"\\:(\\d+),\\\"y\\\"\\:(\\d+)\\}");
    Matcher matcher = vertexPattern.matcher(input);
    List<Point> points = new LinkedList<>();

    while (matcher.find()) {
        int x = Integer.parseInt(matcher.group(1));
        int y = Integer.parseInt(matcher.group(2));
        points.add(new Point(x, y));
    }

    String template = "<svg width=\"100\" height=\"100\" xmlns=\"http://www.w3.org/2000/svg\">"
            + "<path d=\"%s\"/>"
            + "</svg>";
    Point previousPoint = null;
    StringBuilder path = new StringBuilder(256);
    for (Point point : points) {
        if (previousPoint == null || (previousPoint.x != point.x && previousPoint.y != point.y)) {
            path.append(previousPoint == null ? "M " : " L ").append(point.x).append(" ").append(point.y);
        } else if (previousPoint.x != point.x) {
            path.append(" H ").append(point.x);
        } else if (previousPoint.y != point.y) {
            path.append(" V ").append(point.y);
        } else {
            // no actual distance is passed.
        }
        previousPoint = point;
    }
    if (closePath) {
        path.append(" Z");
    }
    return String.format(template, path.toString());
}
公共静态字符串生成器路径(字符串输入,布尔闭合路径){
Pattern vertexPattern=Pattern.compile(\\{\\\\\”x\\\\\“\\:(\\d+,\\\\”y\\\“\\:(\\d+\);
Matcher Matcher=vertexPattern.Matcher(输入);
列表点=新建LinkedList();
while(matcher.find()){
intx=Integer.parseInt(matcher.group(1));
inty=Integer.parseInt(matcher.group(2));
点。添加(新点(x,y));
}
字符串模板=“”
+ ""
+ "";
点previousPoint=null;
StringBuilder路径=新StringBuilder(256);
用于(点:点){
if(previousPoint==null | |(previousPoint.x!=point.x&&previousPoint.y!=point.y)){
path.append(previousPoint==null?“M”:“L”).append(point.x).append(“”).append(point.y);
}else if(上一个点x!=点x){
path.append(“H”).append(点x);
}else if(previousPoint.y!=point.y){
路径附加(“V”).append(点y);
}否则{
//没有经过实际距离。
}
上一个点=点;
}
如果(关闭路径){
路径追加(“Z”);
}
返回String.format(模板,path.toString());
}
此代码将接受您的输入(您提供的输入)但是,您仍然需要添加有关如何处理路径的信息,如颜色等。为此,您可以修改模板字符串。

此处使用
可能比使用
更合适。