背景:java,家谱图导出,主要包括家庭成员图片以及有关系进行连线

项目环境请参考
https://download.csdn.net/download/weixin_49456013/20085264
或者是参考我关于Aspose相关的文章,自己搭建项目
业务代码如下:

DemoController

@GetMapping("/exportVisio")public void exportVisio(HttpServletRequest request, HttpServletResponse response){demoService.exportVisio(request, response);}

DemoService

void exportVisio(HttpServletRequest request, HttpServletResponse response);

DemoServiceImpl

@Overridepublic void exportVisio(HttpServletRequest request, HttpServletResponse response) {try {// 去除水印和数量限制Resource resource = new ClassPathResource("license.xml");InputStream is = resource.getInputStream();License license= new License();license.setLicense(is);// 画图表Resource resource1 = new ClassPathResource("basic.vss");InputStream stream = resource1.getInputStream();Diagram diagram = new Diagram(stream);Page page0 = diagram.getPages().get(0);//插入图片double pinX = 2, pinY = 2, width = 4, hieght = 3;URL url = new URL("https://t7.baidu.com/it/u=3818512871,2061378298&fm=193&f=GIF");//打开链接HttpURLConnection conn = (HttpURLConnection)url.openConnection();//通过输入流获取图片数据InputStream inStream = conn.getInputStream();long one = page0.addShape(pinX, pinY, width, hieght,inStream );//这样写图片的边框会带有颜色,修改边框颜色为白色page0.getShapes().getShape(one).getLine().getLineColor().setValue("#FFFFFF");//在指定位置插入文本图形page0.addText(1, 1, 1, 1, "文本文本");//将所有的文本填充模式设置为不填充for (Shape shape : (Iterable<Shape>) page0.getShapes()) {if (shape.getText().getValue().getText() != ""){shape.getFill().setFillPattern(new IntValue(0,0));}}//也可以在插入的图片上面增加文字page0.getShapes().getShape(one ).getText().getValue().add(new Cp(0));page0.getShapes().getShape(one ).getText().getValue().add(new Txt("TextStyle_Regular\n"));//本地图片插入long two = page0.addShape(pinX, pinY, width, hieght, new FileInputStream("d:\\aa.png"));//连线Shape connector1 = new Shape();long connecter1Id = diagram.addShape(connector1, "Dynamic connector", 0);diagram.getPages().getPage(0).connectShapesViaConnector(two, ConnectionPointPlace.CENTER,one, ConnectionPointPlace.CENTER, connecter1Id);//返回流数据到前端response.setContentType("application/octet-stream");response.setHeader("Content-disposition", "attachment;filename="+ "export.vsdx");OutputStream outputStream = new BufferedOutputStream(response.getOutputStream());DiagramSaveOptions options = new DiagramSaveOptions(SaveFileFormat.VSDX);options.setAutoFitPageToDrawingContent(true);diagram.save(outputStream, options);//强制将缓存区的数据进行输出outputStream.flush();//关流outputStream.close();conn.disconnect();inStream.close();} catch (Exception e){e.printStackTrace();}}

Java+Aspose.diagram,导出数据到Visio相关推荐

  1. Java项目如何导出数据为 PDF 文件?

    文章目录 Java项目如何导出数据为 PDF 文件? 一.代码结构如下 二.代码说明 1.添加依赖 pom.xml 3.添加字体 4.PDF 导出工具类 三.效果图 结语 Java项目如何导出数据为 ...

  2. Java使用itextpdf导出数据为PDF

    导包 pom.xml引入jar包 // itextpdf<dependency><groupId>com.itextpdf</groupId><artifac ...

  3. Java使用poi导出数据到excel(包括xls和xlsx两种格式)并通过浏览器下载

    情景:将数据导出到excel是java开发常用的功能,数据量不大的时候,xls和xlsx两种格式的文件都行,但是数据量太大的时候就有区别了,xls格式的文件一个sheet页最多只能存六万多条数据,而x ...

  4. Java实现Oracle导出数据到Excel

    1.导入相应的jar包(jxl.jar 和 数据库连接的jar包) 2.写数据库连接的工具类 import java.sql.Connection; import java.sql.DriverMan ...

  5. java用模板导出数据表格

    1.创建表格: 2.编写导出的controller; @PostMapping("/cust/report/customer/export") public void export ...

  6. Java Aspose导入导出word文档

    /*** 导出Word数据* @param query* @return* @throws Exception*/public InputStream exportBwClassWord(BwClas ...

  7. java调用npoi_NPOI导出数据到Excel

    前言 Asp.net操作Excel已经是老生长谈的事情了,可下面我说的这个NPOI操作Excel,应该是最好的方案了,没有之一,使用NPOI能够帮助开发者在没有安装微软Office的情况下读写Offi ...

  8. java操作excel导出数据

    /*** 班级管理导出** @param params* @return*/@RequestMapping("/exportClassInfo")public String sea ...

  9. Aspose.Diagram for Java V22.5

    Aspose.Diagram for Java V22.5 Aspose.Diagram for Java 是一个强大的 Microsoft Visio 文件处理 API.它提供了通用功能,例如创建. ...

最新文章

  1. 大数据目标检测推理管道部署
  2. android虚拟键盘挡住布局,Android全屏时软键盘遮住输入框修改布局解决方案
  3. CentOS Linux 7.3 1611 (Core) 配置静态IP地址
  4. 报告解读丨基于消费者洞察的鞋服品牌数字化营销新思路
  5. SSH-jar包相应作用
  6. Git gitignore文件讲解
  7. 正确使用计算机说课稿,《初识计算机》说课稿
  8. 读取 [选项] 列内的默认数据的方法:
  9. SQL Server2008表及字段描述信息处理示例
  10. 深入浅出 Javascript API(一)--基本框架
  11. Element UI 官网以及其他技术文档
  12. oracle循环视频教程,玩转Oracle入门知识和实战教程---韩顺平主讲(全31集)
  13. 大数据:数据大合集,你想要的这里或许会有
  14. Python项目:Django员工管理系统
  15. DataWhale-动手数据分析-Task01:数据加载及探索性数据分析
  16. “添翼杯”人工智能创新应用大赛之垃圾分类
  17. 三分钟集成 TapTap 防沉迷 SDK(Unity 版)
  18. 为何晶振并联一个1MΩ电阻?晶振低温不起振如何解决?
  19. 单源最短路径:最短路径性质的证明
  20. 没有基础可以学java吗?零基础学java

热门文章

  1. 微信小程序安卓机型调用微信支付后取消付款会重新调用一次页面的onShow方法
  2. python浮点数保留两位小数_python中保留两位小数怎么表示
  3. Linux测试IP是否联通(两种方法)
  4. linux thp 参数,THP关闭方法-Transparent Pages
  5. 疯狂JAVA讲义学习——基础代码练习——Interface——接口
  6. 易语言使用线程时钟后MYSQL_易语言多线程时钟周期 易语言三个时钟同时运行
  7. layui+tp Excel表格信息入库,员工信息批量入库 (小笔记)
  8. Go 学习之 defer 篇
  9. HashCode方法
  10. return 1和return 0的区别