zoukankan      html  css  js  c++  java
  • java调用jacob生成pdf,word,excel横向

        /*
         * 传进一个office文件的byte[]以及后缀,生成一个pdf文件的byte[]
         */
        public byte[] jacob_Office2Pdf(byte[] srcFileBytes, String postfix) {
            if (srcFileBytes == null || srcFileBytes.length == 0
                    || postfix.equals("") || postfix == null) {
                return null;
            } else {
                String officeTmplPath = Consts.getTempPath()
                        + UUID.randomUUID().toString() + "." + postfix;
                System.out.println(officeTmplPath);
                String pdfTmplPath = generateDefaultOutputFilePath(officeTmplPath);
                System.out.println(pdfTmplPath);
                FileOutputStream outf = null;
                BufferedOutputStream bufferout = null;
                try {
                    outf = new FileOutputStream(officeTmplPath);
                    bufferout = new BufferedOutputStream(outf);
                    bufferout.write(srcFileBytes);
                    bufferout.flush();
                    bufferout.close();
                    outf.close();
                } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                    return null;
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                    return null;
                }
                File f = new File(officeTmplPath);
                if (postfix.equalsIgnoreCase("doc")
                        || postfix.equalsIgnoreCase("docx")) {
                    ComThread.InitSTA();
                    ActiveXComponent app = new ActiveXComponent("Word.Application");
                    app.setProperty("Visible", false);
                    Dispatch docs = app.getProperty("Documents").toDispatch();
                    Dispatch doc = Dispatch.call(docs,//
                            "Open", //
                            officeTmplPath,// FileName
                            false,// ConfirmConversions
                            true // ReadOnly
                            ).toDispatch();
    
                    Dispatch.call(doc,//
                            "SaveAs", //
                            pdfTmplPath, // FileName
                            wdFormatPDF);
                    Dispatch.call(doc, "Close", false);
                    if (app != null) {
                        app.invoke("Quit", new Variant[] {});
                        app = null;
                    }
                    ComThread.Release();
                    if (f.exists()) {
                        f.delete();
                    }
                    byte[] content;
                    try {
                        BufferedInputStream in = new BufferedInputStream(
                                new FileInputStream(pdfTmplPath));
                        ByteArrayOutputStream out = new ByteArrayOutputStream(1024);
                        byte[] temp = new byte[1024];
                        int size = 0;
                        while ((size = in.read(temp)) != -1) {
                            out.write(temp, 0, size);
                        }
                        in.close();
                        content = out.toByteArray();
                        out.close();
                        File pdfFile = new File(pdfTmplPath);
                        if (pdfFile.exists()) {
                            pdfFile.delete();
                        }
                        return content;
                    } catch (FileNotFoundException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                        return null;
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                        return null;
                    }
                } else if (postfix.equalsIgnoreCase("xls")
                        || postfix.equalsIgnoreCase("xlsx")) {
                    ComThread.InitSTA();
                    ActiveXComponent app = new ActiveXComponent("Excel.Application");
                    app.setProperty("Visible", new Variant(false));
                    Object excels = app.getProperty("Workbooks").toDispatch();
                    Object excel = Dispatch.invoke(
                            (Dispatch) excels,
                            "Open",
                            Dispatch.Method,
                            new Object[] { officeTmplPath, new Variant(false),
                                    new Variant(true) }, new int[1]).toDispatch();
                    // new Object[] { officeTmplPath, new Variant(false),
                    // new Variant(false) }, new int[9]).toDispatch();
                    // 横向打印(2013/05/24)
                    // 获取activate表格
                    Dispatch currentSheet = Dispatch.get((Dispatch) excel,
                            "ActiveSheet").toDispatch();
                    Dispatch pageSetup = Dispatch.get(currentSheet, "PageSetup")
                            .toDispatch();
                    Dispatch.put(pageSetup, "Orientation", new Variant(2));
                    // Dispatch.invoke((Dispatch)excel, "SaveAs", Dispatch.Method,
                    // new Object[] {
                    // pdfTmplPath, new Variant(57), new Variant(false),
                    // new Variant(57), new Variant(57), new Variant(false),
                    // new Variant(true), new Variant(57), new Variant(false),
                    // new Variant(true), new Variant(false) }, new int[1]);
                    try {
                        //如果第一个sheet为空则会抛出异常
                        Dispatch.call(currentSheet, "SaveAs", pdfTmplPath,
                                new Variant(57));
                    } catch (Exception e1) {
                        // TODO Auto-generated catch block
                        //e1.printStackTrace();
                        //自动调用第二个sheet
                        Dispatch sheets = Dispatch.get((Dispatch) excel, "Sheets")
                                .toDispatch();
                        // 获得几个sheet
    //                    int count = Dispatch.get(sheets, "Count").getInt();
    //                    System.out.println(count);
                        Dispatch sheet = Dispatch.invoke(sheets, "Item",
                                Dispatch.Get, new Object[] { new Integer(2) },
                                new int[1]).toDispatch();
                        pageSetup = Dispatch.get(sheet, "PageSetup").toDispatch();
                        Dispatch.put(pageSetup, "Orientation", new Variant(2));
                        Dispatch.call(sheet, "SaveAs", pdfTmplPath, new Variant(57));
                        Dispatch.call((Dispatch) excel, "Close", new Variant(false));
                        byte[] content;
                        try {
                            BufferedInputStream in = new BufferedInputStream(
                                    new FileInputStream(pdfTmplPath));
                            ByteArrayOutputStream out = new ByteArrayOutputStream(
                                    1024);
                            byte[] temp = new byte[1024];
                            int size = 0;
                            while ((size = in.read(temp)) != -1) {
                                out.write(temp, 0, size);
                            }
                            in.close();
                            content = out.toByteArray();
                            out.close();
                            File pdfFile = new File(pdfTmplPath);
                            if (pdfFile.exists()) {
                                pdfFile.delete();
                            }
                            return content;
                        } catch (FileNotFoundException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                            return null;
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                            return null;
                        }
                    } finally {
                        if (app != null) {
                            app.invoke("Quit", new Variant[] {});
                            app = null;
                        }
                        ComThread.Release();
                        if (f.exists()) {
                            f.delete();
                        }
                    }
                    Dispatch.call((Dispatch) excel, "Close", new Variant(false));
                    byte[] content;
                    try {
                        BufferedInputStream in = new BufferedInputStream(
                                new FileInputStream(pdfTmplPath));
                        ByteArrayOutputStream out = new ByteArrayOutputStream(1024);
                        byte[] temp = new byte[1024];
                        int size = 0;
                        while ((size = in.read(temp)) != -1) {
                            out.write(temp, 0, size);
                        }
                        in.close();
                        content = out.toByteArray();
                        out.close();
                        File pdfFile = new File(pdfTmplPath);
                        if (pdfFile.exists()) {
                            pdfFile.delete();
                        }
                        return content;
                    } catch (FileNotFoundException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                        return null;
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                        return null;
                    }
                } else {
                    if (f.exists()) {
                        f.delete();
                    }
                    return null;
                }
            }
    
        }
  • 相关阅读:
    javascript变量
    javascript数据类型
    javascript基本语法
    javascript用法
    javascript简介
    js 随机生成颜色值
    JS 判断传入的变量类型是否是Array
    swiper2 swiper-slide 之间的间距调整
    IE9以及以下不支持jquery ajax跨域问题
    HBuilder只提示html 不提示js
  • 原文地址:https://www.cnblogs.com/hold/p/3399628.html
Copyright © 2011-2022 走看看