Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Apache POI将ppyx转换为png引发NullPointerException_Java_Apache_Apache Poi - Fatal编程技术网

Java Apache POI将ppyx转换为png引发NullPointerException

Java Apache POI将ppyx转换为png引发NullPointerException,java,apache,apache-poi,Java,Apache,Apache Poi,当我使用ApachePOI类PPTX2PNG.java将pptx转换为png时,它会抛出NullPointerException。 例外情况如下: java.lang.NullPointerException at org.apache.poi.sl.draw.DrawTextParagraph.getRenderableText(DrawTextParagraph.java:331) at org.apache.poi.sl.draw.DrawTextParagraph.getAttribut

当我使用ApachePOI类PPTX2PNG.java将pptx转换为png时,它会抛出NullPointerException。 例外情况如下:

java.lang.NullPointerException
at org.apache.poi.sl.draw.DrawTextParagraph.getRenderableText(DrawTextParagraph.java:331)
at org.apache.poi.sl.draw.DrawTextParagraph.getAttributedString(DrawTextParagraph.java:483)
at org.apache.poi.sl.draw.DrawTextParagraph.breakText(DrawTextParagraph.java:232)
at org.apache.poi.sl.draw.DrawTextShape.drawParagraphs(DrawTextShape.java:134)
at org.apache.poi.sl.draw.DrawTextShape.getTextHeight(DrawTextShape.java:179)
at org.apache.poi.xslf.usermodel.XSLFTextShape.getTextHeight(XSLFTextShape.java:536)
at org.apache.poi.sl.draw.DrawTextShape.drawContent(DrawTextShape.java:85)
at org.apache.poi.sl.draw.DrawSimpleShape.draw(DrawSimpleShape.java:96)
at org.apache.poi.sl.draw.DrawSheet.draw(DrawSheet.java:67)
at org.apache.poi.sl.draw.DrawSlide.draw(DrawSlide.java:39)
at org.apache.poi.xslf.usermodel.XSLFSlide.draw(XSLFSlide.java:291)
at cn.mailtech.icm.POITest.pptx2png(POITest.java:66)
at cn.mailtech.icm.POITest.testPPTX2Png(POITest.java:31)
以下是主要代码:

    private void pptx2png(File file,String out) throws IOException {
    SlideShow<?, ?> ss = SlideShowFactory.create(file, null, true);
    List<? extends Slide<?, ?>> slides = ss.getSlides();

    Set<Integer> slidenum = slideIndexes(slides.size(), "1");

    if (slidenum.isEmpty()) {
        //usage("slidenum must be either -1 (for all) or within range: [1.." + slides.size() + "] for " + file);
        ss.close();
        return;
    }

    Dimension pgsize = ss.getPageSize();
    int width = (int) (pgsize.width);
    int height = (int) (pgsize.height);

    for (Integer slideNo : slidenum) {
        Slide<?, ?> slide = slides.get(slideNo);

        BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
        Graphics2D graphics = img.createGraphics();
        DrawFactory.getInstance(graphics).fixFonts(graphics);

        // default rendering options
        graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        graphics.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
        graphics.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);
        graphics.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);

        graphics.scale(1, 1);

        // draw stuff
        slide.draw(graphics);

        // save the result

        File outfile = new File(out + slideNo + ".png");
        ImageIO.write(img, ".png", outfile);
    }
}
private void pptx2png(文件,字符串输出)引发IOException{
SlideShow ss=SlideShowFactory.create(文件,null,true);
List>slides=ss.getSlides();
设置slidenum=slideindex(slides.size(),“1”);
if(slidenum.isEmpty()){
//用法(“slidenum必须为-1(对于所有对象)或在范围内:[1..”+slides.size()+“]对于“+文件”);
ss.close();
返回;
}
维度pgsize=ss.getPageSize();
int-width=(int)(pgsize.width);
int高度=(int)(pgsize.height);
对于(整数slideNo:slidenum){
Slide=slides.get(slideNo);
BuffereImage img=新的BuffereImage(宽度、高度、BuffereImage.TYPE_INT_ARGB);
Graphics2D graphics=img.createGraphics();
DrawFactory.getInstance(图形)、fixFonts(图形);
//默认渲染选项
graphics.setRenderingHint(RenderingHints.KEY\u抗锯齿,RenderingHints.VALUE\u抗锯齿开);
graphics.setRenderingHint(RenderingHints.KEY\u RENDERING,RenderingHints.VALUE\u RENDER\u QUALITY);
graphics.setRenderingHint(renderingHits.KEY\u插值,renderingHits.VALUE\u插值双三次);
graphics.setRenderingHint(renderingHits.KEY_-partitionlmetrics,renderingHits.VALUE_-partitionlmetrics_-ON);
图形.比例(1,1);
//画画
幻灯片。绘图(图形);
//保存结果
文件outfile=新文件(out+slideNo+“.png”);
ImageIO.write(img,.png,.outfile);
}
}
当我调试时,我发现了
我认为这是ApachePOI的一个bug。

它将pptx转换为png!您使用ApachePOI3.14尝试过的版本可能重复吗?如果没有,升级时会发生什么?在bugzilla中提交一个bug,最重要的是添加PPTX-File。我来看看。。。如果您介意公开共享该文件,还可以将其发送到my@apache.org电子邮件