使用POI将ppt幻灯片导出为图片,但是其中的中文是乱码,如何解决
问题如题,结果如下图。java代码如下:importjava.awt.Color;importjava.awt.Dimension;importjava.awt.Grap...
问题如题,结果如下图。
java代码如下:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
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;
public class TestPOI0 {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
FileInputStream is = new FileInputStream("d:\\test.ppt");
SlideShow ppt = new SlideShow(is);
is.close();
Dimension pgsize = ppt.getPageSize();
Slide[] slide = ppt.getSlides();
for (int i = 0; i < slide.length; i++) {
BufferedImage img = new BufferedImage(pgsize.width, pgsize.height,
BufferedImage.TYPE_INT_RGB);
Graphics2D graphics = img.createGraphics();
// clear the drawing area
graphics.setPaint(Color.white);
graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width,
pgsize.height));
// render
slide[i].draw(graphics);
// save the output
FileOutputStream out = new FileOutputStream("d:\\slide-" + (i + 1)
+ ".jpg");
javax.imageio.ImageIO.write(img, "jpg", out);
out.close();
}
}
} 展开
java代码如下:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
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;
public class TestPOI0 {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
FileInputStream is = new FileInputStream("d:\\test.ppt");
SlideShow ppt = new SlideShow(is);
is.close();
Dimension pgsize = ppt.getPageSize();
Slide[] slide = ppt.getSlides();
for (int i = 0; i < slide.length; i++) {
BufferedImage img = new BufferedImage(pgsize.width, pgsize.height,
BufferedImage.TYPE_INT_RGB);
Graphics2D graphics = img.createGraphics();
// clear the drawing area
graphics.setPaint(Color.white);
graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width,
pgsize.height));
// render
slide[i].draw(graphics);
// save the output
FileOutputStream out = new FileOutputStream("d:\\slide-" + (i + 1)
+ ".jpg");
javax.imageio.ImageIO.write(img, "jpg", out);
out.close();
}
}
} 展开
展开全部
应该是和字体定义有关系的。POI中默认没有中文字体。要自己加,而且对于斜体、粗体的控制,中文字体和英文字体的处理是不同的,而POI只支持英文的处理方式。几年前曾经作为一个BUG提交给POI,但POI答复不认为是BUG。然后我提交new Feature,建议按照Java Swing中对中文字体的处理方法来处理,POI项目组答复和体系结构有关系,不准备追加,不知道现在有没有进展。
印象中POI有一个字体文件的定义,要参看他的文档中,关于Locale 和 font的说明。
印象中POI有一个字体文件的定义,要参看他的文档中,关于Locale 和 font的说明。
博思aippt
2024-07-20 广告
2024-07-20 广告
作为深圳市博思云创科技有限公司的工作人员,对于Word文档生成PPT的操作,我们有以下建议:1. 使用另存为功能:在Word中编辑完文档后,点击文件->另存为,选择PowerPoint演示文稿(*.pptx)格式,即可将文档内容转换为PPT...
点击进入详情页
本回答由博思aippt提供
展开全部
如果幻灯片数量不多的情况下可以用截屏键Print Screen来逐一解决,这个应该不会出问题的。如果数量较大可以幻灯片另存为windows图元文件(.wmf),然后把每张图片都改为jpg 或者bmp的格式。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
转换时清除绘图区了.
你看他那文字是否是图片格式.
还有你对输出图的图片格式与原格式不要做改动,再尝试下.
你看他那文字是否是图片格式.
还有你对输出图的图片格式与原格式不要做改动,再尝试下.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
期待
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询