java 打印jpg、pdf、word

PDFBox打印PDF A4格式文档和定制规格条码实例 新接手一个打印终端的项目,要求可以打印A4格式的单据和 70mm * 40mm 规格的条码。 整体流程可分两种情况, 一种是将打印模板转换为pdf文档二进制数组,进而生成为pdf文档,保存到本地,然后再读取到程序中,打印,最后删除生成的pdf文档(不然随着打印次数的增多,本地磁盘岂不爆满); 另一种是省略保存中间步骤,直接将打印模板转换得到的pdf文档二进制数组用于程序打印。 显然,第二种... 阅读详情

转自: https://blog.youkuaiyun.com/vatxiongxiaohui/article/details/83985896

目录

一、Java的打印简介

二、Java打印实现

2.1 JPG图片文件格式打印实现

2.2 PDF文件格式打印实现

2.3 Word文件格式打印实现

2.3.1 Word文件采用jacob插件进行打印实现。

2.3.2 先将word转化为pdf文件,然后打印pdf(lz使用)

三、总结

一、Java的打印简介
在我们的实际工作中,经常需要实现打印功能。但由于历史原因,Java 提供的打印功能一直都比较弱。实际上最初的 jdk 根本不支持打印,直到 jdk1.1 才引入了很轻量的打印支持。实际上,SUN 公司也一直致力于 Java 打印功能的完善,而 Java2 平台则终于有了一个健壮的打印模式的开端, jdk1.4 则提供了一套完整的"Java 打印服务 API" (Java Print Service API),它对已有的打印功能是积极的补充。

本次调研的打印对象主要是JPG,PDF和Word这三种常见文件格式。

二、Java打印实现
2.1 JPG图片文件格式打印实现
打印JPG图片格式的文件,本次采用的Java原生的打印方式。

jdk1.4之后对打印功能有了很好的支持。Java 的打印 API 主要存在于 java.awt.print 包中。而 jdk1.4 新增的类则主要存在于 javax.print 包及其相应的子包 javax.print.event 和 javax.print.attribute 中。其中 javax.print 包中主要包含打印服务的相关类,而 javax.print.event 则包含打印事件的相关定义,javax.print.attribute 则包括打印服务的可用属性列表等。可以很好的解决打印JPG图片格式的需求。

优点:jdk的原生支持的打印功能,可直接使用,支持设置各项打印参数。

缺点:局限性较大,只能打印一些图片和文本格式的文件。

具体实现如下:

public static void main(String[] argv) throws Exception {
        File file = new File("E:\\a.jpg");
        String printerName = "HP MFP M436 PCL6";//打印机名包含字串
        PDFPrint(file,printerName);
    }
