使用ICEPdf转图片,多页pdf文档如何生成一张图片?
使用ICEPdf转图片,多页pdf文档如何生成一张图片?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
使用ICEPdf转图片,多页pdf文档如何生成一张图片?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
linux下 图片中的中文乱码 windows下正常
已经解决
public String createSingleImageFromPDF(String pdfName) throws Exception {
Assert.hasText(pdfName);
if (!pdfName.endsWith(".pdf")) {
throw new RuntimeException("请检查参数pdfName文件名是否以.pdf结尾!");
}
String pdfFileName = system.getContract_download() + "/" + pdfName;
org.icepdf.core.pobjects.Document document = new org.icepdf.core.pobjects.Document();
document.setFile(pdfFileName);
float scale = 2f;
float rotation = 0f;
List<BufferedImage> bufferImgList = new ArrayList<BufferedImage>();
for (int i = 0; i < document.getNumberOfPages(); i++) {
BufferedImage image = (BufferedImage) document.getPageImage(i, GraphicsRenderingHints.SCREEN,
org.icepdf.core.pobjects.Page.BOUNDARY_CROPBOX, rotation, scale);
bufferImgList.add(image);
}
document.dispose();
String jpegName = getRandomFileName() + ".jpeg";
int height = 0; // 总高度
int width = 0; // 总宽度
int _height = 0; // 临时的高度 , 或保存偏移高度
int __height = 0; // 临时的高度,主要保存每个高度
int picNum = bufferImgList.size();
int[] heightArray = new int[picNum]; // 保存每个文件的高度
BufferedImage buffer = null; // 保存图片流
List<int[]> imgRGB = new ArrayList<int[]>(); // 保存所有的图片的RGB
int[] _imgRGB; // 保存一张图片中的RGB数据
for (int i = 0; i < picNum; i++) {
buffer = bufferImgList.get(i);
heightArray[i] = buffer.getHeight();// 图片高度
_height = buffer.getHeight();
if (i == 0) {
width = buffer.getWidth();// 图片宽度
}
height += _height; // 获取总高度
_imgRGB = new int[width * _height];// 从图片中读取RGB
_imgRGB = buffer.getRGB(0, 0, width, _height, _imgRGB, 0, width);
imgRGB.add(_imgRGB);
}
_height = 0; // 设置偏移高度为0
// 生成新图片
BufferedImage imageResult = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
for (int i = 0; i < picNum; i++) {
__height = heightArray[i];
if (i != 0){
_height += __height; // 计算偏移高度
}
imageResult.setRGB(0, _height, width, __height, imgRGB.get(i), 0, width); // 写入流中
}
File outFile = new File(system.getContract_download() + "/" + jpegName);
ImageIO.write(imageResult, "jpeg", outFile);// 写图片
return jpegName;
}