【问题标题】:How to Convert a ppt file into pdf file in Java?如何在 Java 中将 ppt 文件转换为 pdf 文件?
【发布时间】:2011-12-02 09:59:03
【问题描述】:

我想将 MS PowerPoint (ppt) 文档转换为 PDF。

我搜索了一些像officetools.jar 这样的罐子,但这需要购买。

有什么方法可以像我们将 doc 转换为 PDF 一样通过 itextapache POI 将其转换为 PDF?

【问题讨论】:

    标签: java pdf powerpoint itext apache-poi


    【解决方案1】:

    我正在使用 iText 和 apache poi:

    以下是进口清单-

    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Graphics2D;
    import java.awt.geom.AffineTransform;
    import java.awt.geom.Rectangle2D;
    import java.awt.image.BufferedImage;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    import org.apache.poi.hslf.model.Slide;
    import org.apache.poi.hslf.usermodel.SlideShow;
    import org.apache.poi.xslf.usermodel.XMLSlideShow;
    import org.apache.poi.xslf.usermodel.XSLFSlide;
    
    import com.itextpdf.text.Document;
    import com.itextpdf.text.DocumentException;
    import com.itextpdf.text.Image;
    import com.itextpdf.text.Rectangle;
    import com.itextpdf.text.pdf.PdfPCell;
    import com.itextpdf.text.pdf.PdfPTable;
    import com.itextpdf.text.pdf.PdfWriter;
    

    方法是..

        public void convertPPTToPDF(String sourcepath, String destinationPath, String fileType) throws Exception {
        FileInputStream inputStream = new FileInputStream(sourcepath);
        double zoom = 2;
        AffineTransform at = new AffineTransform();
        at.setToScale(zoom, zoom);
        Document pdfDocument = new Document();
        PdfWriter pdfWriter = PdfWriter.getInstance(pdfDocument, new FileOutputStream(destinationPath));
        PdfPTable table = new PdfPTable(1);
        pdfWriter.open();
        pdfDocument.open();
        Dimension pgsize = null;
        Image slideImage = null;
        BufferedImage img = null;
        if (fileType.equalsIgnoreCase(".ppt")) {
            SlideShow ppt = new SlideShow(inputStream);
            pgsize = ppt.getPageSize();
            Slide slide[] = ppt.getSlides();
            pdfDocument.setPageSize(new Rectangle((float) pgsize.getWidth(), (float) pgsize.getHeight()));
            pdfWriter.open();
            pdfDocument.open();
            for (int i = 0; i < slide.length; i++) {
                img = new BufferedImage((int) Math.ceil(pgsize.width * zoom), (int) Math.ceil(pgsize.height * zoom), BufferedImage.TYPE_INT_RGB);
                Graphics2D graphics = img.createGraphics();
                graphics.setTransform(at);
    
                graphics.setPaint(Color.white);
                graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height));
                slide[i].draw(graphics);
                graphics.getPaint();
                slideImage = Image.getInstance(img, null);
                table.addCell(new PdfPCell(slideImage, true));
            }
        }
        if (fileType.equalsIgnoreCase(".pptx")) {
            XMLSlideShow ppt = new XMLSlideShow(inputStream);
            pgsize = ppt.getPageSize();
            XSLFSlide slide[] = ppt.getSlides();
            pdfDocument.setPageSize(new Rectangle((float) pgsize.getWidth(), (float) pgsize.getHeight()));
            pdfWriter.open();
            pdfDocument.open();
            for (int i = 0; i < slide.length; i++) {
                img = new BufferedImage((int) Math.ceil(pgsize.width * zoom), (int) Math.ceil(pgsize.height * zoom), BufferedImage.TYPE_INT_RGB);
                Graphics2D graphics = img.createGraphics();
                graphics.setTransform(at);
    
                graphics.setPaint(Color.white);
                graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height));
                slide[i].draw(graphics);
                graphics.getPaint();
                slideImage = Image.getInstance(img, null);
                table.addCell(new PdfPCell(slideImage, true));
            }
        }
        pdfDocument.add(table);
        pdfDocument.close();
        pdfWriter.close();
        System.out.println("Powerpoint file converted to PDF successfully");
    }
    

    【讨论】:

    • 嗨,你能给我发一个例子吗..我无法导入awt类。
    • 如何下载 apache.poi ?你能提供一些链接吗?
    • 你能告诉我你使用的是哪个版本的 POI。因为 SlideShow ppt = new SlideShow(inputStream);无法解析这些类
    • 这种方式是将每张ppt幻灯片转换为图片,然后将图片插入到pdf文档中。不够好
    【解决方案2】:

    我会尝试使用 LibreOffice JAVA API 打开 PPT 并将其保存为 PDF。

    【讨论】:

    • 你能举个例子吗
    【解决方案3】:

    使用JODConverter,但它需要 OpenOffice.org。

    【讨论】:

    • 我想把microsoft office 文件转成pdf 可以通过openoffice 完成吗?
    • OpenOffice 不支持 XML 格式的文档(*.docx),但我认为 Novell 发布的 OpenOffice 版本可以打开和保存 Microsoft Open-XML 格式的文档。
    【解决方案4】:

    尝试使用 aspose。我个人,以前没用过。 这是Link

    【讨论】:

    • Thanx 4 回复,但我实际上不需要软件,我想通过代码转换它
    • 你能告诉我一些细节吗?我不想要蚂蚁转换器,而是我想做一个转换它的parogram
    • 尝试点击链接。我提供了 .它非常不言自明。
    猜你喜欢
    • 1970-01-01
    • 2018-06-18
    • 1970-01-01
    • 2020-10-11
    • 1970-01-01
    • 2017-04-14
    • 2013-09-29
    • 2018-01-22
    • 2014-09-15
    相关资源
    最近更新 更多