• office转换成pdf


    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    import com.itextpdf.text.Document;
    import com.itextpdf.text.DocumentException;
    import com.itextpdf.text.Image;
    import com.itextpdf.text.PageSize;
    import com.itextpdf.text.pdf.PdfWriter;
    import com.jacob.activeX.ActiveXComponent;
    import com.jacob.com.ComFailException;
    import com.jacob.com.ComThread;
    import com.jacob.com.Dispatch;
    import com.jacob.com.Variant;
    
    public class JacobPDFConverter implements PDFConverter {
        private static final int wdFormatPDF = 17;
        private static final int xlTypePDF = 0;
        private static final int ppSaveAsPDF = 32;
        
        public void convert2PDF(String inputFile, String pdfFile) {
            String suffix = FileUtils.getFileSufix(inputFile);
            File file = new File(inputFile);
            if(!file.exists()){
                System.out.println("文件不存在!");
                return;
            }
            if(suffix.equals("pdf")){
                System.out.println("PDF not need to convert!");
                return ;
            }
            boolean isImg = false;//FileUtils.isImage(inputFile);
            try{
                isImg = FileUtils.isImage(inputFile);
            }catch(Exception ce){
    
            }
            if(isImg){
                img2PDF(inputFile,pdfFile);
            }else if(suffix.equals("doc")||suffix.equals("docx")||suffix.equals("txt")){
                word2PDF(inputFile,pdfFile);
            }else if(suffix.equals("ppt")||suffix.equals("pptx")){
                ppt2PDF(inputFile,pdfFile);
            }else if(suffix.equals("xls")||suffix.equals("xlsx")){
                excel2PDF(inputFile,pdfFile);
            }else if(suffix.equals("wps")){
                //wps2PDF(inputFile,pdfFile);
                word2PDF(inputFile,pdfFile);
            }else{
                //System.out.println("文件格式不支持转换!");
                word2PDF(inputFile,pdfFile);
            }
        }
    
        public void convert2PDF(String inputFile) {
            String pdfFile = FileUtils.getFilePrefix(inputFile)+".pdf";
            convert2PDF(inputFile,pdfFile);
            
        }
        
        public  void convert2PDF(String[] inputFiles, String[] pdfFiles) {
            try {
                for(int i = 0;i<inputFiles.length;i++){
                    String inputFile = inputFiles[i];
                    String pdfFile = pdfFiles[i];
                    if(inputFile==null || inputFile.equals("")) continue;
                    convert2PDF(inputFile,pdfFile);
                }
            }catch (Exception ce) {
                
            }
        }
        
        public void convert2PDF(String[] inputFiles) {
            String pdfFiles[] = new String[inputFiles.length];
            for(int i = 0;i<inputFiles.length;i++){
                String inputFile = inputFiles[i];
                String pdfFile = FileUtils.getFilePrefix(inputFile)+".pdf";
                pdfFiles[i] = pdfFile;
            }
            convert2PDF(inputFiles,pdfFiles);
        }    
        
        public static void word2PDF(String inputFile,String pdfFile){
            ActiveXComponent app = null;
            Dispatch doc = null;
            try {
                ComThread.InitSTA();
                app = new ActiveXComponent("Word.Application"); //打开word应用程序
                app.setProperty("Visible", false); //设置word不可见
                Dispatch docs = app.getProperty("Documents").toDispatch(); //获得word中所有打开的文档,返回Documents对象
                //调用Documents对象中Open方法打开文档,并返回打开的文档对象Document
                doc = Dispatch.call(docs,
                                        "Open",
                                        inputFile,
                                        false,
                                        true
                                        ).toDispatch();
                Dispatch.call(doc,
                    "ExportAsFixedFormat",
                    pdfFile,
                    wdFormatPDF        //word保存为pdf格式宏,值为17
                    );
            } catch (ComFailException e) {  
                  
            } catch (Exception e) {  
              
            } finally {  
                if (doc != null) {  
                    Dispatch.call(doc, "Close", false); //关闭文档
                }  
                if (app != null) {  
                    app.invoke("Quit", 0); //关闭word应用程序
                }  
                ComThread.Release();  
            }  
        }
        public static void excel2PDF(String inputFile,String pdfFile){
            ActiveXComponent app = null;
            Dispatch excel = null;
            try {
                ComThread.InitSTA();
                app = new ActiveXComponent("Excel.Application");
                app.setProperty("Visible", false);
                Dispatch excels = app.getProperty("Workbooks").toDispatch();
                excel = Dispatch.call(excels,
                                        "Open",
                                        inputFile,
                                        false,
                                        true
                                        ).toDispatch();
                Dispatch.call(excel,
                        "ExportAsFixedFormat",
                        xlTypePDF,        
                        pdfFile
                        );
            } catch (ComFailException e) {  
                 
            } catch (Exception e) {  
      
            } finally {  
                if (excel != null) {  
                    Dispatch.call(excel, "Close",false);  
                }  
                if (app != null) {  
                    app.invoke("Quit");  
                }  
                ComThread.Release();  
            }
        }
        public static void ppt2PDF(String inputFile,String pdfFile){
            ActiveXComponent app = null;  
            Dispatch ppt = null; 
            try {
                ComThread.InitSTA();
                app = new ActiveXComponent("PowerPoint.Application");
                //app.setProperty("Visible", false);
                Dispatch ppts = app.getProperty("Presentations").toDispatch();
                ppt = Dispatch.call(ppts,
                                        "Open",
                                        inputFile,
                                        true,//ReadOnly
                                        true,//Untitled指定文件是否有标题
                                        false//WithWindow指定文件是否可见
                                        ).toDispatch();
                Dispatch.call(ppt,
                        "SaveAs",
                        pdfFile,
                        ppSaveAsPDF    
                        );
            } catch (ComFailException e) {  
                System.out.println(e.getMessage());
            } catch (Exception e) {  
      
            } finally {  
                if (ppt != null) {  
                    Dispatch.call(ppt, "Close");  
                }  
                if (app != null) {  
                    app.invoke("Quit");  
                }  
                ComThread.Release();
            }
        }
        
        public void wps2PDF(String inputFile,String pdfFile) {  
            File sFile = new File(inputFile);
            File tFile = new File(pdfFile);
            ActiveXComponent wps = null;
            try {
                ComThread.InitSTA();
                wps = new ActiveXComponent("wps.application");
                ActiveXComponent doc = wps.invokeGetComponent("Documents").invokeGetComponent("Open", new Variant(sFile.getAbsolutePath()));  
                doc.invoke("ExportPdf", new Variant(tFile.getAbsolutePath()));  
                doc.invoke("Close");  
                doc.safeRelease();  
            } catch (Exception e) {  
                System.out.println(e.getMessage());  
            } finally {  
                if (wps != null) {  
                    wps.invoke("Terminate");  
                    wps.safeRelease();  
                }
                ComThread.Release();
            }  
        }  
    
        public void img2PDF(String inputFile,String pdfFile) {
            Document doc = new Document(PageSize.A4, 20, 20, 20, 20);
            try {
                PdfWriter.getInstance(doc, new FileOutputStream(pdfFile));
                doc.open();
                doc.newPage();
                Image img = Image.getInstance(inputFile);
                float heigth = img.getHeight();
                float width = img.getWidth();
                int percent = getPercent(heigth, width);
                img.setAlignment(Image.MIDDLE);
                img.scalePercent(percent+3);// 表示是原来图像的比例;
                doc.add(img);
                doc.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (DocumentException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            File mOutputPdfFile = new File(pdfFile);
            if (!mOutputPdfFile.exists()) {
                mOutputPdfFile.deleteOnExit();
                return;
            }
        }
        public static int getPercent(float h, float w) {
            int p = 0;
            float p2 = 0.0f;
            p2 = 530 / w * 100;
            p = Math.round(p2);
            return p;
           }
    }
  • 相关阅读:
    当jsp中Springboot之登录模块探索(含Token,验证码还有数据库
    当php内容的内存分页不,如何更快的使用head的分段式处理方式
    Java 开发 2021 年发生的的一些自我总结和教训,即使反省
    总结这些年php函数中遇到的绊脚石,告别以后面试的现场尴尬
    使用 WSDL 指定的标准 SOAP 消息格式
    ORACLE数据库导出表,字段名,长度,类型,字段注释,表注释语句
    oracle中start with和connect by的用法理解
    关于RabbitMQ以及RabbitMQ和Spring的整合
    Vue.js——基于$.ajax实现数据的跨域增删查改
    HTML表格跨行、跨列操作(rowspan、colspan)
  • 原文地址:https://www.cnblogs.com/silentjesse/p/3679896.html
Copyright © 2020-2023  润新知