精华内容
下载资源
问答
  • 优质文章,及时送达在日常工作中,PDF格式...本文就将通过使用Java程序来演示如何将Word文档转换成PDF格式。使用工具:Free Spire.Doc for Java(免费版)https://www.e-iceblue.cn/Downloads/Free-Spire-Doc-JAVA.ht...

    优质文章,及时送达

    在日常工作中,PDF格式良好的视觉阅读性和稳定性使其使用越来越广泛。因此我们常会遇到需要将成型的Word文档转换为PDF格式的情况。本文就将通过使用Java程序来演示如何将Word文档转换成PDF格式。

    使用工具:Free Spire.Doc for Java(免费版)

    https://www.e-iceblue.cn/Downloads/Free-Spire-Doc-JAVA.html

    Jar文件获取及导入:

    方法1:通过官网下载获取jar包。解压后将lib文件夹下的Spire.Doc.jar文件导入Java程序。(如下图)

    a61968de8238b6c588f8a9e802307313.png

    方法2:通过maven仓库安装导入。具体安装教程详见此网页。

    【示例1】将Word文档直接转换成PDF

    import com.spire.doc.*;

    public class ToPDF {
    public static void main(String[] args) {


    Document document = new Document;
    document.loadFromFile("C:甥敳獲Test1DesktopSample.docx");


    document.saveToFile("output/toPDF
    展开全文
  • 最近做的功能要求是Java 调用ftl模板生成Word文件,再将Word文件转为PDF 1、首先是ftl模板生成Word文件。Java 利用ftl模板生成Word用的技术是freemarker,相关技术可以网上自查。 import java.io.File; import java....

    最近做的功能要求是Java 调用ftl模板生成Word文件,再将Word文件转为PDF
    1、首先是ftl模板生成Word文件。Java 利用ftl模板生成Word用的技术是freemarker,相关技术可以网上自查。

    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStreamWriter;
    import java.io.Writer;
    import java.util.Map;
    import freemarker.template.Configuration;
    import freemarker.template.Template;
    public class DocumentHandler {
    private Configuration configuration = null;  
         public DocumentHandler() {  
             configuration = new Configuration();  
             configuration.setDefaultEncoding("utf-8");  
         }  
         /**
           * @author 
           * @desc 根据类别和类型导出相应
           * @param dataMap 
           *          type 
           * @return pd
          * @throws IOException
           * @throws Exception
           */
         public File createDoc(Map<String,Object>  dataMap,int lb) throws IOException {
              configuration.setClassForTemplateLoading(this.getClass(),  "/ftl/template/");  
             String fileName =  "temp"+(int)(Math.random()*1000)+".doc";
             Template t=null;
             
             try {  
                 //test.ftl为要装载的模板  
                    t =  configuration.getTemplate("test.ftl");  
             } catch (IOException e) {  
                 e.printStackTrace();  
             }  
             //输出文档路径及名称  
             
             File outFile = new File(fileName);  
             try {  
                Writer w = new OutputStreamWriter(new  FileOutputStream(outFile), "utf-8");
                  t.process(dataMap, w);
                  w.close();
             } catch (Exception e1) {  
                 e1.printStackTrace();  
             }
              return outFile;
         }
    

    2、Word转为PDF。将Word转为PDF 用到的是aspose.works

    import com.aspose.words.Document;
    import com.aspose.words.License;
    import com.aspose.words.SaveFormat;
    public static void main(String[] args) {
              License aposeLic = new License();
              try {
    //            Map<String,Object> map =  setMap();
    //            DocumentHandler documentHandler = new  DocumentHandler();
    //            File file =  documentHandler.createWorkflowDoc(map,5);
                  //破解aspose,以防PDF文件添加水印
                  InputStream license =  Test.class.getClassLoader().getResourceAsStream("license.xml");
                  aposeLic.setLicense(license);
                  String in = "E:\\xxx\\aaa.doc";
                  File file = new File(in);
                  InputStream fin = new  FileInputStream(file);
                  long old = System.currentTimeMillis();
                Document doc = new Document(fin);
                String test = "E:\\2019work\\ceshi.pdf";
                File outputFile = new File(test);
                FileOutputStream fileOS = new  FileOutputStream(outputFile);
                doc.save(fileOS, SaveFormat.PDF);
                long now = System.currentTimeMillis();
                System.out.println("共耗时:" + ((now - old) /  1000.0) + "秒\n\n" + "文件保存在:" +  outputFile.getPath());
              } catch (Exception e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
              }
         }
    
    展开全文
  • import java.awt.image.BufferedImage; import java.awt.image.RenderedImage; import java.io.File; import java.io.IOException; import java.net.ConnectException; import java.util.Arra...

    package com.ist.util;


    import java.awt.image.BufferedImage;
    import java.awt.image.RenderedImage;
    import java.io.File;
    import java.io.IOException;
    import java.net.ConnectException;
    import java.util.ArrayList;
    import java.util.List;

    import javax.imageio.ImageIO;

    import org.apache.commons.io.FilenameUtils;
    import org.icepdf.core.pobjects.Document;
    import org.icepdf.core.pobjects.Page;
    import org.icepdf.core.util.GraphicsRenderingHints;
    import com.artofsolving.jodconverter.DefaultDocumentFormatRegistry;
    import com.artofsolving.jodconverter.DocumentConverter;
    import com.artofsolving.jodconverter.DocumentFormat;
    import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;
    import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;
    import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;

    /**
     * 将文件转换为图片工具类
     * @author songqiang
     * @createtime 2015-11-11
     */
    public class FileToImgUtil {
        
        private static OpenOfficeConnection startOpenOffice(){

            //openOfficePath="C:\\Program Files (x86)\\OpenOffice 4\\program\\soffice.exe"

            //opt/openoffice4/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &

           //ip=127.0.0.1

            //port=8100
            //OpenOffice的安装目录,linux环境下需要手动启动openoffice服务
            String OpenOffice_HOME = PropertiesUtil.getOpenOfficeParam("openOfficePath");
            String OpenOffice_IP = PropertiesUtil.getOpenOfficeParam("ip");
            int OpenOffice_Port = Integer.parseInt(PropertiesUtil.getOpenOfficeParam("port"));
            // 启动OpenOffice的服务
            String command = OpenOffice_HOME+ " -headless -accept=\"socket,host="+OpenOffice_IP+",port="+OpenOffice_Port+";urp;\"";
            try {
                Process pro = Runtime.getRuntime().exec(command);
            } catch (IOException e) {
                e.printStackTrace();
            }
            //创建连接
            OpenOfficeConnection connection = new SocketOpenOfficeConnection(OpenOffice_IP, OpenOffice_Port);
            return connection;
        }

        private static void doc2Pdf(String docPath, String pdfPath) throws ConnectException {
            File inputFile = new File(docPath);
            File outputFile = new File(pdfPath);
            OpenOfficeConnection connection = startOpenOffice();
            connection.connect();
            DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
            //converter.convert(inputFile, outputFile);
            DefaultDocumentFormatRegistry formatReg = new DefaultDocumentFormatRegistry();   
            DocumentFormat txt = formatReg.getFormatByFileExtension("odt") ;
            DocumentFormat pdf = formatReg.getFormatByFileExtension("pdf") ;
            converter.convert(inputFile, txt, outputFile, pdf);
            connection.disconnect();
        }

        /**
         * 把ppt word excel等文件生成图片文件
         * @param docPath 文件路径
         * @param imgDirPath 图片保存文件夹
         * @param fileName 文件名称点的前部分
         */
        public static void doc2Imags(String docPath, String imgDirPath,String fileName){
            String pdfPath =String.format("%s%s.pdf",  FilenameUtils.getFullPath(docPath), FilenameUtils.getBaseName(docPath));
            try {
                doc2Pdf(docPath, pdfPath);
                pdf2Imgs(pdfPath, imgDirPath,fileName);
                File pdf =  new File(pdfPath);
                if(pdf.isFile()){
                    pdf.delete();
                }

            } catch (ConnectException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        /**
         * 将pdf转换成图片
         *
         * @param pdfPath
         * @param imagePath
         * @return 返回转换后图片的名字
         * @throws Exception
         */
        private static List<String> pdf2Imgs(String pdfPath, String imgDirPath,String fileName) throws Exception {
            Document document = new Document();
            document.setFile(pdfPath);

            float scale = 2f;//放大倍数
            float rotation = 0f;//旋转角度

            List<String> imgNames = new ArrayList<String>();
            int pageNum = document.getNumberOfPages();
            File imgDir = new File(imgDirPath);
            if (!imgDir.exists()) {
                imgDir.mkdirs();
            }
            for (int i = 0; i < pageNum; i++) {
                BufferedImage image = (BufferedImage) document.getPageImage(i, GraphicsRenderingHints.SCREEN,
                        Page.BOUNDARY_CROPBOX, rotation, scale);
                RenderedImage rendImage = image;
                try {
                    String filePath = imgDirPath + File.separator +fileName+i + ".jpg";
                    File file = new File(filePath);
                    ImageIO.write(rendImage, "jpg", file);
                    imgNames.add(FilenameUtils.getName(filePath));
                } catch (IOException e) {
                    e.printStackTrace();
                    return null;
                }
                image.flush();
            }
            document.dispose();
            return imgNames;
        }
        
        public static void main(String[] args) {
            //String docPath = "d:/94_storage安装.doc";
            String docPath = "d:/公司通讯录.xlsx";
            String pdfPath = "d:/pdf/";
            doc2Imags(docPath, pdfPath,"公司通讯录");
        }
    }

     

     

    maven的jar包引用

     <!-- openoffice生成pdf -->
            <dependency>
                <groupId>com.artofsolving</groupId>
                <artifactId>jodconverter</artifactId>
                <version>2.2.1</version>

            </dependency>

     <!-- 手动注入包FileToImgUtil转化包 -->
            <dependency>
              <groupId>org.icepdf</groupId>
              <artifactId>icepdf-core</artifactId>
              <version>1.0</version>
            </dependency>

     

    linux环境可能出现的bug

     

    1. Office图片乱码

     因为没有执行步骤4

    2.Fatal exception: Signal6

      Word文档中使用的字体样式linux系统中没有。可以把所有的字体样式都改成宋体,或是把你需要的字体,安装步骤4 移到linux openoffice中。/opt/openoffice4/share/fonts/truetype/simhei.ttf

     

    展开全文
  • 1. pom相关依赖工具poi-tl (操作word文档模板) + jacob (操作后的word模板转为pdf)com.deepoovepoi-tl1.9.1com.jacobjacob1.17system${project.basedir}/src/main/resources/lib/jacob.jar2. 对word模板进行插入...

    1. pom相关依赖

    工具poi-tl (操作word文档模板) + jacob (将操作后的word模板转为pdf)

    com.deepoove

    poi-tl

    1.9.1

    com.jacob

    jacob

    1.17

    system

    ${project.basedir}/src/main/resources/lib/jacob.jar

    2. 对word模板进行插入数据操作

    使用poi-tl操作word需要创建一个用于向word插入数据的Map集合, word模板中标签格式为"{{标签}}", 其中标签内容为Map 的key.

    // 项目根路径

    String abPath = new File("").getAbsolutePath() + "/src/main/resources";

    // 创建用于插入数据的Map

    Map map = new HashMap<>();

    map.put(, );

    ...

    // 填充word文档

    XWPFTemplate template = XWPFTemplate.compile(abPath + "").render(map);

    // 输出文档

    template.writeAndClose(new FileOutPutStream(""));

    3. 对word模板的表格执行插入数据操作(动态表格)

    使用poi-tl操作word的表格,动态的插入数据,需要用到poi-tl的可选插件进行自定义渲染策略, 首先在word需要操作的表格中的任意单元格添加标签“{{标签}}”

    自定义渲染策略

    /**

    * 自定义渲染策略

    *

    * @author

    */

    public class DetailTablePolicy extends DynamicTableRenderPolicy {

    // 表格起始行行数

    int tableStartRow = 1;

    /**

    * 自定义渲染策略

    *

    * @data 传入的封装好的数据

    */

    @Override

    public void render(XWPFTable table, Object data) throws Exception {

    // 如果数据为空,直接返回

    if (null == data) return;

    // 封装数据List的数据封装对象

    NdrwhkhzbData detailData = (NdrwhkhzbData) data;

    // 获取当前列表行高

    int height = table.getRow(2).getHeight();

    // 从封装对象中获取数据集合

    List datas = detailData.getNdrwhkhzbs();

    if (null != datas) {

    // 循环移除空白表格中数据数量的空白行

    for (int i = 1; i < datas.size() + 2; i++) {

    table.removeRow(i);

    }

    // 循环插入数据

    for (int i = 0; i < datas.size(); i++) {

    // 新增一行空白行

    XWPFTableRow insertNewTableRow = table.insertNewTableRow(tableStartRow);

    // 设置行高

    insertNewTableRow.setHeight(height);

    // 循环添加单元格(4为每行单元格数量)

    for (int j = 0; j < 4; j++) {

    insertNewTableRow.createCell();

    }

    // 填充表格

    TableRenderPolicy.Helper.renderRow(table.getRow(tableStartRow), datas.get(i));

    }

    }

    }

    }

    把自定义渲染策略当做工具类, 在主逻辑中直接配置使用

    /**

    * 操作年度任务和考核指标表

    *

    * @throws IOException 输入输出流异常

    */

    private void createNdrwhkhzb(Integer uid, String dirPath) throws IOException {

    PageData datas = new PageData();

    NdrwhkhzbData detailTable = new NdrwhkhzbData();

    List nds = new ArrayList<>();

    // 根据uid查询年度任务和考核指标数据

    List list = ndrwhkhzbService.selectNdrwhkhzbByUid(uid);

    for (NdrwhkhzbEntity ndrwhkhzbEntity : list) {

    RowRenderData rrd = Rows.of(ndrwhkhzbEntity.getNd(), ndrwhkhzbEntity.getNdrw(), ndrwhkhzbEntity.getNdkhzb()

    , ndrwhkhzbEntity.getZyrwdsjjd()).center().create();

    nds.add(rrd);

    }

    detailTable.setNdrwhkhzbs(nds);

    datas.setNdrwhkhzbData(detailTable);

    // 配置表格

    Configure config = Configure.builder().bind("detail_table", new DetailTablePolicy()).build();

    // 调用渲染策略进行填充

    XWPFTemplate template =

    XWPFTemplate.compile(dirPath + "/" + uid + "_Complete.docx", config).render(datas);

    // 写入表格中

    template.writeToFile(dirPath + "/" + uid + "_Complete.docx");

    }

    用到的一些实体类

    // PageData

    public class PageData {

    @Name("detail_table")

    private NdrwhkhzbData ndrwhkhzbData;

    public NdrwhkhzbData getNdrwhkhzbData() {

    return ndrwhkhzbData;

    }

    public void setNdrwhkhzbData(NdrwhkhzbData ndrwhkhzbData) {

    this.ndrwhkhzbData = ndrwhkhzbData;

    }

    }

    // NdrwhkhzbData

    public class NdrwhkhzbData {

    private List ndrwhkhzbs;

    public List getNdrwhkhzbs() {

    return ndrwhkhzbs;

    }

    public void setNdrwhkhzbs(List ndrwhkhzbs) {

    this.ndrwhkhzbs = ndrwhkhzbs;

    }

    }

    4. 将编辑好的Word转为pdf格式(jacob)

    这里将word转为pdf时需要用到jacob, 这里需要将jacob的dll文件放到jdk和jre的bin目录下, 下载的jacob中dll文件一般为两个版本, X86为32位, X64为64位, 根据自己安装的jdk版本添加所对应的dll文件

    /*

    * 将 .docx 转换为 .pdf

    */

    ActiveXComponent app = null;

    String wordFile = dirPath + "/" + uid + "_Complete.docx";

    String pdfFile = dirPath + "/" + dirName + ".pdf";

    System.out.println("开始转换...");

    // 开始时间

    long start = System.currentTimeMillis();

    try {

    // 打开word

    app = new ActiveXComponent("Word.Application");

    // 设置word不可见,很多博客下面这里都写了这一句话,其实是没有必要的,因为默认就是不可见的,如果设置可见就是会打开一个word文档,对于转化为pdf明显是没有必要的

    //app.setProperty("Visible", false);

    // 获得word中所有打开的文档

    Dispatch documents = app.getProperty("Documents").toDispatch();

    System.out.println("打开文件: " + wordFile);

    // 打开文档

    Dispatch documentP = Dispatch.call(documents, "Open", wordFile, false, true).toDispatch();

    // 如果文件存在的话,不会覆盖,会直接报错,所以我们需要判断文件是否存在

    File target = new File(pdfFile);

    if (target.exists()) {

    target.delete();

    }

    System.out.println("另存为: " + pdfFile);

    // 另存为,将文档报错为pdf,其中word保存为pdf的格式宏的值是17

    Dispatch.call(documentP, "SaveAs", pdfFile, 17);

    // 关闭文档

    Dispatch.call(documentP, "Close", false);

    // 结束时间

    long end = System.currentTimeMillis();

    System.out.println("转换成功,用时:" + (end - start) + "ms");

    } catch (Exception e) {

    e.getMessage();

    System.out.println("转换失败" + e.getMessage());

    } finally {

    // 关闭office

    app.invoke("Quit", 0);

    }

    5. 通过lo流将生成好的文件传到浏览器下载

    /*

    * 下载pdf

    */

    String fileName = dirName + ".pdf";

    File file = new File(dirPath + "/" + fileName);

    if (file.exists()) {

    BufferedInputStream bis = null;

    FileInputStream fis = null;

    try {

    response.setHeader("Content-disposition", "attachment; filename=" + fileName);

    byte[] buff = new byte[2048];

    fis = new FileInputStream(file);

    bis = new BufferedInputStream(fis);

    OutputStream os = response.getOutputStream();

    int i = bis.read(buff);

    while (i != -1) {

    os.write(buff, 0, i);

    i = bis.read(buff);

    }

    os.close();

    } catch (Exception e) {

    e.printStackTrace();

    } finally {

    assert fis != null;

    fis.close();

    assert bis != null;

    bis.close();

    }

    }

    6. 最后的Controller整体代码

    package org.example.controller;

    import com.deepoove.poi.XWPFTemplate;

    import com.deepoove.poi.config.Configure;

    import com.deepoove.poi.data.Includes;

    import com.deepoove.poi.data.RowRenderData;

    import com.deepoove.poi.data.Rows;

    import com.jacob.activeX.ActiveXComponent;

    import com.jacob.com.Dispatch;

    import org.example.entity.*;

    import org.example.service.*;

    import org.example.utils.DetailTablePolicy;

    import org.springframework.beans.factory.annotation.Autowired;

    import org.springframework.context.annotation.Scope;

    import org.springframework.stereotype.Controller;

    import org.springframework.util.DigestUtils;

    import org.springframework.web.bind.annotation.RequestMapping;

    import org.springframework.web.bind.annotation.ResponseBody;

    import javax.servlet.http.HttpServletResponse;

    import javax.servlet.http.HttpSession;

    import java.io.*;

    import java.util.ArrayList;

    import java.util.HashMap;

    import java.util.List;

    import java.util.Map;

    /**

    * 创建pdf控制器

    *

    * @author: yoojyn

    * @data: 2021/1/11

    */

    @Controller

    @RequestMapping("/createPdfController")

    public class CreatePdfController {

    @Autowired

    private IKtfmService ktfmService;

    @Autowired

    private IKtjbxxService ktjbxxService;

    @Autowired

    private IKtbyxfxService ktbyxfxService;

    @Autowired

    private IZtmbhkhzbService ztmbhkhzbService;

    @Autowired

    private INdrwhkhzbService ndrwhkhzbService;

    @Autowired

    private IKtjfysjsmService ktjfysjsmService;

    @Autowired

    private IXjxhkxxfxService xjxhkxxfxService;

    /**

    * 生成word文件

    *

    * @param session 作用域

    */

    @Scope("prototype")

    @ResponseBody

    @RequestMapping("/createPdf")

    public void createPdf(HttpSession session, HttpServletResponse response) {

    // 获取当前用户id

    Userinfo loginedUser = (Userinfo) session.getAttribute("loginedUser");

    Integer uid = loginedUser.getUid();

    String dirName = DigestUtils.md5DigestAsHex((uid + "_国家重大专项任务合同申报").getBytes());

    String dirPath = "D:/" + dirName;

    String abPath = new File("").getAbsolutePath() + "/src/main/resources";

    try {

    // 创建用于存储中间文件的文件夹

    new File(dirPath).mkdirs();

    // 创建用于存储数据的map集合

    Map map = new HashMap<>();

    // 获取封面数据

    createKtfm(uid, map);

    // 获取基本信息数据

    createJbxx(uid, map);

    // 获取必要性分析

    createByxfx(uid, map);

    // 获取总体目标和考核指标

    createZtmbhkhzb(uid, map);

    // 获取经费预算及说明

    createJfysjsm(uid, map);

    // 查询附件

    XjxhkxxfxEntity xjxhkxxfxEntity = xjxhkxxfxService.selectXjxhkxxfxByUid(uid);

    // 设置下一步处理表格要用到的标签

    map.put("page9",

    Includes.ofLocal(abPath + "/static/file/upload/" + xjxhkxxfxEntity.getFilename()).create());

    map.put("detail_table", "{{detail_table}}");

    // 填充文档

    XWPFTemplate template = XWPFTemplate.compile(abPath + "/static/file/moban/moban.docx").render(map);

    // 输出文档

    template.writeAndClose(new FileOutputStream(dirPath + "/" + uid + "_Complete.docx"));

    // 操作年度任务和考核指标表

    createNdrwhkhzb(uid, dirPath);

    } catch (IOException e) {

    e.printStackTrace();

    }

    try {

    /*

    * 将 .docx 转换为 .pdf

    */

    ActiveXComponent app = null;

    String wordFile = dirPath + "/" + uid + "_Complete.docx";

    String pdfFile = dirPath + "/" + dirName + ".pdf";

    System.out.println("开始转换...");

    // 开始时间

    long start = System.currentTimeMillis();

    try {

    // 打开word

    app = new ActiveXComponent("Word.Application");

    // 设置word不可见,很多博客下面这里都写了这一句话,其实是没有必要的,因为默认就是不可见的,如果设置可见就是会打开一个word文档,对于转化为pdf明显是没有必要的

    //app.setProperty("Visible", false);

    // 获得word中所有打开的文档

    Dispatch documents = app.getProperty("Documents").toDispatch();

    System.out.println("打开文件: " + wordFile);

    // 打开文档

    Dispatch documentP = Dispatch.call(documents, "Open", wordFile, false, true).toDispatch();

    // 如果文件存在的话,不会覆盖,会直接报错,所以我们需要判断文件是否存在

    File target = new File(pdfFile);

    if (target.exists()) {

    target.delete();

    }

    System.out.println("另存为: " + pdfFile);

    // 另存为,将文档报错为pdf,其中word保存为pdf的格式宏的值是17

    Dispatch.call(documentP, "SaveAs", pdfFile, 17);

    // 关闭文档

    Dispatch.call(documentP, "Close", false);

    // 结束时间

    long end = System.currentTimeMillis();

    System.out.println("转换成功,用时:" + (end - start) + "ms");

    } catch (Exception e) {

    e.getMessage();

    System.out.println("转换失败" + e.getMessage());

    } finally {

    // 关闭office

    app.invoke("Quit", 0);

    }

    /*

    * 下载pdf

    */

    String fileName = dirName + ".pdf";

    File file = new File(dirPath + "/" + fileName);

    if (file.exists()) {

    BufferedInputStream bis = null;

    FileInputStream fis = null;

    try {

    response.setHeader("Content-disposition", "attachment; filename=" + fileName);

    byte[] buff = new byte[2048];

    fis = new FileInputStream(file);

    bis = new BufferedInputStream(fis);

    OutputStream os = response.getOutputStream();

    int i = bis.read(buff);

    while (i != -1) {

    os.write(buff, 0, i);

    i = bis.read(buff);

    }

    os.close();

    } catch (Exception e) {

    e.printStackTrace();

    } finally {

    assert fis != null;

    fis.close();

    assert bis != null;

    bis.close();

    }

    }

    } catch (Exception e) {

    e.printStackTrace();

    } finally {

    delDir(new File(dirPath));

    }

    }

    /**

    * 删除文件夹

    *

    * @param file 文件夹对象

    */

    private void delDir(File file) {

    if (file.isFile()) {

    file.delete();

    }

    if (file.isDirectory()) {

    File[] files = file.listFiles();

    for (File f : files) {

    f.delete();

    }

    file.delete();

    }

    }

    /**

    * 储存经费预算及说明

    *

    * @param uid 用户id

    * @param map 储存数据的map集合

    */

    private void createJfysjsm(Integer uid, Map map) {

    // 根据用户编号查询经费预算及说明

    KtjfysjsmEntity ktjfysjsmEntity = ktjfysjsmService.getDatesByUid(uid);

    // 添加到map集合

    map.put("zjzyczzj", ktjfysjsmEntity.getZjzyczzj());

    map.put("zjdfczzj", ktjfysjsmEntity.getZjdfczzj());

    map.put("zjdwzczj", ktjfysjsmEntity.getZjdwzczj());

    map.put("zjqt", ktjfysjsmEntity.getZjqt());

    }

    /**

    * 操作年度任务和考核指标表

    *

    * @throws IOException 输入输出流异常

    */

    private void createNdrwhkhzb(Integer uid, String dirPath) throws IOException {

    PageData datas = new PageData();

    NdrwhkhzbData detailTable = new NdrwhkhzbData();

    List nds = new ArrayList<>();

    // 根据uid查询年度任务和考核指标数据

    List list = ndrwhkhzbService.selectNdrwhkhzbByUid(uid);

    for (NdrwhkhzbEntity ndrwhkhzbEntity : list) {

    RowRenderData rrd = Rows.of(ndrwhkhzbEntity.getNd(), ndrwhkhzbEntity.getNdrw(), ndrwhkhzbEntity.getNdkhzb()

    , ndrwhkhzbEntity.getZyrwdsjjd()).center().create();

    nds.add(rrd);

    }

    detailTable.setNdrwhkhzbs(nds);

    datas.setNdrwhkhzbData(detailTable);

    Configure config = Configure.builder().bind("detail_table", new DetailTablePolicy()).build();

    XWPFTemplate template =

    XWPFTemplate.compile(dirPath + "/" + uid + "_Complete.docx", config).render(datas);

    template.writeToFile(dirPath + "/" + uid + "_Complete.docx");

    }

    /**

    * 储存总体目标和考核指标

    *

    * @param uid 用户id

    * @param map 储存数据的map集合

    */

    private void createZtmbhkhzb(Integer uid, Map map) {

    // 根据用户编号查询总体目标和考核指标

    ZtmbhkhzbEntity ztmbhkhzbEntity = ztmbhkhzbService.selectZtmbhkhzbByUid(uid);

    // 添加到map集合

    map.put("page6", ztmbhkhzbEntity.getZtmbhkhzb());

    }

    /**

    * 储存必要性分析数据

    *

    * @param uid 用户id

    * @param map 储存数据的map集合

    */

    private void createByxfx(Integer uid, Map map) {

    // 根据用户编号查询必要性分析数据

    KtbyxfxEntityWithBLOBs ktbyxfxEntity = ktbyxfxService.selectKtbyxfxByUid(uid);

    // 添加到map集合

    map.put("page5_ktyzx", ktbyxfxEntity.getKtyzx());

    map.put("page5_ktysfgc", ktbyxfxEntity.getKtysf());

    map.put("page5_ktyq", ktbyxfxEntity.getKtyq());

    }

    /**

    * 储存基本信息数据

    *

    * @param uid 用户编号

    * @param map 储存数据的map集合

    */

    private void createJbxx(Integer uid, Map map) {

    // 根据用户编号查询基本信息数据

    KcjbxxEntity kcjbxxEntity = ktjbxxService.selectKtjbxxByUid(uid);

    // 添加到map集合

    map.put("page3_ktmc", kcjbxxEntity.getKtmc());

    map.put("page3_ktmj", kcjbxxEntity.getKtmj());

    map.put("page3_yjwcsj", kcjbxxEntity.getYjwcsj());

    map.put("page3_kyhdlx", kcjbxxEntity.getKthdlx());

    map.put("page3_yqcglx", kcjbxxEntity.getYqcglx());

    map.put("page3_dwmc", kcjbxxEntity.getDwmc());

    map.put("page3_dwxz", kcjbxxEntity.getDwxz());

    map.put("page3_txdz", kcjbxxEntity.getTxdz());

    map.put("page3_yzbm", kcjbxxEntity.getYzbm());

    map.put("page3_szdq", kcjbxxEntity.getSzdq());

    map.put("page3_dwzgbm", kcjbxxEntity.getDwzgbm());

    map.put("page3_lxdh", kcjbxxEntity.getLxdh());

    map.put("page3_zzjgdm", kcjbxxEntity.getZzjgdm());

    map.put("page3_czhm", kcjbxxEntity.getCzhm());

    map.put("page3_dwclsj", kcjbxxEntity.getDwclsj());

    map.put("page3_dzxx", kcjbxxEntity.getDzxx());

    }

    /**

    * 储存课题封面数据

    *

    * @param uid 用户编号

    * @param map 储存数据的map集合

    */

    private void createKtfm(Integer uid, Map map) {

    // 根据用户编号查询封面数据

    KtfmEntity ktfmEntity = ktfmService.selectKtfmByUid(uid);

    // 添加到map集合

    map.put("page1_zxmc", "5G总体及关键器件");

    map.put("page1_xmbh", "2016ZX03001_001");

    map.put("page1_xmmc", "新一代宽带无线移动通信网");

    map.put("page1_ktbh", "2016ZX03001_001_002");

    map.put("page1_ktmc", "5G高性能基站A/D、D/A转换器试验样片研发");

    map.put("page1_zrdw", "program_test");

    map.put("page1_ktzz", ktfmEntity.getKtfzr());

    map.put("page1_ktnx1", "2016-01-01");

    map.put("page1_ktnx2", "2017-12-31");

    map.put("page1_tbrq", "2020-12-28");

    map.put("page1_nian", "二一");

    map.put("page1_yue", "一");

    }

    }

    以上就是Java 实现word模板转为pdf的详细内容,更多关于Java word模板转为pdf的资料请关注脚本之家其它相关文章!

    展开全文
  • 本文介绍在Java程序中如何Excel工作簿转为PDF文档的,包括:整个工作簿转为PDF将指定工作表转为PDF使用工具:Free Spire.XLS for Java (免费版)Jar文件下载及导入:方法1:通过官网下载。下载后,解压文件,...
  • word文档转为PDF以及多种文档格式转换 项目地址:https://gitee.com/Jakewabc/word-of-pdf.git 相关案例: https://github.com/aspose-words/Aspose.Words-for-Java.git ...
  • html转为pdf的组件有很多,但是还没有哪一款能达到这个效果,其只要原因是wkhtmltopdf使用webkit网页渲染引擎开发的用来 html转成 pdf的工具,可以跟多种脚本语言进行集成来转换文档。但是就使用简便性来说还是...
  • Spire.Cloud.SDK for Java API提供了ConverApi接口支持将Word文档转换为多种文档格式,包括将Word转为PDF、Html、位图Bitmap(JPEG/BMP/ PNG)、矢量图Vectorgraph(支持WMF/SVG)、XPS、PostScript、PCL、dotx、dotm、...
  • 下面介绍在Java程序中如何来转换Word文档为其他几种常见文档格式,如PDF、图片png、svg、xps、rtf、txt、xml等。 使用工具:Free Spire.Doc for Java(免费版) Jar文件下载及导入: 方法1:通过官网下载jar...
  • 本文介绍通过Java编程来实现PDF文档转换的方法。包括:1. PDF转为Word2. PDF转为图片3.... PDF转为PDF/A使用工具:Free Spire.PDF for Java(免费版)Jar文件获取及导入:方法1:通过官网下载jar文件包...
  • 下面介绍在Java程序中如何来转换Word文档为其他几种常见文档格式,如PDF、图片png、svg、xps、rtf、txt、xml等。使用工具:Free Spire.Doc for Java(免费版)Jar文件下载及导入:方法1:通过官网下载jar文件包,...
  • 苗换换  | 我的经验 | 我的收入 | 私信(0) | 百度首页  新闻 网页 贴吧 知道 经验 音乐 图片 ...java代码将word、excel文档转换成pdf 听语音   | 浏览:1337 | 更新:2017...
  • packagecom.microsys.fax.agent....importjava.awt.image.BufferedImage;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io...
  • 下面介绍在Java程序中如何来转换Word文档为其他几种常见文档格式,如PDF、图片png、svg、xps、rtf、txt、xml等。使用工具:Free Spire.Doc for Java(免费版)Jar文件下载及导入:方法1:通过官网下载jar文件包,...
  • 本文介绍通过Java编程来实现PDF文档转换的方法。包括:1. PDF转为Word2. PDF转为图片3.... PDF转为PDF/A使用工具:Free Spire.PDF for Java(免费版)Jar文件获取及导入:方法1:通过官网方法2:可通...
  • 本文介绍通过Java编程来实现PDF文档转换的方法。包括: 1. PDF转为Word 2. PDF转为图片 ... 4.2 一个包含多页的PDF文档转为一个SVG 5. PDF转为XPS 6. PDF转为PDF/A 使用工具:Free Spire.PDF for ...
  • 包括:PDF转为WordPDF转为图片PDF转为HtmlPDF转为SVGPDF每一页转为单个的SVG一个包含多页的PDF文档转为一个SVG5. PDF转为XPS6. PDF转为PDF/A使用工具:Free Spire.PDF for Java(免费版)Jar文件获取及导入:...
  • Word转为PDFJava实现)

    万次阅读 2018-05-01 22:42:18
    有时候项目所需,要将Word文档转换为PDF文档,网上的资料很多,这里整理一下。利用apache poi平常项目中遇到需要将word转换为pdf,我们一般利用的是jacob.jar组件,这个组件利用的是微软office组件,但有时项目需要...
  • 包括:PDF转为WordPDF转为图片PDF转为HtmlPDF转为SVGPDF每一页转为单个的SVG一个包含多页的PDF文档转为一个SVG5. PDF转为XPS6. PDF转为PDF/A使用工具:Free Spire.PDF for Java(免费版)Jar文件获取及导入:...
  • 4.2 一个包含多页的PDF文档转为一个SVG PDF转为XPS PDF转为PDF/A 使用工具:Free Spire.PDF for Java(免费版) Jar文件获取及导入: 方法1:通过官网下载jar文件包。下载后,解压文件,并lib文件夹下的...
  • pom相关依赖工具poi-tl (操作word文档模板) + jacob (操作后的word模板转为pdf) com.deepoove poi-tl 1.9.1 com.jacob jacob 1.17 system ${project.basedir}/src/main/resources/lib/jacob.jar2. ...
  • Spire.Cloud.SDK for Java API提供了ConverApi接口支持将Word文档转换为多种文档格式,包括将Word转为PDF、Html、位图Bitmap(JPEG/BMP/ PNG)、矢量图Vectorgraph(支持WMF/SVG)、XPS、PostScript、PCL、dotx、...
  • Spire.Cloud.SDK for Java提供了接口PdfConvertApi通过convert()方法将PDF文档以及XPS文档转为指定文档格式,如转PDFWord(支持Docx、Doc)、Html、XPS、SVG、PS、PCL、PNG,XPS转为Word(支持Docx、Doc)、Html...
  • 需要把文档直接浏览而非下载,实现方法是先把文档转为PDF文件,但在linux系统中确实汉字字库,所以转换失败,以下是解决方法后面正式服务器也要添加字库,不然会转换出乱码文件,处理步骤如下:1、Windows上字体...
  • aspose-words,Documents4j一、通过aspose-words将word,Excel文档转为PDF1.1 引入相关的jar1.2 将两个jar包,放入项目resources/lib目录下1.3 配置pom.xml1.4 测试代码二、记录下JAVA LINUX,WORD转PDF,用...
  • SpringBoot word文档pdf

    2020-09-27 18:33:57
    项目中有个需求大体意思是,上传一个word模板,根据word模板合成word文件,再将word文件转为pdf。 二.方案选择 Spire.Doc for Java方案 Spire.Doc for Java这个是商用收费的,不过API文档丰富且集成简单,免费版仅...
  • pom相关依赖工具poi-tl (操作word文档模板) + jacob (操作后的word模板转为pdf)com.deepoovepoi-tl1.9.1com.jacobjacob1.17system${project.basedir}/src/main/resources/lib/jacob.jar2. 对word模板进行...

空空如也

空空如也

1 2 3 4
收藏数 71
精华内容 28
关键字:

java将word文档转为pdf

java 订阅