Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.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 PPTX到PNG颜色渲染–;阿帕奇POI_Java_Png_Apache Poi_Powerpoint - Fatal编程技术网

Java PPTX到PNG颜色渲染–;阿帕奇POI

Java PPTX到PNG颜色渲染–;阿帕奇POI,java,png,apache-poi,powerpoint,Java,Png,Apache Poi,Powerpoint,我正在使用POI库将pptx幻灯片转换为png,但它无法正确渲染幻灯片的颜色,例如,它将渲染灰色而不是蓝绿色。 我试图将pptx幻灯片转换为svg,但遇到了同样的问题,所以我想知道这是否与XMLSlideShow类或XSLFSlide类有关。 任何帮助都将不胜感激 代码: String file = "C:\\Users\\ABC\\demo1.pptx"; XMLSlideShow ppt = null; ppt = new XMLSlideShow(OPCPackage.open(new

我正在使用POI库将pptx幻灯片转换为png,但它无法正确渲染幻灯片的颜色,例如,它将渲染灰色而不是蓝绿色。 我试图将pptx幻灯片转换为svg,但遇到了同样的问题,所以我想知道这是否与XMLSlideShow类或XSLFSlide类有关。 任何帮助都将不胜感激

代码:

String file = "C:\\Users\\ABC\\demo1.pptx";
XMLSlideShow ppt = null;

ppt = new XMLSlideShow(OPCPackage.open(new File(file)));    
Dimension pgsize = ppt.getPageSize();
float scale = 1;
int width = (int) (pgsize.width * scale);
int height = (int) (pgsize.height * scale);

XSLFSlide[] slide = ppt.getSlides();

for (int i = 0; i < slide.length; i++) {
    String title = slide[i].getTitle();

    BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
    Graphics2D graphics = img.createGraphics();

    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.setColor(Color.white);
    graphics.clearRect(0, 0, width, height);
    graphics.scale(scale, scale);

    slide[i].draw(graphics);

    int sep = file.lastIndexOf(".");
    String fname = file.substring(0, sep == -1 ? file.length() : sep) + "-" + (i + 1) +".png";

    FileOutputStream out = new FileOutputStream(fname);
    ImageIO.write(img, "png", out);
    out.close();
}   
String file=“C:\\Users\\ABC\\demo1.pptx”;
XMLSlideShow ppt=null;
ppt=newxmlsideshow(OPCPackage.open(newfile(文件));
维度pgsize=ppt.getPageSize();
浮标=1;
整数宽度=(整数)(pgsize.width*比例);
整数高度=(整数)(pgsize.height*比例);
XSLFSlide[]slide=ppt.getSlides();
对于(int i=0;i
这是apache POI库的一个问题。请使用旧版本,即3.7,这可能会解决您的问题。

我目前正在为x/hslf重新处理幻灯片渲染-如果最新POI版本仍然存在此问题,请打开bugzilla条目,我会查看它