icepdf转换PDF为图片,部分字体乱码,百度说要买字体,可是咋买 ????

发布于 2021-12-04 18:18:01 字数 170 浏览 676 评论 8

icepdf  转换PDF为图片,部分中文乱码,网上说要购买字体,可是咋买呢???坑爹啊。。。。
.。哪位知道咋买的,告诉我下,或者还有别的更好的转换 库????

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

最偏执的依靠 2021-12-05 10:36:57

我也是相同的问题,请问解决了吗,怎么解决的呢

一笔一画续写前缘 2021-12-05 10:35:29

回复
使用xpdf了

凡尘雨 2021-12-05 09:46:46

在window下面没有问题,但是挡在centos7下 pdf转换图片出现乱码问题,而且pdf文件正常,没有乱码.

爱的故事 2021-12-05 08:31:23

你那pdf文件是否有问题啊,给我那个pdf,我看看

躲猫猫 2021-12-05 07:05:56

我有部分PDF转换出来乱码,没办法啊,,坑爹。。。。

飘过的浮云 2021-12-05 06:56:47

回复
@tianpeng91 : 我也是相同的问题,请问解决了吗,怎么解决的呢

离不开的别离 2021-12-05 00:44:24

不需要购买字体

代码如下:依赖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();
}
}

}

拍不死你 2021-12-04 23:23:37

。。。好吧,我忘了说环境,在java里面,需要用程序调用的。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文