icepdf转换PDF为图片,部分字体乱码,百度说要买字体,可是咋买 ????
icepdf 转换PDF为图片,部分中文乱码,网上说要购买字体,可是咋买呢???坑爹啊。。。。
.。哪位知道咋买的,告诉我下,或者还有别的更好的转换 库????
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
icepdf 转换PDF为图片,部分中文乱码,网上说要购买字体,可是咋买呢???坑爹啊。。。。
.。哪位知道咋买的,告诉我下,或者还有别的更好的转换 库????
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(8)
我也是相同的问题,请问解决了吗,怎么解决的呢
回复
使用xpdf了
在window下面没有问题,但是挡在centos7下 pdf转换图片出现乱码问题,而且pdf文件正常,没有乱码.
你那pdf文件是否有问题啊,给我那个pdf,我看看
我有部分PDF转换出来乱码,没办法啊,,坑爹。。。。
回复
@tianpeng91 : 我也是相同的问题,请问解决了吗,怎么解决的呢
不需要购买字体
代码如下:依赖icepdf-core.jar
package com.office;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import org.icepdf.core.exceptions.PDFException;
import org.icepdf.core.exceptions.PDFSecurityException;
import org.icepdf.core.pobjects.Document;
import org.icepdf.core.pobjects.PDimension;
import org.icepdf.core.pobjects.Page;
import org.icepdf.core.util.GraphicsRenderingHints;
/**
* *********************************************
* @author Administrator
* @FileName PdfToImages.java
* @Description 转换pfd每一页或首页为jpg缩略图大图、小图
**********************************************
*/
public class PdfToImages {
public static final String FILETYPE_JPG = "jpg";
public static final String SUFF_IMAGE = "." + FILETYPE_JPG;
public static void main(String[] args) {
try {
tranfer("F:\taomingke工作区\2014-07\时尚云平台简介.pdf",1);
} catch (PDFException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (PDFSecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 转换pfd第一页为jpg缩略图大图
*
* @param filepath
* @param zoom
* @throws PDFException
* @throws PDFSecurityException
* @throws IOException
*/
public static void tranfer1(String filepath, float zoom)
throws PDFException, PDFSecurityException, IOException {
// ICEpdf document class
Document document = null;
float rotation = 0f;
document = new Document();
document.setFile(filepath);
// 创建以pdf文件名为名称的文件夹保存pdf缩略图
File file = new File(filepath.substring(0, filepath.lastIndexOf(".")));
if (!file.exists() && !file.isDirectory()) {
System.out.println("//不存在");
file.mkdir();
} else {
System.out.println("//目录存在");
}
String imagepath = "";
// 设置文件名
imagepath = jpgFilename(filepath, 0);
// 转换首页为jpg缩略图
tranferPer(document, rotation, zoom, imagepath, 0);
}
/**
* 转换pfd每一页为jpg缩略图大图
*
* @param filepath
* pfd文件路径
* @param zoom
* 缩略图缩放比例
* @throws PDFException
* @throws PDFSecurityException
* @throws IOException
*/
public static void tranfer(String filepath, float zoom)
throws PDFException, PDFSecurityException, IOException {
// ICEpdf document class
Document document = null;
float rotation = 0f;
document = new Document();
document.setFile(filepath);
// 获取pdf总页数
int pages = document.getNumberOfPages();
if (pages > 0) {
// 创建以pdf文件名为名称的文件夹保存pdf缩略图
File file = new File(filepath.substring(0, filepath
.lastIndexOf(".")));
if (!file.exists() && !file.isDirectory()) {
System.out.println("//不存在");
file.mkdir();
} else {
System.out.println("//目录存在");
}
String imagepath = "";
String smallimagepath = "";
// 将每一页的pdf转换为jpg缩略图
for (int i = 0; i < pages; i++) {
// 设置文件名
imagepath = jpgFilename(filepath, i);
tranferPer(document, rotation, zoom, imagepath, i);
//由缩略图生成指定宽高的jpg小图
smallimagepath = imagepath.substring(0,imagepath.lastIndexOf("."))+"-small"+".jpg";
zoomImage(imagepath, smallimagepath, 88, 126);
}
}
}
/**
* 设置jpg文件名
*
* @param filepath
* @param index
* @return
*/
public static String jpgFilename(String filepath, int index) {
String jpgFilename = "";
String folder = "";
index++;
if (filepath != null && !filepath.equals("")) {
folder = filepath.substring(filepath.lastIndexOf("\") + 1,
filepath.lastIndexOf("."));
jpgFilename = filepath.substring(0, filepath.lastIndexOf("."))
+ "\" + folder + "-" + index + "." + FILETYPE_JPG;
}
return jpgFilename;
}
/**
* 转换一页pdf为jpg缩略图大图
*
* @param document
* @param rotation
* @param zoom
* @param imagepath
* @throws PDFException
* @throws PDFSecurityException
* @throws IOException
*/
public static void tranferPer(Document document, float rotation,
float zoom, String imagepath, int index) throws PDFException,
PDFSecurityException, IOException {
float scale = 1f;
Page page = document.getPageTree().getPage(index);
page.init();
PDimension sz = page.getSize(Page.BOUNDARY_CROPBOX, rotation, scale);
int pageWidth = (int) sz.getWidth();
int pageHeight = (int) sz.getHeight();
BufferedImage image = new BufferedImage(pageWidth, pageHeight,
BufferedImage.TYPE_INT_RGB);
Graphics g = image.createGraphics();
page.paint(g, GraphicsRenderingHints.PRINT, Page.BOUNDARY_CROPBOX,
rotation, scale);
g.dispose();
// capture the page image to file
try {
System.out.println("转换第 " + (index + 1) + " 页");
File file = new File(imagepath);
ImageIO.write(image, "jpg", file);
} catch (Throwable e) {
e.printStackTrace();
}
image.flush();
//由缩略图生成指定宽高的jpg小图
String smallimagepath = imagepath.substring(0,imagepath.lastIndexOf("."))+"-small"+".jpg";
zoomImage(imagepath, smallimagepath, 88, 126);
}
/**
* 由缩略图生成指定宽高的jpg小图
* @param srcFileName
* @param tagFileName
* @param width
* @param height
*/
public static void zoomImage(String srcFileName, String tagFileName,
int width, int height) {
try {
BufferedImage bi = ImageIO.read(new File(srcFileName));
BufferedImage tag = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
tag.getGraphics().drawImage(bi, 0, 0, width, height, null);
ImageIO.write(tag, "jpg", new File(tagFileName));
} catch (IOException e) {
e.printStackTrace();
}
}
}
。。。好吧,我忘了说环境,在java里面,需要用程序调用的。