精华内容
下载资源
问答
  • 将你所需所需的内容生成二维码,然后在生成二维码下方写上提示语,然后导入word文件中。
  • 生成二维码word

    2019-03-06 11:01:05
    生成二维码word中,可自定义文件名,默认文件名为二维码内容
  • 如何将word文档生成二维码

    千次阅读 2019-07-19 09:46:52
    最近遇到很多客户咨询如何将word文档生成二维码,如何将视频生成二维码,目前二维码中是无法直接储存word文档,视频一类的,唯一的途径就是先把文档和视频信息上传到网站服务器上,然后在二维码生成器中利用相应的...

    最近遇到很多客户咨询如何将word文档生成二维码,如何将视频生成二维码,目前二维码中是无法直接储存word文档,视频一类的,唯一的途径就是先把文档和视频信息上传到网站服务器上,然后在二维码生成器中利用相应的网址生成二维码,接下我们看下如何操作。
    文档上传的网站有很多,比如百度文库,道客巴巴,豆丁等等,把word文档上传到网站,保存网址。(上传的文档一定要是公开的,如果是私有文档只有登录自己账号才能查看)
    在这里插入图片描述
    运行二维码生成器,新建标签,选择打印机和设置标签大小。
    在软件中生成二维码,打开二维码的属性,在“数据源”中修改二维码数据,手动输入word文档的网址。如果想批量生成二维码,可以通过数据库导入的方式导入二维码数据。
    在这里插入图片描述
    在这里插入图片描述
    用手机扫描word文档生成的二维码效果。可以把生成的二维码通过二维码生成器打印出来,或者输出图片,PDF文档保存
    在这里插入图片描述
    在这里插入图片描述
    以上就是把word文档生成二维码的操作过程,在二维码生成器中,如果只保存一个二维码,可以通过右键导出的方式导出二维码图片(PDF,png,jpg,gif),如果要保存批量生成的二维码,可以通过打印设置批量输出二维码图片。

    展开全文
  • 使用spire生成无水印的word并替换word中的图片、无水印pdf及使用QRCoder生成二维码,里面包含可运行的4.0项目,还包含了3.5的无水印的dll
  • 根据word 上的内容,批量生成二维码,然后显示到word ,用户下载。
  • java生成二维码(文档+代码)
  • 替代原草料二维码导出标签 模板示图 方案实现示图 实现步骤 我使用的wps制作word模板,我的模板路径 在word中输入${qrcodepics}; 通过控制页面布局-分栏调整位置、间距、和大小 通过段落布局可以控制图片...

    前言

    有遇到此需求的同学可以参考

    替代原草料二维码导出标签

    模板示图

    模板示图

    方案实现示图

    实现步骤

    1. 我使用的wps制作word模板,我的模板路径

      1. 在word中输入${qrcodepics};

      2. 通过控制页面布局-分栏调整位置、间距、和大小

      3. 通过段落布局可以控制图片的间距,保存即可

    2. 上代码

      1. 用到的包

        <dependency>
                    <groupId>com.google.zxing</groupId>
                    <artifactId>core</artifactId>
                    <version>3.3.3</version>
                </dependency>
        
                <dependency>
                    <groupId>cn.hutool</groupId>
                    <artifactId>hutool-all</artifactId>
                    <version>5.6.5</version>
                </dependency>
        
                <dependency>
                    <groupId>org.apache.poi</groupId>
                    <artifactId>poi-ooxml</artifactId>
                    <version>3.9</version>
                </dependency>
                <!-- word导入导出 -->
                <dependency>
                    <groupId>org.apache.poi</groupId>
                    <artifactId>poi-scratchpad</artifactId>
                    <version>3.9</version>
                </dependency>
      2. 代码较多可以在以下路径查看

        1. 合成二维码标签代码路径 测试合成二维码代码路径
        2. 合成word代码路径 测试合成word代码路径
        3. 使用到的图片资源、word模板路径
      3. 我成功导出word

    3. 配置文件资源路径,可在UserQrCodeUtil中配置logo路径、临时文件夹地址、背景图

      public class UserQrCodeUtil {
      
          /**
           * logo路径
           */
          private static String LOGO_PATH;
      
          /**
           * 临时文件夹地址
           */
          private static String TEMP_PATH;
      
          private static List<String> TEMP_FILES_PATH;
          /**
           * 背景图
           */
          private static String BG_IMG_PATH;

    总结

    1. 导出word模板的变化,一般修改word模板、底板图片,自己随便调着玩一玩,大概就比较清楚了

    问题

    可能会遇到的问题:

    1. 问题1:保存模板后调用导出时识别不到${qrcodepics}

      将word模板另存为xml格式,搜索qrcodepics字符,把它的${、}拿回到它自己,再将xml保存为word即可

    评论

    有什么问题可以在gitee通过 Issue 发布,我们可以相互学习

    本文由博客群发一文多发等运营工具平台 OpenWrite 发布

    展开全文
  • VBA 生成二维码

    2016-02-18 09:01:48
    vba代码生成二维码,需要改写代码,生成的二维码比较大
  • 分为两本分演示,第一部分生成word文档下载到本地,第二部分是生成二维码word再保存本地

     

    springboot生成二维码在word文档,并下载到本地

    分为两部分演示,第一部分简单的生成word文档并保存到本地;第二部分生成二维码在word文档,并保存到本地。

     

    第一部分

     首先引入word的依赖资源

    <!--word相关jar-->
    		<!--iText是一个非常著名的能够快速产生 PDF 文件的 Java 类库。支持文本,表格,图形的操作,可以方便的跟 Servlet 进行结合-->
    		<dependency>
    			<groupId>com.lowagie</groupId>
    			<artifactId>itext</artifactId>
    			<version>2.1.7</version>
    		</dependency>
    		<!-- itext-rtf是生成word需要用到的资源 -->
    		<dependency>
    			<groupId>com.lowagie</groupId>
    			<artifactId>itext-rtf</artifactId>
    			<version>2.1.7</version>
    		</dependency>
    		<!-- 使用itext-asian解决中文不显示的问题 -->
    		<dependency>
    			<groupId>com.itextpdf</groupId>
    			<artifactId>itext-asian</artifactId>
    			<version>5.2.0</version>
    		</dependency>

    创建Word,并且写入IO流中,前端获取文件流才能保存在本地

    public void createWord(HttpServletResponse response)throws DocumentException, UnsupportedEncodingException{
    
    	 	// 以A4纸大小输出word
            Document doc = new Document(PageSize.A4);
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            // 把word与输出流绑定
            RtfWriter2.getInstance(doc, baos);
            // 开始写入word,必须调用这个方法才能进行word的写入
            doc.open();
     
            // 加载额外字体的第一种方法:iText本身支持的字体少,这个时候可以使用系统自带的字体
            FontFactory.register("C:\\user\\download\\simsun.ttc");
     
            // 这是另一种加载字体的方法,把字体文件放到webapp下,防止某些电脑并没有第一种方法中的字体.
            String realPath = req.getSession().getServletContext().getRealPath("/") + "font/";
            FontFactory.register(realPath + "FZSTK.TTF"); // 方正舒体
            FontFactory.register(realPath + "simfang.ttf"); // simfang
            FontFactory.register(realPath + "simhei.ttf");  // 黑体
            FontFactory.register(realPath + "simkai.ttf");
     
            // 对字体文件右键查看详细信息的标题,可以获取getFont方法中第一个参数的字符串.
            // 第二个参数不用管是编码集, 第三个参数是字体大小
            Font titlefont = FontFactory.getFont("simsun", BaseFont.WINANSI, 13);
     
            // 设置字体大小
            titlefont.setSize(14);
            //  设置字体格式,只能设置一种格式
            titlefont.setStyle(Font.BOLD);
            // 设置字体的重载方法,可以传递多种样式,比如加粗倾斜
            titlefont.setStyle("bold, italic");
            // 加入一个段落,第一个参数是段落内容,第二个是字体
            Paragraph paragraph = new Paragraph("第一个段落", titlefont);
            // 设置段落的首行缩进
            paragraph.setFirstLineIndent(50);
            // 设置段落的段前间距,单位是float,这里与word本身不同不是磅值是厘米
            paragraph.setSpacingBefore(5);
            // 设置段落的段后间距,单位是float,这里与word本身不同不是磅值是厘米
            paragraph.setSpacingAfter(5);
            // 设置段落的右侧间距
            paragraph.setIndentationRight(30);
            // 设置段落的左侧间距
            paragraph.setIndentationLeft(30);
            // 将段落添加到word
            doc.add(paragraph);
     
            // 申明一个6行的表格
            Table table = new Table(6);
            // 设置表格宽度
            table.setBorderWidth(1);
            // 设置表格每行的单元格的宽度,数组的长度表明了每行的单元格数量
            int[] widths = {10, 13, 13, 15, 15, 15};
            // 设置每行的单元格
            table.setWidths(widths);
            // 设置表格所占的%
            table.setWidth(91);
            // 设置表格的对齐方式
            table.setAlignment(ALIGN_MIDDLE);
            table.setAlignment(ALIGN_CENTER);
     
     
            for (int j = 0; j < 6; j++) {
                for (int i = 0; i < 6; i++) {
                    // 申明一个单元格,Phrase表示单元格内容,参数1是单元格的文本内容,参数2是字体
                    Cell cell = new Cell(new Phrase("content" + i, titlefont));
                    // 水平对齐方式
                    cell.setHorizontalAlignment(ALIGN_CENTER);
                    // 垂直对齐方式
                    cell.setVerticalAlignment(ALIGN_MIDDLE);
                    // 将单元格插入到表格
                    table.addCell(cell);
                }
            }
     
            // 将表格添加到word
            doc.add(table);
     
            //添加图片
            Image img = null;
            String imgUrl = "d://dog.png";
            if(!StringUtil.isEmpty(imgUrl)){
                try {
                    // 这个方法用于获取图片,可以传递图片的路径,或者可以传递图片的byte[]内容
                    img = Image.getInstance(imgUrl);
                    // 设置图片大小
                    img.scaleAbsolute(160, 160);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
     
            doc.add(img);
            // 关闭word文档对象,调用这个方法之后就无法添加内容到这个doc对象了.
            doc.close();
     
            String fileName = System.currentTimeMillis()+".docx";
            response.setContentType("application/msword;charset=UTF-8");
            response.setHeader("Content-Disposition",
                "attachment; filename=" + new String(fileName.getBytes("gb2312"), "ISO8859-1"));
            // 得到输入流
            try (OutputStream os = response.getOutputStream()) {
                
                ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
                baos.close();
                os = response.getOutputStream();
                byte[] b = new byte[10240];
                int length;
                while ((length = bais.read(b))> 0) 
                  os.write(b, 0, length);
                os.flush();
                os.close();
                bais.close();
            } catch (Exception e) {
                LOGGER.error(e.getLocalizedMessage(), e);
            }
    
    
    }

    好了,到了这一步基本完成,剩下的就是前端js获取。

    开大招

    前端下载到本地是因为用到了<a download href="D:\Program Files (x86)\pictrues\123.jpg">下到本地的word</a>

    说白了就是a标签加上down属性就能下载,但是这涉及一个跨越的问题。如果是获取一个本地的资源能够直接下载,可是如果href引入的是外部资源则是打开操作了,是不能直接下载了。这个时候我们需要用到DOM里面的一个方法XMLHttpRequest().看代码

    js部分

    <script type="text/javascript">
        function xmlrequest(url) {
            console.log("点击")
            const xmlreq = new XMLHttpRequest();//直接拿到写这个方法即可,不需要导入资源
            xmlreq.open("GET", url);//第一个是请求方式,第二个请求地址
            xmlreq.responseType = 'blob';//赋值一个Bolb对象
            xmlreq.setRequestHeader('Content-Type', 'application/msword');//请求头必须在open()方法和send()的中间
            xmlreq.onload = function () {
                //这一部分就是响应的数据
                const data = xmlreq.response;
                const blob = new Blob([data]);
                const blobUrl = window.URL.createObjectURL(blob);
                console.log(blobUrl)
                //这个方法是创建a标签,并且将响应的信息放进a标签后下载到本地
                download(blobUrl, xmlreq);
            }
    
            xmlreq.send();
        };
    
        //得到a标签并赋值href点击下载
        function download(blobUrl,xmlreq) {
            //var a = document.getElementById('linka');
            var a = document.createElement('a');
            //得到后台传到前台的文件名
            var filename = xmlreq.getResponseHeader("content-disposition");
            console.log(filename)
            if(filename){
                // a.download = filename.match(/filename="(\S*)"/)[1];
                a.download = filename.substring(filename.indexOf("=")+1,filename.length)
            }else{
                a.download = "word.docx"//没有获取的后端的名字则加入一个文档名字
            }
    
            a.href = blobUrl;
            a.click();//点击a标签,令其自动下载
        }
    
        document.querySelector('button').onclick = function () {
            xmlrequest('createWord')
        }
    
    </script>

    html部分

    <form class="form-horizontal m-t" id="signupForm">    
        <div class="text-right form-group">
            <button id="clickBtn" type="button" class="btn btn-primary waves-effect waves-light">点击</button>
        </div>
    </form>

    搞定!!

    第二部分

     这一部分主要生成二维码,然后将其放入文档中,再下载本地

    同样的,首先引入依赖资源

            <!--二维码生成-->
            <!-- 谷歌提供的生成二维码的工具 -->
            <dependency>
                <groupId>com.google.zxing</groupId>
                <artifactId>javase</artifactId>
                <version>3.3.1</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/com.google.zxing/core -->
            <dependency>
                <groupId>com.google.zxing</groupId>
                <artifactId>core</artifactId>
                <version>3.3.1</version>
            </dependency>

    生成二维码工具类

    package com.bootdo.common.task;
    
    
    import com.bootdo.common.utils.CreateWord;
    import com.google.zxing.BarcodeFormat;
    import com.google.zxing.EncodeHintType;
    import com.google.zxing.MultiFormatWriter;
    import com.google.zxing.WriterException;
    import com.google.zxing.common.BitMatrix;
    import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
    import com.lowagie.text.*;
    import com.lowagie.text.Image;
    
    import javax.annotation.Resource;
    import javax.imageio.ImageIO;
    import java.awt.*;
    import java.awt.Font;
    import java.awt.List;
    import java.awt.image.BufferedImage;
    import java.io.*;
    import java.util.HashMap;
    import java.util.Map;
    
    
    /**
     * 二维码生成
     */
    public class ZXingCode {
    
        /**
         * 颜色
         */
        private static final int QRCOLOR = 0xFF000000;
        /**
         * 背景颜色
         */
        private static final int BGWHITE = 0xFFFFFFFF;
    
    
        /**
         * 生成二维码方法
         *
         * @param data 内容
         * @param belowText 外部文字
         * @return
         */
        public static com.lowagie.text.Image getQRCode(String data, String belowText) {
            com.lowagie.text.Image imageByte =null;
            try {
                ZXingCode zp = new ZXingCode();
                BufferedImage bim = zp.generateQRCodeBufferedImage(data, BarcodeFormat.QR_CODE, 230, 230, zp.getDecodeHintType());
                //字节数组
                imageByte = zp.addTextForQRCode(bim, belowText);
    
    //            return imageByte;
            } catch (Exception e) {
                e.printStackTrace();
            }
            System.out.println("二维码生成,并返回文件流");
            return imageByte;
        }
    
        /**
         * @param bim       放在内存中图片
         * @param belowText 二维码下方显示文字
         * @return
         */
        public com.lowagie.text.Image addTextForQRCode(BufferedImage bim, String belowText) {
            try {
                BufferedImage image = bim;
                if (belowText != null && !belowText.equals("")) {
                    BufferedImage outImage = new BufferedImage(230, 245, BufferedImage.TYPE_4BYTE_ABGR);
                    Graphics2D outg = outImage.createGraphics();
                    outg.drawImage(image, 0, 0, image.getWidth(), image.getHeight(), null);
                    outg.setColor(Color.BLACK);
                    //获得本地字体列表
    //                String[] fonts = this.getFontName();
                    outg.setFont(new Font("SansSerif", Font.PLAIN, 18));
                    int strWidth = outg.getFontMetrics().stringWidth(belowText);
                    outg.drawString(belowText, 100 - strWidth / 2 + 8, image.getHeight() + (outImage.getHeight() - image.getHeight()) / 2 + 5);
                    outg.dispose();
                    outImage.flush();
                    image = outImage;
                }
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                baos.flush();
                ImageIO.write(image, "png", baos);
                BufferedImage newBufferedImage = new BufferedImage(
                        image.getWidth(), image.getHeight(),
                        BufferedImage.TYPE_INT_RGB);
                newBufferedImage.createGraphics().drawImage(image, 0, 0,
                        Color.WHITE, null);
    //            存放本地
    //            ImageIO.write(newBufferedImage, "png", new File(CODEPATH + "SZ-" + System.currentTimeMillis() + "code.png"));
                com.lowagie.text.Image imageByte = com.lowagie.text.Image.getInstance(baos.toByteArray());
                baos.close();
                image.flush();
                return imageByte;
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    
        /**
         * 绘制二维码,不带文字
         *
         * @param content       扫描内容
         * @param barcodeFormat 格式
         * @param width
         * @param height
         * @param hints         二维码属性设置
         * @return 放到内存中,后续再二维码下方添加文字
         */
        public BufferedImage generateQRCodeBufferedImage(String content, BarcodeFormat barcodeFormat, int width, int height, Map<EncodeHintType, ?> hints) {
            MultiFormatWriter multiFormatWriter = null;
            BitMatrix bm = null;
            BufferedImage image = null;
            try {
                multiFormatWriter = new MultiFormatWriter();
                bm = multiFormatWriter.encode(content, barcodeFormat, width, height, hints);
                int w = bm.getWidth();
                int h = bm.getHeight();
                image = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
                for (int x = 0; x < w; x++) {
                    for (int y = 0; y < h; y++) {
                        image.setRGB(x, y, bm.get(x, y) ? QRCOLOR : BGWHITE);
                    }
                }
            } catch (WriterException e) {
                e.printStackTrace();
            }
            return image;
        }
    
        /**
         * 设置二维码属性
         *
         * @return
         */
        public Map<EncodeHintType, Object> getDecodeHintType() {
            Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>();
            hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
            hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
            hints.put(EncodeHintType.MARGIN, 0);
            hints.put(EncodeHintType.MAX_SIZE, 350);
            hints.put(EncodeHintType.MIN_SIZE, 100);
            return hints;
        }
    
        /**
         * 获得本地字体列表
         * @return 字体数组
         */
        public String[] getFontName(){
            GraphicsEnvironment e = GraphicsEnvironment.getLocalGraphicsEnvironment();
            String[] fontName = e.getAvailableFontFamilyNames();
            return fontName;
        }
    
    }
    

    还是生成一个word,调用生成二维码的方法,将二维码写入word里面

        @PostMapping("/createWordTest")
        public void wordTest(HttpServletResponse response, @RequestBody EmptyContainer emptyContainer) throws DocumentException, UnsupportedEncodingException{ 
                   
            System.out.println("word接收");
            System.out.println("供应商:"+emptyContainer.getSupplier());
            System.out.println("填写人:"+emptyContainer.getWriter());
            System.out.println("数量:"+emptyContainer.getNumber());
            Integer number = emptyContainer.getNumber();
            
            Document doc = new Document(PageSize.A4);
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            // 把word与输出流绑定
            RtfWriter2.getInstance(doc, baos);
            // 开始写入word,必须调用这个方法才能进行word的写入
            doc.open();
    
            Font titlefont = FontFactory.getFont("simsun", BaseFont.WINANSI, 14);
    
            Paragraph paragraph = new Paragraph("伏地魔");
            //设置标题格式对齐方式
            paragraph.setAlignment(Element.ALIGN_CENTER);
    
            // 将段落添加到word
            doc.add(paragraph);
    
            // 申明一个6行的表格
            Table table = new Table(2);
    
            // 设置表格所占的%
            table.setWidth(95);
            table.setSpacing(20);
            table.setBorderWidth(0);//表格的线条设置为0
    
            for (int i = 0; i < number; i++) {
                //调用生成二维码的工具,然后写进表格里面
                Image image = ZXingCode.getQRCode("https://www.bilibili.com/", emptyContainer.getSupplier());
                //设置图片等比例缩小
                image.scalePercent(55);
                // 申明一个单元格,Phrase表示单元格内容,参数1是单元格的文本内容,参数2是字体
    //            Cell cell = new Cell(new Phrase("content" + i, titlefont));
                Cell cell = new Cell(image);
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setVerticalAlignment(Element.ALIGN_CENTER);
                cell.setBorderWidth(0);//单元格的线条设置为0
    
                // 将单元格插入到表格
                table.addCell(cell);
            }
    
            // 将表格添加到word
            doc.add(table);
            doc.add(new Paragraph("\n"));
            logger.info("word----success");
            // 关闭word文档对象,调用这个方法之后就无法添加内容到这个doc对象了.
            doc.close();
    
            String fileName = System.currentTimeMillis()+".docx";
            response.setContentType("application/msword;charset=UTF-8");
            response.setHeader("Content-Disposition",
                    "attachment; filename=" + new String(fileName.getBytes("gb2312"), "ISO8859-1"));
    
            try (OutputStream os = response.getOutputStream()) {
                //这个是spring的工具类 ,是下面注释代码的实现
                StreamUtils.copy(baos.toByteArray(), os);
                    /*
                     ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
                     baos.close();
                     os = response.getOutputStream();
                     byte[] b = new byte[10240];
                     int length;
                     while ((length = bais.read(b))> 0)
                       os.write(b, 0, length);
                     os.flush();
                     os.close();
                     bais.close();*/
            } catch (Exception e) {
    //                 LOGGER.error(e.getLocalizedMessage(), e);
                e.fillInStackTrace();
            }   
        }

    大功告成,前端接收都是一样,这里就不粘了

    下载的word有可能打不开,那是兼容的问题,网上下一个wps就好了!

    展开全文
  • 很多时候有批量生成二维码的需求,虽然有很多在线工具,但使用场景都无法完全匹配;所幸自己写个工具,方便工作,提高效率! 使用方法很简单,一键搞定;
  • 首先在pom文件中引入用于生成二维码word的jar包 <!--二维码生成--> <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</art...

    琢磨了很久,也搜了网上的不少资源,最后总结出来的这套代码功能算是比较全的了。
    首先在pom文件中引入用于生成二维码和word的jar包

            <!--二维码生成-->
    		<dependency>
    			<groupId>com.google.zxing</groupId>
    			<artifactId>core</artifactId>
    			<version>2.3.0</version>
    		</dependency>
    		<!--word相关jar-->
    		<dependency>
    			<groupId>com.lowagie</groupId>
    			<artifactId>itext</artifactId>
    			<version>2.1.7</version>
    		</dependency>
    		<dependency>
    			<groupId>com.lowagie</groupId>
    			<artifactId>itext-rtf</artifactId>
    			<version>2.1.7</version>
    		</dependency>
    		<dependency>
    			<groupId>com.itextpdf</groupId>
    			<artifactId>itext-asian</artifactId>
    			<version>5.2.0</version>
    		</dependency>
    

    直接上代码

    生成二维码;

    package com.tfjybj.library.template;
    
    import com.google.zxing.BarcodeFormat;
    import com.google.zxing.EncodeHintType;
    import com.google.zxing.MultiFormatWriter;
    import com.google.zxing.WriterException;
    import com.google.zxing.common.BitMatrix;
    import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
    import com.lowagie.text.*;
    import com.lowagie.text.Image;
    
    import javax.annotation.Resource;
    import javax.imageio.ImageIO;
    import java.awt.*;
    import java.awt.Font;
    import java.awt.List;
    import java.awt.image.BufferedImage;
    import java.io.*;
    import java.util.HashMap;
    import java.util.Map;
    import com.tfjybj.library.template.CreateWord;
    
    /**
     * @author 信息二班郄先生
     * @date 2019-3-24 14:34:47
     * 二维码生成
     */
    public class ZXingCode {
        /**
         * 颜色
         */
        private static final int QRCOLOR = 0xFF000000;
        /**
         * 背景颜色
         */
        private static final int BGWHITE = 0xFFFFFFFF;
    
    //    private CreateWord createWord;
        /**
         * 存放路径
         */
    //    private static final String CODEPATH = ".\\library2-provider\\src\\main\\java\\com\\tfjybj\\library\\template\\codeImage\\";
    //    public static void main(String[] args) {
            CreateWord createWord = new CreateWord();
    //        try {
    //            System.out.println(System.currentTimeMillis());
    //            getQRCode("傻呗呗", "扫一扫有惊喜");
                java.util.List<Image> imageList = null;
                imageList.add(imageByte);
                createWord.createDocContext(imageList,httpServletRequest,httpServletResponse);
    //            System.out.println(System.currentTimeMillis());
    //            System.out.println("生成ok");
    //        } catch (Exception e) {
    //            e.printStackTrace();
    //        }
    //    }
    
        /**
         * 生成二维码方法
         *
         * @param data 索书号
         * @param belowText 书名
         * @return
         */
        public static com.lowagie.text.Image getQRCode(String data, String belowText) {
            com.lowagie.text.Image imageByte =null;
            try {
                ZXingCode zp = new ZXingCode();
                BufferedImage bim = zp.generateQRCodeBufferedImage(data, BarcodeFormat.QR_CODE, 230, 230, zp.getDecodeHintType());
                //字节数组
                imageByte = zp.addTextForQRCode(bim, belowText);
    
    //            return imageByte;
            } catch (Exception e) {
                e.printStackTrace();
            }
            return imageByte;
        }
    
        /**
         * @param bim       放在内存中图片
         * @param belowText 二维码下方显示文字
         * @return
         */
        public com.lowagie.text.Image addTextForQRCode(BufferedImage bim, String belowText) {
            try {
                BufferedImage image = bim;
                if (belowText != null && !belowText.equals("")) {
                    BufferedImage outImage = new BufferedImage(230, 245, BufferedImage.TYPE_4BYTE_ABGR);
                    Graphics2D outg = outImage.createGraphics();
                    outg.drawImage(image, 0, 0, image.getWidth(), image.getHeight(), null);
                    outg.setColor(Color.BLACK);
                    //获得本地字体列表
    //                String[] fonts = this.getFontName();
                    outg.setFont(new Font("SansSerif", Font.PLAIN, 18));
                    int strWidth = outg.getFontMetrics().stringWidth(belowText);
                    outg.drawString(belowText, 100 - strWidth / 2 + 8, image.getHeight() + (outImage.getHeight() - image.getHeight()) / 2 + 5);
                    outg.dispose();
                    outImage.flush();
                    image = outImage;
                }
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                baos.flush();
                ImageIO.write(image, "png", baos);
                BufferedImage newBufferedImage = new BufferedImage(
                        image.getWidth(), image.getHeight(),
                        BufferedImage.TYPE_INT_RGB);
                newBufferedImage.createGraphics().drawImage(image, 0, 0,
                        Color.WHITE, null);
    //            存放本地
    //            ImageIO.write(newBufferedImage, "png", new File(CODEPATH + "SZ-" + System.currentTimeMillis() + "code.png"));
                com.lowagie.text.Image imageByte = com.lowagie.text.Image.getInstance(baos.toByteArray());
                baos.close();
                image.flush();
                return imageByte;
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    
        /**
         * 绘制二维码,不带文字
         *
         * @param content       扫描内容
         * @param barcodeFormat 格式
         * @param width
         * @param height
         * @param hints         二维码属性设置
         * @return 放到内存中,后续再二维码下方添加文字
         */
        public BufferedImage generateQRCodeBufferedImage(String content, BarcodeFormat barcodeFormat, int width, int height, Map<EncodeHintType, ?> hints) {
            MultiFormatWriter multiFormatWriter = null;
            BitMatrix bm = null;
            BufferedImage image = null;
            try {
                multiFormatWriter = new MultiFormatWriter();
                bm = multiFormatWriter.encode(content, barcodeFormat, width, height, hints);
                int w = bm.getWidth();
                int h = bm.getHeight();
                image = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
                for (int x = 0; x < w; x++) {
                    for (int y = 0; y < h; y++) {
                        image.setRGB(x, y, bm.get(x, y) ? QRCOLOR : BGWHITE);
                    }
                }
            } catch (WriterException e) {
                e.printStackTrace();
            }
            return image;
        }
    
        /**
         * 设置二维码属性
         *
         * @return
         */
        public Map<EncodeHintType, Object> getDecodeHintType() {
            Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>();
            hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
            hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
            hints.put(EncodeHintType.MARGIN, 0);
            hints.put(EncodeHintType.MAX_SIZE, 350);
            hints.put(EncodeHintType.MIN_SIZE, 100);
            return hints;
        }
    
        /**
         * 获得本地字体列表
         * @return 字体数组
         */
        public String[] getFontName(){
            GraphicsEnvironment e = GraphicsEnvironment.getLocalGraphicsEnvironment();
            String[] fontName = e.getAvailableFontFamilyNames();
            return fontName;
        }
    
    }
    
    

    排列二维码放入word并批量导出

    package com.tfjybj.library.template;
    
    import com.lowagie.text.Document;
    import com.lowagie.text.DocumentException;
    import com.lowagie.text.*;
    import com.lowagie.text.Image;
    import com.lowagie.text.rtf.RtfWriter2;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.*;
    import java.util.List;
    
    //将二维码输出到word中
    /**
     * @author 信息二班郄先生
     * @date 2019-3-24 14:34:47
     */
    public class CreateWord {
        //HttpServletRequest request, HttpServletResponse response可以不加这两个参数
    
        /**
         *
         * @param imageList 图片字节流集合
         * @param response 返回word
         * @throws DocumentException 文档错误抛出
         * @throws IOException 输入输出错误抛出
         */
        public static void createDocContext(List<Image> imageList,HttpServletResponse response) throws DocumentException, IOException {
            File file1 = new File("TwoCodeImage.doc");
    //        judeFileExists(file1);
            Document document = new Document();
            // 建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中
            RtfWriter2.getInstance(document, new FileOutputStream(file1));
            document.open();
            Paragraph title = new Paragraph("图书索书号二维码");
            //设置标题格式对齐方式
            title.setAlignment(Element.ALIGN_CENTER);
            document.add(title);
            // 设置 Table 表格
            //设置表格,将图片加到表格中进行方便定位
            Table aTable = new Table(4);
            // 设置每列所占比例
            // 占页面宽度 90%
            aTable.setWidth(100);
            // 自动填满
            // aTable.setAutoFillEmptyCells(true);
            //这里是imagelist集合,就是图片字节流的集合,图片从流中去获取放到word中
            for (int i = 0; i < imageList.size(); i++) {
                //设置图片等比例缩小
                imageList.get(i).scalePercent(55);
                aTable.addCell(new Cell(imageList.get(i)));
            }
            document.add(aTable);
            document.add(new Paragraph("\n"));
            System.out.println("word----success");
            document.close();
            //响应浏览器 返回下载
            response.setContentType("applicaiton/x-download");
            response.addHeader("Content-Disposition", "attachment;filename=" + "TwoCodeImage.doc");
            InputStream is = null;
            OutputStream os = null;
            BufferedInputStream bis = null;
            BufferedOutputStream bos = null;
            is = new FileInputStream(new File("TwoCodeImage.doc"));
            bis = new BufferedInputStream(is);
            os = response.getOutputStream();
            bos = new BufferedOutputStream(os);
            byte[] b = new byte[1024];
            int len = 0;
            while ((len = bis.read(b)) != -1) {
                bos.write(b, 0, len);
            }
            bis.close();
            is.close();
            bos.close();
            os.close();
            //删除本地临时文件
            file1.delete();
        }
    }
    
    

    最后上效果图:
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • C#借助第三方类库,生成二维码word
  • 根据Excel文件生成二维码,生成后的二维码以Word的形式显示
  • 纯代码生成二维码
  • ​我最近在给自己的公众号分栏目, 恰好可以用里面的文字来给公众号logo生成文字云 image 输入文字 image 图中绿色标注的Size参数有些特别: 如果词组(比如谷粒)只使用一次,Size可以精确控制词组的尺寸, ...
  • java生成二维码

    2018-06-05 15:47:23
    java生成二维码,里面有代码和最新的类库使用。如果有什么不清楚的,可以看word文档,也有介绍
  • 实现word、excel转pdf;自动加盖电子印章;自动加盖二维码。包含itextpdf-5.5.8.jar、core-3.3.0.jar、aspose-words-18.6-jdk16.jar、aspose-cells-8.5.2.jar、jacob.jar、javase-3.3.0.jar
  • # 不扯那些没用的,看代码 * 导出二维码答题地址。 * * @param surveyForm * @param file * @return * @throws Exception */ @SuppressWarnings("resource") public String createUrlWordFile(S...
  • 第一步:先安装qrencode brew install qrencode 第二步:生成二维 qrencode -s 16 -t png -o a.png '{"bestbeforeDate...这是一个通过json字符串生成二维码的例子 详情请参考:libqrencodehttps://fukuchi.or...
  • /** * Creater:SHAO Gaige * Description: * Log: */ public class Base64Util { /** * 根据String path 生成二维码图片 并保存本地 * 然后进行base64位读取 返回以流的形式 */ public static void main...
  • 本文主要介绍两个可用于生成二维码的Python第三方库:MyQR和qrcode。MyQR的使用:安装:pip install MyQR导入:from MyQR import myqrimport os生成二维码:# 可用字符:数字0到9,大小写英文字母,常用英文标点符号...
  • wordpress页面生成二维码

    千次阅读 2020-08-14 08:51:49
    正文内容 wordpress页面生成二维码 wordpress页面生成二维码 二维码的生成方便移动端访问,特别当你的主题是自适应主题的时候,有时候我们可以在侧边栏工具上放置一个生成二维码的功能,让我们的主题很炫,很...
  • 常见的两种简单生成二维码方法,目测均是很好用的 1.MyQR 要求是python3 ,并且二维码上的内容不支持中文 #1.生成普通二维码 #在程序中导入MyQR包下的模板myqr,其中word参数接收一个字符串作为二维码的内容。 ...
  • PDF二维码可以展示的内容很多样:品牌故事、产品图文详情、安装指导、售后服务联系方式等。 就拿产品说明书二维码来说,将其印制在产品包装上、企业宣传册上、海报上等,不论用户在哪里,只需要扫描二维码便可以查看...
  • 开源)Java生成二维码分享海报

    千次阅读 多人点赞 2019-05-05 07:24:38
    这一篇文章我们就用 Java 来生成一下仿金山词霸的海报。
  • 后台生成二维码

    千次阅读 2019-08-23 15:55:22
    后台生成二维码 在一些类似于管理系统的项目中,我们在登录时经常会用到图片验证码。这里把我自己写的一个小系统(后台是java语言)的验证码部分摘出来。 总体思路是后端有一个生成验证码图片的接口,把验证码图片...
  • 笔者日常: 第一次用markdown写文章,有点手生~ 声明: 此工具类由本人二次整理改造后分享给大家,原编写者未知,虽然本人重写了大部分逻辑代码,但是核心部分仍然是采用的原来... 生成二维码: 方式一: 执行方...
  • BossMEI V1.2功能说明:根据txt文件里每行的内容生成二维码图片并将其拍了进word里面便于测试及打印等。 BossMEI V1.2使用说明:选中含内容txt文件,点击开始即可 另外:1、生成的二维码默认生成为均匀分布16/...
  • 强大的SpringBoot,如何生成二维码

    千次阅读 2020-12-11 16:01:28
    文章目录 效果图 步骤 maven依赖 工具类 service ...-- 生成二维码--> <dependency> <groupId>com.google.zxing</groupId> <artifactId>javase</artifactId...
  • 本文介绍如何在Word文档中添加条码、二维码。可在文档正文段落中添加,也可在页眉页脚中添加。下面将通过Java代码示例介绍如何实现。 使用工具:Free Spire.Office for Java(免费版) 关于Jar导入的方法: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,493
精华内容 2,197
关键字:

word根据内容生成二维码