// 传入文件和打印机名称
public static void JPGPrint(File file,String printerName) throws PrintException {
    if (file == null) {
        System.err.println("缺少打印文件");
    }
    InputStream fis = null;
    try {
        // 设置打印格式,如果未确定类型,可选择autosense
        DocFlavor flavor = DocFlavor.INPUT_STREAM.JPEG;
        // 设置打印参数
        PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
        aset.add(new Copies(1)); //份数
        //aset.add(MediaSize.ISO.A4); //纸张
        // aset.add(Finishings.STAPLE);//装订
        aset.add(Sides.DUPLEX);//单双面
        // 定位打印服务
        PrintService printService = null;
        if (printerName != null) {
            //获得本台电脑连接的所有打印机
            PrintService[] printServices = PrinterJob.lookupPrintServices();
            if(printServices == null || printServices.length == 0) {
                System.out.print("打印失败,未找到可用打印机,请检查。");
                return ;
            }
            //匹配指定打印机
            for (int i = 0;i < printServices.length; i++) {
                System.out.println(printServices[i].getName());
                if (printServices[i].getName().contains(printerName)) {
                    printService = printServices[i];
                    break;
                }
            }
            if(printService==null){
                System.out.print("打印失败,未找到名称为" + printerName + "的打印机,请检查。");
                return ;
            }
        }
        fis = new FileInputStream(file); // 构造待打印的文件流
        Doc doc = new SimpleDoc(fis, flavor, null);
        DocPrintJob job = printService.createPrintJob(); // 创建打印作业
        job.print(doc, aset);
    } catch (FileNotFoundException e1) {
        e1.printStackTrace();
    } finally {
 // 关闭打印的文件流
        if (fis != null) {
            try {
                fis.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
}
2.2 PDF文件格式打印实现
在经过网上的查找及对比,我选择了使用Apache PDFbox来实现进行PDF文件格式的打印。

Apache PDFbox是一个开源的、基于Java的、支持PDF文档生成的工具库,它可以用于创建新的PDF文档,修改现有的PDF文档,还可以从PDF文档中提取所需的内容。Apache PDFBox还包含了数个命令行工具。在此,我们只研究打印功能。

优点:功能强大,开源软件,较完美的解决了PDF格式文件的一系列处理,使用方便。

缺点:

具体实现如下:

①直接导入maven依赖:

<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>2.0.6</version>
</dependency>
②代码调用实现

public static void main(String[] args) throws Exception {
        String pdfFile = "E:\\a.pdf";//文件路径
        File file = new File(pdfFile);
        String printerName = "HP MFP M436 PCL6";//打印机名包含字串
        print(file,printerName);
    }
public static void PDFprint(File file ,String printerName) throws Exception {
        PDDocument document = null;
        try {
            document = PDDocument.load(file);
            PrinterJob printJob = PrinterJob.getPrinterJob();
            printJob.setJobName(file.getName());
            if (printerName != null) {
                // 查找并设置打印机
                //获得本台电脑连接的所有打印机
                PrintService[] printServices = PrinterJob.lookupPrintServices();                             if(printServices == null || printServices.length == 0) {
                    System.out.print("打印失败,未找到可用打印机,请检查。");
                    return ;
                }
                PrintService printService = null;
                //匹配指定打印机
                for (int i = 0;i < printServices.length; i++) {
                    System.out.println(printServices[i].getName());
                    if (printServices[i].getName().contains(printerName)) {
                        printService = printServices[i];
                        break;
                    }
                }
                if(printService!=null){
                    printJob.setPrintService(printService);
                }else{
                    System.out.print("打印失败,未找到名称为" + printerName + "的打印机,请检查。");
                    return ;
                }
            }
            //设置纸张及缩放
            PDFPrintable pdfPrintable = new PDFPrintable(document, Scaling.ACTUAL_SIZE);
            //设置多页打印
            Book book = new Book();
            PageFormat pageFormat = new PageFormat();
            //设置打印方向
            pageFormat.setOrientation(PageFormat.PORTRAIT);//纵向
            pageFormat.setPaper(getPaper());//设置纸张
            book.append(pdfPrintable, pageFormat, document.getNumberOfPages());
            printJob.setPageable(book);
            printJob.setCopies(1);//设置打印份数
            //添加打印属性
            HashPrintRequestAttributeSet pars = new HashPrintRequestAttributeSet();
            pars.add(Sides.DUPLEX); //设置单双页
            printJob.print(pars);
        }finally {
            if (document != null) {
                try {
                    document.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
public static Paper getPaper() {
        Paper paper = new Paper();
        // 默认为A4纸张,对应像素宽和高分别为 595, 842
        int width = 595;
        int height = 842;
        // 设置边距,单位是像素,10mm边距,对应 28px
        int marginLeft = 10;
        int marginRight = 0;
        int marginTop = 10;
        int marginBottom = 0;
        paper.setSize(width, height);
        // 下面一行代码,解决了打印内容为空的问题
        paper.setImageableArea(marginLeft, marginRight, width - (marginLeft + marginRight), height - (marginTop + marginBottom));
        return paper;
    }
2.3 Word文件格式打印实现
打印word这里共使用了2种方法,一种是直接使用jacob进行打印,这种方法打印word我暂时没有找到设置打印参数的相关方式,(但是打印Excle好像设置打印参数没问题,在PrintOut操作里设置,参数具体可参考https://msdn.microsoft.com/zh-cn/vba/excel-vba/articles/worksheets-printout-method-excel),第二种是将word先转成pdf文件,然后进行打印。

2.3.1 Word文件采用jacob插件进行打印实现。
Jacob是一个 Java到微软的com接口的桥梁。使用Jacob允许任何JVM访问com对象,从而使Java应用程序能够调用com对象。如果你要对  Word、Excel 进行处理,Jacob是一个好的选择。

优点:可以很好的处理word文档的相关操作。

缺点:必须手动引入dll文件,暂时未找到方法设置打印相关参数,只能暂时实现静默打印,还需安装office2003以上版本(lz是office365,未激活也可)。

具体实现如下:

①下载jacob.zip ,对应(86/64)的dll文件放在%Java_Home%jre/bin目录下。

下载地址:https://sourceforge.net/projects/jacob-project/

②导入jacob.jar到工程中

 在工程中创建lib文件夹保存jacob.jar:reseources—lib—jacob.jar

  添加Maven依赖:

         <!--添加本地的jacob.jar包-->

        <!--添加本地的jacob.jar包-->
        <dependency>
            <groupId>com.jacob</groupId>
            <artifactId>jacob</artifactId>
            <version>1.19</version>
            <scope>system</scope>
        <systemPath>${basedir}/src/main/resources/lib/jacob.jar</systemPath>
        </dependency>
具体代码实现:

public static void main(String[] args) {
        String filePath = "E:\\a.docx";//文件路径
        String printerName = "HP MFP M436 PCL6";//打印机名包含字串
        printWord(filePath,printerName);
    }
 
    public static void printWord(String filePath, String printerName){
//        初始化线程
        ComThread.InitSTA();
        ActiveXComponent word = new ActiveXComponent("Word.Application");
       //设置打印机名称
        word.setProperty("ActivePrinter", new Variant(printerName));
        // 这里Visible是控制文档打开后是可见还是不可见,若是静默打印,那么第三个参数就设为false就好了
        Dispatch.put(word, "Visible", new Variant(false));
        // 获取文档属性
        Dispatch document = word.getProperty("Documents").toDispatch();
        // 打开激活文挡
        Dispatch doc=Dispatch.call(document, "Open", filePath).toDispatch();
        //Dispatch doc = Dispatch.invoke(document, "Open", Dispatch.Method,
              //  new Object[] { filePath }, new int[1]).toDispatch();
        try{
            Dispatch.callN(doc, "PrintOut");
            System.out.println("打印成功!");
        }catch (Exception e){
            e.printStackTrace();
            System.out.println("打印失败");
        }finally {
            try {
                if (doc != null) {
                    Dispatch.call(doc, "Close", new Variant(0));//word文档关闭
                }
            } catch (Exception e2) {
                e2.printStackTrace();
            }
            //退出
            word.invoke("Quit", new Variant[0]);
            //释放资源
            ComThread.Release();
            ComThread.quitMainSTA();
        }
        }
2.3.2 先将word转化为pdf文件,然后打印pdf(lz使用)
优点:可设置打印参数等操作

缺点:也要引入jacob相关依赖和文件

具体实现步骤如下:

①因为转化也是使用jacob插件,所以也需要根据第一种方法一样引入jacob相关依赖和文件

②打印pdf文件时,使用的是上面讲述的pdfbox插件,所以也需要引入pdfbox的依赖

        <dependency>
            <groupId>org.apache.pdfbox</groupId>
            <artifactId>pdfbox</artifactId>
            <version>2.0.6</version>
        </dependency>
③代码具体实现

首先将word文件转化为pdf文件

//word转化pdf,传入转换前的文件路径(例:"E:\\a.docx")和转换后的文件路径(例:"E:\\a.pdf")
    public static void wordToPDF(String sFilePath,String toFilePath) {
        System.out.println("启动 Word...");
        long start = System.currentTimeMillis();
        ActiveXComponent app = null;
        Dispatch doc = null;
        try {
            app = new ActiveXComponent("Word.Application");
            app.setProperty("Visible", new Variant(false));
            Dispatch docs = app.getProperty("Documents").toDispatch();
            doc = Dispatch.call(docs, "Open", sfilePath).toDispatch();
            System.out.println("打开文档:" + sfilePath);
            System.out.println("转换文档到 PDF:" + toFilePath);
            File tofile = new File(toFilePath);
            if (tofile.exists()) {
                tofile.delete();
            }
            Dispatch.call(doc, "SaveAs", toFilePath, // FileName
                    17);//17是pdf格式
            long end = System.currentTimeMillis();
            System.out.println("转换完成..用时:" + (end - start) + "ms.");
 
        } catch (Exception e) {
            System.out.println("========Error:文档转换失败:" + e.getMessage());
        } finally {
            Dispatch.call(doc, "Close", false);
            System.out.println("关闭文档");
            if (app != null)
                app.invoke("Quit", new Variant[]{});
        }
        // 如果没有这句话,winword.exe进程将不会关闭
        ComThread.Release();
    }
然后打印pdf文件(这里传入的文件为上面word转化生成的pdf文件)

//这里传入的文件为word转化生成的pdf文件
public static void PDFprint(File file ,String printerName) throws Exception {
        PDDocument document = null;
        try {
            document = PDDocument.load(file);
            PrinterJob printJob = PrinterJob.getPrinterJob();
            printJob.setJobName(file.getName());
            if (printerName != null) {
                // 查找并设置打印机
                //获得本台电脑连接的所有打印机
                PrintService[] printServices = PrinterJob.lookupPrintServices();                             if(printServices == null || printServices.length == 0) {
                    System.out.print("打印失败,未找到可用打印机,请检查。");
                    return ;
                }
                PrintService printService = null;
                //匹配指定打印机
                for (int i = 0;i < printServices.length; i++) {
                    System.out.println(printServices[i].getName());
                    if (printServices[i].getName().contains(printerName)) {
                        printService = printServices[i];
                        break;
                    }
                }
                if(printService!=null){
                    printJob.setPrintService(printService);
                }else{
                    System.out.print("打印失败,未找到名称为" + printerName + "的打印机,请检查。");
                    return ;
                }
            }
            //设置纸张及缩放
            PDFPrintable pdfPrintable = new PDFPrintable(document, Scaling.ACTUAL_SIZE);
            //设置多页打印
            Book book = new Book();
            PageFormat pageFormat = new PageFormat();
            //设置打印方向
            pageFormat.setOrientation(PageFormat.PORTRAIT);//纵向
            pageFormat.setPaper(getPaper());//设置纸张
            book.append(pdfPrintable, pageFormat, document.getNumberOfPages());
            printJob.setPageable(book);
            printJob.setCopies(1);//设置打印份数
            //添加打印属性
            HashPrintRequestAttributeSet pars = new HashPrintRequestAttributeSet();
            pars.add(Sides.DUPLEX); //设置单双页
            printJob.print(pars);
        }finally {
            if (document != null) {
                try {
                    document.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
public static Paper getPaper() {
        Paper paper = new Paper();
        // 默认为A4纸张,对应像素宽和高分别为 595, 842
        int width = 595;
        int height = 842;
        // 设置边距,单位是像素,10mm边距,对应 28px
        int marginLeft = 10;
        int marginRight = 0;
        int marginTop = 10;
        int marginBottom = 0;
        paper.setSize(width, height);
        // 下面一行代码,解决了打印内容为空的问题
        paper.setImageableArea(marginLeft, marginRight, width - (marginLeft + marginRight), height - (marginTop + marginBottom));
        return paper;
    }
最后别忘了将生成的pdf文件删除

                File file=new File(toFilePath);
                if(file.exists()&&file.isFile())
                    file.delete();
三、总结
至此,本次实现的JPG、PDF和Word三种文件格式的打印已经全部实现,分别采用了原生打印和PDFbox插件和jacob插件进行实现。记录一下,以防忘记,留待后续使用。
————————————————
版权声明:本文为优快云博主「xltj」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/vatxiongxiaohui/article/details/83985896

Java:使用Java调用打印机进行打印(JPG、PDF和Word三种文件格式) 目录 一、Java的打印简介 二、Java打印实现 2.1 JPG图片文件格式打印实现 2.2 PDF文件格式打印实现 2.3 Word文件格式打印实现 2.3.1 Word文件采用jacob插件进行打印实现。 2.3.2 先将word转化为pdf文件,然后打印pdf(lz使用) 三、总结 一、Java的打印简介 在我们的实际工作中,经常需要实现打印功能。但由于历史原因,Jav... 阅读详情

相关推荐

Java打印服务实战:JPG、PDF、Word三种格式的打印方案详解

打印在企业级应用中看似简单,实际涉及图片缩放、PDF分页、Word版式渲染等多重技术链路。Java生态中,打印的核心原理依赖于PrinterJob与Graphics2D的配合,图片需按纸张可打印区域计算缩放比例,PDF则借助PDFBox完成高效渲染,而Word因缺乏原生渲染器,通常采用documents4j或LibreOffice先转PDF再打印。理解这些底层机制,有助于构建稳定可控的统一打印服务,实现多格式自动适配与静默打印。该方案广泛应用于OA办公、订单小票、后台批量打印等场景,可有效解决打印空白、字体

weixin_28452161的博客 255

***使用pdfbox打印pdf***

直接贴代码 public static void printPdf() throws Exception { //获取pdf文档流 InputStream in = new FileInputStream("d:\\pdfTest.pdf"); //将pdf加载为PDDocument对象 PDDocument document = PDDocument.load(in); ...

shengyongchen的博客 1406

Java调用打印机全攻略:JPG/PDF/Word三种格式打印方案与排坑实践

在企业级应用中,文档生成与输出是高频需求,而如何让后端服务自动控制打印机精准输出JPG、PDF和Word文档,是许多开发者在系统集成时的痛点。Java生态提供了完整的打印支持体系,从JDK内置的javax.print服务,到PDFBox、POI等第三方解析工具,再到通过LibreOffice进行格式转换,构成了层次分明的技术选型图谱。理解这些工具的原理和应用场景,能够帮助开发者避免踩坑——例如PDF打印需借助渲染器解决兼容性问题,Word打印则通过转PDF再打印的链路实现排版还原。基于实测经验,图片打印可直

weixin_29231027的博客 243

java设置打印机默认纸张_java 打印设置打印A4 A5纸

用java写了一个打印机,遇到打印纸张输出的问题,打印纸张有A4或者A5,当设置A5纸张的时候需要横向打印输出下面贴出部分代码,用于解决当打印纸张为A5纸张时,文件横向打印DocPrintJob jon = printService.createPrintJob();// 设置纸张大小,也可以新建MediaSize类来自定义大小// 文件类型DocFlavor flavor = DocFlavor...

weixin_29383401的博客 2423

文档转化word/xml/PDF技术实现

文档转化word/xml/PDF技术实现

技术引领业务创新 8138

通过Java实现对PDF页面的详细设置

主要介绍了通过Java实现对PDF页面的详细设置,下面的示例将介绍通过Java编程来对PDF页面进行个性化设置的方法,包括设置页面大小、页边距、纸张方向、页面旋转等,需要的朋友可以参考下

Java实现打印功能

Java实现打印功能

weixin_44389577的博客 3637

足球大数据分析入门:从赔率到预测的完整流程(附数据集)

本文提供了一份足球大数据分析的完整实战指南,涵盖从数据采集、清洗、特征工程到模型构建与评估的全流程。文章详细介绍了如何利用公开数据集与API获取数据,并通过逻辑回归、随机森林等模型进行比赛结果预测,最后强调了模型评估与策略回测的重要性,帮助读者构建自己的分析框架。

r7s8t的博客 399

Java打印实战:JPG、PDF、Word三种格式的打印方案与踩坑记录

在Java后端开发中,调用打印机输出文档是一个常见却容易踩坑的需求。打印的本质并非发送文件,而是通过图形对象将内容绘制成页面指令,再由打印驱动输出。这一机制决定了JPG、PDF、Word三种格式需要截然不同的技术路线:javax.print负责发现打印机,java.awt.print负责内容绘制;JPG可用Graphics2D直接缩放渲染,PDF借助PDFBox的页面适配组件即可高保真输出,Word则需通过JACOB调用COM接口或借助LibreOffice转换后走PDF通道。这些方案广泛适用于OA、ERP

weixin_34122810的博客 249

单视图几何Vanish Point(消失点/灭点)计算方法——Robert_T_Collins(罗伯特·柯林斯)算法

单视图几何Vanish Point(消失点/灭点)计算方法——Robert_T_Collins(罗伯特·柯林斯)算法

beyond951的博客 7332

C#计算八字

private string[] jq = { "小寒", "大寒", "立春", "雨水", "惊蛰", "春分", "清明", "谷雨", "立夏", "小满", "芒种", "夏至", "小暑", "大暑", "立秋", "处暑", "白露", "秋分", "寒露", "霜降", "立冬", "小雪", "大雪", "冬至" };private string[] dz = { "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥", "子" };

m0_72939038的博客 827

JAVA调用打印机

一、Java的打印简介 在我们的实际工作中,经常需要实现打印功能。但由于历史原因,Java 提供的打印功能一直都比较弱。实际上最初的 jdk 根本不支持打印,直到 jdk1.1 才引入了很轻量的打印支持。实际上,SUN 公司也一直致力于 Java 打印功能的完善,而 Java2 平台则终于有了一个健壮的打印模式的开端, jdk1.4 则提供了一套完整的"Java 打印服务 API" (Java ...

baidu_37366055的博客 2261

MIT IDSS深度解析:跨学科融合与系统科学实践

麻省理工学院的IDSS(Institute for Data, Systems, and Society, IDSS)是一个致力于通过先进分析方法推动教育与研究的前沿机构。它将工程学、信息科学和数据科学的方法与社会科学的分析方法相结合,以应对复杂的社会挑战。

AllenLV的博客 2082

Java:使用Java调用打印机进行打印(JPG、PDF和Word三种文件格式)实现

一、Java的打印简介 在我们的实际工作中,经常需要实现打印功能。但由于历史原因,Java 提供的打印功能一直都比较弱。实际上最初的 jdk 根本不支持打印,直到 jdk1.1 才引入了很轻量的打印支持。实际上,SUN 公司也一直致力于 Java 打印功能的完善,而 Java2 平台则终于有了一个健壮的打印模式的开端, jdk1.4 则提供了一套完整的"Java 打印服务 API" (Java Print Service API),它对已有的打印功能是积极的补充。 ...

ITSM/ITIL/网络安全/IT运维 3933

安全与加密常识(10)linux系统证书管理

1. 将自定义CA证书(如my-ca.crt)放到源目录# 2. 编辑配置文件,启用该证书(末尾添加一行 my-ca.crt)# 3. 执行命令同步(核心工作环节)# 4. 验证结果:检查是否生成哈希链接和合并到证书束ls /etc/ssl/certs/my-ca.pem # 证书文件ls /etc/ssl/certs/$(openssl x509 -hash -noout -in /usr/share/ca-certificates/my-ca.crt).0 # 哈希链接。

二进制君 282

20、微电网系统的系统框架、建模与控制架构解析

本文详细解析了微电网系统的系统框架、建模方法以及控制架构。文章首先介绍了在系统的系统(SoS)框架下,微电网如何通过微控制器(MC)和微电网中央控制器(MGCC)协调运行,并支持并网与孤岛模式下的高效能量管理。随后,针对微电网的关键组件,包括微涡轮机、光伏太阳能电池和风力涡轮机,提供了详细的数学建模分析。最后,探讨了微电网的控制架构设计,涵盖分层控制和共识控制策略,以实现系统的高效、稳定运行,满足日益增长的能源需求与市场要求。

elastic6hunter的博客 206

md2ex-Markdown

离线版支持:PDF(打印另存)、PNG/JPG(生成图片)、Word(.doc)。DOCX 需引入额外库。链接:https://pan.quark.cn/s/fd18b0e7ae18。一个简洁高效的 Markdown 多格式导出工具。

YANshangqian的博客 290

Qt代码-软件商店

ui->statusBar->showMessage(QString("%1 已卸载").arg(app["name"].toString()));ui->statusBar->showMessage(QString("开始下载 %1...").arg(app["name"].toString()));QString("%1 已下载完成,是否立即安装?ui->statusBar->showMessage(QString("%1 下载完成").arg(app["name"].toString()));

寒寒豆豆软件公司的博客 110

Java开发中Word转PDF文件5种方案横向评测

aspose-words、docx4j、openoffice、poi、spire.doc五种Word转Pdf方案横向评测,没想到国产中间件表现不俗。

老姚 4万+

【Bluetooth蓝牙开发】九、BLE协议之GATT

1、开篇词 2、蓝牙开发入门 3、蓝牙协议栈总览 4、蓝牙协议栈——物理层 5、蓝牙协议栈——链路层 6、蓝牙协议栈——传输层 7、蓝牙协议栈——L2CAP协议 8、蓝牙协议栈——ATT协议 9、蓝牙协议栈——GATT协议 10、蓝牙通信流程分析 11、蓝牙协议栈——Bluez交叉编译 12、蓝牙调试工具汇总

Donge's Blog 4760

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

java word模板生成pdf,java根据模板生成pdf

一、创建word模板。 word模板如图:二、将word模板转pdf模板。三、用Adobe Acrobat Pro打开pdf模板。四、编辑模板域,即要填写的内容。点击表单选择添加或编辑域选项:双击可以 修改域的变量名及样式字体的设置。然后保存这样pdf的模板就生成了。六、添加mawen引用:com.itextpdfitextpdf5.4.3七、生成代码:public static void pdf...

weixin_42437253的博客 1911

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

html转word 图片丢失 java_WORD2016转PDF丢失图片的情况

做标书,开标时发现少了一张关键图片,慌的一匹。标书要拿电子稿到打印店打印装订,转成PDF格式去打印,可以避免不同版本word及WPS之间的格式错位。但是没想到转后会掉图。事后搜度娘没有找到切题的方法,只得自己研究。(结论:不要在word文档中裁剪图片;或者选择打印到PDF,而不是另存为。)标书中图片几十张,只有那一张出了问题(记为原图)图片来源:扫描件JPEG 图像 (.jpg)插入word格式:...

weixin_39874795的博客 728

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

借助 Aspose.Words,在 C# 中将 Word 转换为 JPG

在本文中,我们将研究如何使用 C# 以编程方式将 Word 转换为 JPG:

励志做最业余的专业博主,控件产品可以私我~ 1486

图片合成pdf和word打印

图片合成pdf public class PdfTest { public static void main(String[] args) { List<String> as=new ArrayList<>(); as.add("C:\\Users\\Ivan\\Desktop\\01.jpg"); as.add("C:\\Users\\Ivan\\Desktop\\02.jpg"); as.add("C:\\U

qq_40772342的博客 286

.net core word转pdf_PDF转excel、word、ppt

PDF转换器是一款界面简洁,操作方便的PDF格式转换工具。PDF转换器可方便的将各种流行的文件格式(Word,Excel,TXT等)转换成PDF文件,也可以将PDF文件转换为各种流行文件格式。PDF转换器支持Word, Doc, RTF, TXT, Excel XLS, PowerPoint PPT以及所有可打印格式,方便将您的文档转换为电子书。  PDF转换器同时支持PDF转WORD,...

weixin_39654917的博客 753
上一篇: Spring Cloud架构简介
下一篇: 齐次坐标的理解
兀兀术
博客等级 码龄19年 25粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值