如何在Java中将ppt文件转换为pdf文件?

如何在Java中将ppt文件转换为pdf文件?,java,pdf,powerpoint,itext,apache-poi,Java,Pdf,Powerpoint,Itext,Apache Poi,我想将MS powerpoint(ppt)文档转换为PDF 我搜索了一些jar,比如officetools.jar,但这需要购买 是否有任何方法可以通过itext和ApachePOI将其转换为PDF格式?请尝试使用aspose。我个人以前没用过。 以下是使用aspose的方法。我个人以前没用过。 以下是我尝试使用LibreOffice JAVA API打开PPT并将其保存为PDF。我尝试使用LibreOffice JAVA API打开PPT并将其保存为PDF。使用,但需要OpenOffice.o

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

我搜索了一些jar,比如
officetools.jar
,但这需要购买


是否有任何方法可以通过
itext
ApachePOI
将其转换为PDF格式?请尝试使用aspose。我个人以前没用过。
以下是使用aspose的方法。我个人以前没用过。
以下是我尝试使用LibreOffice JAVA API打开PPT并将其保存为PDF。

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

使用,但需要OpenOffice.org。

使用,但需要OpenOffice.org。

我正在使用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");
}
public void convertPPTToPDF(字符串源路径、字符串目标路径、字符串文件类型)引发异常{
FileInputStream inputStream=新的FileInputStream(sourcepath);
双变焦=2;
AffineTransform at=新的AffineTransform();
在.setToScale(缩放,缩放);
文档pdfDocument=新文档();
PdfWriter PdfWriter=PdfWriter.getInstance(pdfDocument,新文件输出流(destinationPath));
PdfPTable table=新的PdfPTable(1);
pdfWriter.open();
pdfDocument.open();
维度pgsize=null;
图像slideImage=null;
BuffereImage img=null;
if(fileType.equalsIgnoreCase(“.ppt”)){
幻灯片放映ppt=新幻灯片放映(inputStream);
pgsize=ppt.getPageSize();
幻灯片[]=ppt.getSlides();
setPageSize(新矩形((float)pgsize.getWidth(),(float)pgsize.getHeight());
pdfWriter.open();
pdfDocument.open();
对于(int i=0;i
我正在使用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");
}
public void convertPPTToPDF(字符串源路径、字符串目标路径、字符串文件类型)引发异常{
FileInputStream inputStream=新的FileInputStream(sourcepath);
双变焦=2;
AffineTransform at=新的AffineTransform();
在.setToScale(缩放,缩放);
文档pdfDocument=新文档();
PdfWriter PdfWriter=PdfWriter.getInstance(pdfDocument,新文件输出流(destinationPath));
PdfPTable table=新的PdfPTable(1);
pdfWriter.open();
pdfDocument.open();
维度pgsize=null;
图像slideImage=null;
BuffereImage img=null;
if(fileType.equalsIgnoreCase(“.ppt”)){
幻灯片放映ppt=新幻灯片放映(inputStream);
pgsize=ppt.getPageSize();
幻灯片[]=ppt.getSlides();
setPageSize(新矩形((float)pgsize.getWidth(),(float)pgsize.getHeight());
pdfWriter.open();
pdfDocument.open();
对于(int i=0;i