zoukankan      html  css  js  c++  java
  • 用java实现word转pdf

    摘要:如何用java实现word文档转pdf呢

    最近在网上看了很多资料,遇到了很多头疼的问题,看了各类大神写的方法,最初想要研究的是在线预览word

    现在来看,不太现实,除了微软研究的一套在线预览的url,但是满足的条件有点扯淡,有兴趣的可以去查资料

    还有就是各类各样的收费平台,来看看这种转换的处理方法吧

    • 实现功能
      • docx文档转换为PDF
      • 转换之后排版不混乱
    • 使用工具(Jar包)
      • aspose-words-15.11.0.jar(用于PDF转换 )
    • 环境
      • JDK1.8
    • 代码
     
        public static void main(String[] args) {
            doc2pdf("/Users/lzl/Desktop/a.docx","/Users/lzl/Desktop/test.pdf");
        }
        public static void doc2pdf(String inPath, String outPath) {
            FileOutputStream os =null;
            try {
                File file = new File(outPath); // 新建一个空白pdf文档
                os = new FileOutputStream(file);
                Document doc = new Document(inPath); // Address是将要被转化的word文档
                //insertWatermarkText(doc, "四叶草的诗雨");
                doc.save(os, SaveFormat.PDF);
            } catch (Exception e) {
                e.printStackTrace();
            }finally{
                if(os!=null){
                    try {
                        os.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
        

      加水印(升级版)

    private static void insertWatermarkText(Document doc, String watermarkText) throws Exception
        {
            Shape watermark = new Shape(doc, ShapeType.TEXT_PLAIN_TEXT);
            //水印内容
            watermark.getTextPath().setText(watermarkText);
            //水印字体
            watermark.getTextPath().setFontFamily("宋体");
            //水印宽度
            watermark.setWidth(500);
            //水印高度
            watermark.setHeight(100);
            //旋转水印
            watermark.setRotation(-40);
            //水印颜色
            watermark.getFill().setColor(Color.lightGray);
            watermark.setStrokeColor(Color.lightGray);
            watermark.setRelativeHorizontalPosition(RelativeHorizontalPosition.PAGE);
            watermark.setRelativeVerticalPosition(RelativeVerticalPosition.PAGE);
            watermark.setWrapType(WrapType.NONE);
            watermark.setVerticalAlignment(VerticalAlignment.CENTER);
            watermark.setHorizontalAlignment(HorizontalAlignment.CENTER);
            Paragraph watermarkPara = new Paragraph(doc);
            watermarkPara.appendChild(watermark);
            for (Section sect : doc.getSections())
            {
                insertWatermarkIntoHeader(watermarkPara, sect, HeaderFooterType.HEADER_PRIMARY);
                insertWatermarkIntoHeader(watermarkPara, sect, HeaderFooterType.HEADER_FIRST);
                insertWatermarkIntoHeader(watermarkPara, sect, HeaderFooterType.HEADER_EVEN);
            }
            System.out.println("Watermark Set");
        }
        private static void insertWatermarkIntoHeader(Paragraph watermarkPara, Section sect, int headerType) throws Exception
        {
            HeaderFooter header = sect.getHeadersFooters().getByHeaderFooterType(headerType);
            if (header == null)
            {
                header = new HeaderFooter(sect.getDocument(), headerType);
                sect.getHeadersFooters().add(header);
            }
            header.appendChild(watermarkPara.deepClone(true));
        }

     

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    文本标记
    第一个HTML文档
    HTML入门
    bootstrap fileinput 文件上传
    DPDK rte_hash 简述
    glib学习笔记-基本知识
    linux常用网络命令
    libevent学习过程
    C语言 singleton模式
    oracle命令行导出、导入dmp文件
  • 原文地址:https://www.cnblogs.com/name-lizonglin/p/12836451.html
Copyright © 2011-2022 走看看