首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在java中将ppt文件转换为PDF时出错

在java中将ppt文件转换为PDF时出错
EN

Stack Overflow用户
提问于 2018-01-09 07:26:17
回答 1查看 852关注 0票数 2

我刚开始学习java

我试图使用NoSuchMethodError apache poi和Itext库将PPT文件转换为PDF文件,但我得到了的错误

我试过了所有版本的Apache poi和poi-ooxml,但是我得到了相同的错误,请帮助我找到这个错误的解决方案。

这是我的代码:

代码语言:javascript
复制
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 org.apache.poi.hslf.model.Slide;
import org.apache.poi.hslf.usermodel.SlideShow;
import com.itextpdf.text.Document;
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 class PPTtoPDF {

    public PPTtoPDF() {

    }
    @SuppressWarnings("resource")
    public void convertPPTToPDF(String sourcepath, String destinationPath) 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;

            SlideShow ppt = new SlideShow(inputStream);
            pgsize = ppt.getPageSize();
            Slide slide[] = ppt.getSlides();
            System.out.println("Length----> "+slide.length);
            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));
                System.out.println(table);
            }

        pdfDocument.add(table);
        pdfDocument.close();
        pdfWriter.close();
        System.out.println("Powerpoint file converted to PDF successfully");
    }


    public static void main(String[] args) throws Exception
    {
        PPTtoPDF pp = new PPTtoPDF();
        pp.convertPPTToPDF("D:\\tp\\slides.ppt", "D:\\tp\\1.pdf");
    }
}

而错误是

代码语言:javascript
复制
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.poi.POIDocument.<init>(Lorg/apache/poi/poifs/filesystem/DirectoryNode;Lorg/apache/poi/poifs/filesystem/POIFSFileSystem;)V
    at org.apache.poi.hslf.HSLFSlideShow.<init>(HSLFSlideShow.java:134)
    at org.apache.poi.hslf.HSLFSlideShow.<init>(HSLFSlideShow.java:120)
    at org.apache.poi.hslf.HSLFSlideShow.<init>(HSLFSlideShow.java:107)
    at org.apache.poi.hslf.usermodel.SlideShow.<init>(SlideShow.java:122)
    at convertService.PPTtoPDF.convertPPTToPDF(PPTtoPDF.java:44)
    at convertService.PPTtoPDF.main(PPTtoPDF.java:75)
EN

回答 1

Stack Overflow用户

发布于 2018-01-09 07:58:52

请参阅关于这个主题的Apache常见问题条目。 --几乎可以肯定的是,您已经向类路径中添加了POI的新副本,但是已经有了一个较旧的版本(来自早期的需要、框架等),而Java现在对使用哪个版本感到困惑。

你可以用这个工具:

  • mvn依赖性
  • 树JDK 8: jdeps

(https://wiki.openjdk.java.net/display/JDK8/Java+Dependency+Analysis+Tool)

jdeps是自JDK 8以来添加的一个新的命令行工具,供开发人员使用以了解其应用程序和库的静态依赖关系。jdeps是对给定类文件的静态分析工具。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48163194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档