簡體   English   中英

PPTX到PNG的顏色渲染--Apache POI

[英]PPTX to PNG color rendering – Apache POI

我正在使用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();
}   

這是apache POI庫的問題。 請使用可能解決您問題的舊版本,即3.7。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM