Java+Aspose.diagram,导出数据到Visio

2023-11-03

背景: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

@Override
    public 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();
        }
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java+Aspose.diagram,导出数据到Visio 的相关文章

随机推荐

  • ERROR - Connection is read-only.

    今天在serviceImpl的查询中 调用了一样更新的操作 结果出现如下错误 ERROR Connection is read only Queries leading to data modification are not allowe
  • vi笔记3——vi之快速移动

    vi笔记3 vi之快速移动 VI快速移动主要包含以下内容 This chapter covers Movement by screens Movement by text blocks Movement by searches for pa
  • NDIS的NDIS_PROTOCOL_BLOCK和NDIS_OPEN_BLOCK的介绍

    转载自 http blog sina com cn s blog 4de78d5901000bfd html 本人简单的介绍一种更有效的基于NDIS包拦截技术 大家都知道 NDIS协议驱动程序是通过填写一张NDIS PROTOCOL CHA
  • setns对当前进程无效问题的排查(getpid获取值不变)

    1 复现流程及lxc的处理 demo1程序与执行结果如下 此时在容器内部看不到执行的程序 int main int ret fd pid printf father pid old d n getpid fd open dev ns O R
  • Qt中如何执行HTTPS请求

    在Qt中 可以使用QNetworkAccessManager和QNetworkRequest来执行HTTPS请求 以下是一个基本的HTTPS GET请求示例代码 include
  • 链表面试题-合并两个有序单链表(递归和非递归)

    题目描述 合并两个有序单链表 使得最终的链表也是递增的 节点的结构 typedef struct ListNode ListNode next int data Node 递归 Node MergeListR Node Head1 Node
  • Windows 电脑如何查看端口号被哪个程序占用、查杀进程

    Windows 电脑查杀进程的方 netstat ano findstr 9999 taskkill f t im 25146 进入windows命令窗口之后 输入命令netstat ano然后回车 就可以看到当前启动应用的所有的端口使用列
  • Linux sudo免密设置

    1 root用户下执行sudo vi etc sudoers d superadmin 免密用户 2 vi编辑superadmin 免密用户 ALL ALL NOPASSWD ALL 3 保存退出 这样superadmin用户使用sudo
  • ajax实现向购物车添加,jQuery添加到购物车的互动

    插件描述 当用户决定购买某件物品的浮动购物车交互效果 添加到购物车 的过程 我们习惯于不同的模式 这种模式背后的基本思想是以通知用户 项目已添加到购物车 并为他 她提供一个链接来结帐 我们已经尝试过使用默认情况下 隐藏购物车和显示它当用户单
  • 一文玩转 Java 日志数据脱敏

    许多系统为了安全需要对敏感信息 如手机号 邮箱 姓名 身份证号 密码 卡号 住址等 的日志打印要求脱敏后才能输出 本文将结合个人经历及总结分享一种log4j日志脱敏方式 自定义Layout import org apache logging
  • 在vue中使用webpack打包

    1 安装webpack npm install vue 2 vue loader 15 vue template compiler 2 save dev 2 在项目中创建webpack config js 配置 const path req
  • 如何考虑BLL层和DAL层的日志

    DAL层日志 DAL层与数据库交互 日志记录的目的是 1 发生异常时通过日志查找原始信息 便于快速定位原因 2 对于一些复杂的事务可以通过对日志的分析来发现错误的具体位置 BLL层日志 BLL层与UI交互 虽然UI已经对用户输入进行了一些过
  • 创建数据库是列名无效咋办_怎样解决列名无效 - 技术问答 - .Net源码论坛 .net源码,ASP.net

    列名 Class 无效 说明 执行当前 Web 请求期间 出现未处理的异常 请检查堆栈跟踪信息 以了解有关该错误以及代码中导致错误的出处的详细信息 异常详细信息 System Data SqlClient SqlException 列名 C
  • 中小企业如何做好MES管理系统实施建设

    中小企业在生产制造领域面临着诸多挑战 包括提升产品竞争力 规范生产制造等 为了应对这些挑战 越来越多的中小企业开始实施MES生产管理系统 然而 由于企业规模小 资源实力不足等原因 很多企业在实施MES管理系统时存在一定的困难 本文将从认知误
  • Linux for Ubuntu Intellij Idea 免費激活

    注冊碼與方法請點擊這裏 更改hosts方法 sudo gedit etc hosts
  • 【Git基础入门】Git工具的日常基本使用

    Git基础入门 Git工具的日常基本使用 一 git介绍 二 git的四个区域 2 git四个区域名称 2 2 git四个区域工作关系 三 git工作的三种场景 1 场景1 本地目录有代码 2 场景2 本地目录无代码 3 场景3 直接git
  • 设备发现协议SSDP实现

    原理 1 将socket加入239 255 255 250 端口 1900 2 客户端 通过设置setsockopt IPPROTO IP IP ADD MEMBERSHIP属性 可向ssdp组进行组播 3 服务端 通过设置绑定239 25
  • 谷歌&北大扩散模型(Diffusion Model)首篇综述来了!

    本综述 Diffusion Models A Comprehensive Survey of Methods and Applications 来自加州大学 Google Research的Ming Hsuan Yang 北京大学崔斌实验室
  • 透析极大极小搜索算法和α-β剪枝算法(有案例和完整代码)

    文章目录 前言 minimax算法 完整代码 算法思想 代码实现 算法优化 剪枝算法 完整代码 算法思想 代码实现 算法对比 更多案例 结语 前言 先做了一版五子棋的小项目 后面又做了一个功能更强大的中国象棋的项目 但是始终都没有实现一版
  • Java+Aspose.diagram,导出数据到Visio

    背景 java 家谱图导出 主要包括家庭成员图片以及有关系进行连线 项目环境请参考 https download csdn net download weixin 49456013 20085264 或者是参考我关于Aspose相关的文章