导航:首页 > 文档加密 > javapdf转图片

javapdf转图片

发布时间:2022-12-15 16:31:30

java怎么把pdf转化成图片

用Spire.Pdf for Java api可以把PDF转成图片,也可以把图片转成PDF,或者是PDF转到其他格式。下面是转图片的一个例子:

importjava.awt.image.BufferedImage;
importjava.io.File;
importjava.io.IOException;

importjavax.imageio.ImageIO;

importcom.spire.pdf.PdfDocument;

publicclassPDFToImage{

publicstaticvoidmain(String[]args)throwsIOException{

//加载PDF文件
PdfDocumentdoc=newPdfDocument();
doc.loadFromFile("ToImage.pdf");

//保存PDF的每一页到图片
BufferedImageimage;
for(inti=0;i<doc.getPages().getCount();i++){
image=doc.saveAsImage(i);
Filefile=newFile(String.format("ToImage-img-%d.png",i));
ImageIO.write(image,"PNG",file);
}

doc.close();
}
}

❷ icepdf将PDF电子发票转换成PNG图片出现金额错行(java)

可能是icepdf转换有问题,你可以换个其他的api来转换看下效果,下面是spire.pdf for java api转换PDF到图片的代码,给你参考。
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import com.spire.pdf.PdfDocument;
public class PDFToImage {
public static void main(String[] args) throws IOException {
//加载PDF文件
PdfDocument doc = new PdfDocument();
doc.loadFromFile("ToImage.pdf");
//保存PDF的每一页到图片
BufferedImage image;
for (int i = 0; i < doc.getPages().getCount(); i++) {
image = doc.saveAsImage(i);
File file = new File( String.format("ToImage-img-%d.png", i));
ImageIO.write(image, "PNG", file);
}
doc.close();
}
}

❸ Java pdf转图片有哪些工具

Spire.PDF for Java这个不错,Java将PDF转为图片

❹ javaweb pdf流转jpg流怎么操作

package pdf;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import javax.swing.SwingUtilities;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import com.sun.pdfview.PDFFile;
import com.sun.pdfview.PDFPage;
public class PdfToJpg {
public static void setup() throws IOException {
// 加载一个pdf从一个字节缓冲区
File file = new File("D:\\yangliu\\test.pdf");
RandomAccessFile raf = new RandomAccessFile(file, "r");
FileChannel channel = raf.getChannel();
ByteBuffer buf = channel.map(FileChannel.MapMode.READ_ONLY, 0,
channel.size());
PDFFile pdffile = new PDFFile(buf);
System.out.println("页数:" + pdffile.getNumPages());
String getPdfFilePath = System.getProperty("user.dir") + "\\pdfPicFile";
System.out.println("getPdfFilePath is :" + getPdfFilePath);

for (int i = 1; i < pdffile.getNumPages(); i++) {
// 画第一页到一个图像
PDFPage page = pdffile.getPage(i);
// 获得宽度和高度的文件在默认的变焦
Rectangle rect = new Rectangle(0, 0, (int) page.getBBox()
.getWidth(), (int) page.getBBox().getHeight());
// 生成图像
Image img = page.getImage(rect.width, rect.height, rect, null,
true, true);
BufferedImage tag = new BufferedImage(rect.width, rect.height,
BufferedImage.TYPE_INT_RGB);
tag.getGraphics().drawImage(img, 0, 0, rect.width, rect.height,
null);
// 输出到文件流
FileOutputStream out = new FileOutputStream(getPdfFilePath + "\\"
+ i + ".jpg");
System.out.println("成功保存图片到:"+getPdfFilePath+"\\"+i+".jpg");

JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(tag);
param.setQuality(1f, false); //1f是提高生成的图片质量
encoder.setJPEGEncodeParam(param);
encoder.encode(tag); // JPEG编码
out.close();
}
}

public static void main(final String[] args){
SwingUtilities.invokeLater(new Runnable() {
public void run() {
try {
PdfToJpg.setup();
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
}

❺ java 将pdf转成JPG。。

BufferedImage tag = new BufferedImage(rect.width, rect.height,
BufferedImage.TYPE_INT_RGB);
这句是读入图片的流,传入的参数是图片本身的长,高,RGB色位。

tag.getGraphics().drawImage(img, 0, 0, rect.width, rect.height,
null);
这句是输出图片的方法,几个参数分别是,图片对象,0,0,图片的长,高,null。

所以应该是改下句的这两个参数,你把rect.width和rect.height的数值放大两倍看看。
应该是这里。

❻ JAVA怎么将PDF的base64转换成jpg的base64

package com.aiait.base.util;


import org.apache.pdfbox.pdmodel.PDDocument;

import org.apache.pdfbox.rendering.ImageType;

import org.apache.pdfbox.rendering.PDFRenderer;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;


import com.aiait.base.service.impl.base.SearchServiceImpl;


import org.apache.pdfbox.*;


import java.awt.image.BufferedImage;

import java.io.ByteArrayOutputStream;

import java.io.File;

import java.io.IOException;

import java.io.InputStream;

import java.net.URL;

import java.text.DecimalFormat;

import java.util.Date;


import javax.imageio.ImageIO;


import org.apache.commons.lang3.StringUtils;


import sun.misc.BASE64Decoder;

import sun.misc.BASE64Encoder;


public class PDFUtil {

// logger

private static final Logger lOGGER = LoggerFactory.getLogger(PDFUtil.class);


public static void main(String[] args) {

// pdfTojpg("C://Test//eClaimPDF//1//Others.pdf","C://Test//eClaimPDF//WrittenConfirmation.jpg");

Date timeDiffE = null;

Date timeDiffL = null;

timeDiffE = new Date();

base64PdfToJpg(pdfBase64);

timeDiffL = new Date();

lOGGER.info("base64PdfToJpg use time: " + getDiffTime(timeDiffL, timeDiffE) + "s");

}

private static String base64PdfToJpg(String base64Pdf) {

String jpg_base64 = null;

int pdfdpi = 400;

BASE64Decoder decoder = new BASE64Decoder();

byte[] pdf_bytes = null;

try {

pdf_bytes = decoder.decodeBuffer(base64Pdf);

} catch (IOException e1) {

e1.printStackTrace();

}


try (final PDDocument document = PDDocument.load(pdf_bytes)) {

int size = document.getNumberOfPages();

/*图像合并使用参数*/

// 定义宽度

int width = 0;

// 保存一张图片中的RGB数据

int[] singleImgRGB;

// 定义高度,后面用于叠加

int shiftHeight = 0;

//保存每张图片的像素值

BufferedImage imageResult = null;

// 利用PdfBox生成图像

PDDocument pdDocument = document;

PDFRenderer renderer = new PDFRenderer(pdDocument);

/*根据总页数, 按照50页生成一张长图片的逻辑, 进行拆分*/

// 每50页转成1张图片

int pageLength = size; //有多少转多少

// 总计循环的次数

int totalCount = pdDocument.getNumberOfPages() / pageLength + 1;

for (int m = 0; m < totalCount; m++) {

for (int i = 0; i < pageLength; i++) {

int pageIndex = i + (m * pageLength);

if (pageIndex == pdDocument.getNumberOfPages()) {

System.out.println("m = " + m);

break;

}

// 96为图片的dpi,dpi越大,则图片越清晰,图片越大,转换耗费的时间也越多

BufferedImage image = renderer.renderImageWithDPI(pageIndex, 106, ImageType.RGB);

int imageHeight = image.getHeight();

int imageWidth = image.getWidth();

if (i == 0) {

//计算高度和偏移量

//使用第一张图片宽度;

width = imageWidth;

// 保存每页图片的像素值

// 加个判断:如果m次循环后所剩的图片总数小于pageLength,则图片高度按剩余的张数绘制,否则会出现长图片下面全是黑色的情况

if ((pdDocument.getNumberOfPages() - m * pageLength) < pageLength) {

imageResult = new BufferedImage(width, imageHeight * (pdDocument.getNumberOfPages() - m * pageLength), BufferedImage.TYPE_INT_RGB);

} else {

imageResult = new BufferedImage(width, imageHeight * pageLength, BufferedImage.TYPE_INT_RGB);

}

} else {

// 将高度不断累加

shiftHeight += imageHeight;

}

singleImgRGB = image.getRGB(0, 0, width, imageHeight, null, 0, width);

imageResult.setRGB(0, shiftHeight, width, imageHeight, singleImgRGB, 0, width);

}

// System.out.println("m = " + m);

File outFile = new File("C://Test//eClaimPDF//WrittenConfirmation.png");

System.out.println(outFile.getName());

// 写图片

ImageIO.write(imageResult, "png", outFile);

// 这个很重要,下面会有说明

shiftHeight = 0;

}

pdDocument.close();


ByteArrayOutputStream baos = new ByteArrayOutputStream();//io流

ImageIO.write(imageResult, "png", baos);//写入流中

byte[] jpg_Bytes = baos.toByteArray();//转换成字节

BASE64Encoder encoder = new BASE64Encoder();

jpg_base64 = encoder.encodeBuffer(jpg_Bytes).trim();//转换成base64串

jpg_base64 = jpg_base64.replaceAll(" ", "").replaceAll(" ", "");//删除

// System.out.println("值为:"+"data:image/jpg;base64,"+jpg_base64);

} catch (Exception e) {

e.printStackTrace();

}

return "data:image/jpg;base64,"+jpg_base64;

}

// private static String base64PdfToJpg(String base64Pdf) {

// String jpg_base64 = null;

// int pdfdpi = 400;

//

// BASE64Decoder decoder = new BASE64Decoder();

// byte[] pdf_bytes = null;

// try {

// pdf_bytes = decoder.decodeBuffer(base64Pdf);

// } catch (IOException e1) {

// e1.printStackTrace();

// }

//

// try (final PDDocument document = PDDocument.load(pdf_bytes)) {

// int size = document.getNumberOfPages();

// for (int i = 0; i < size; i++) {

// BufferedImage image = new PDFRenderer(document).renderImageWithDPI(i, pdfdpi, ImageType.RGB);

// BufferedImage image = new PDFRenderer(document).

//

// ByteArrayOutputStream baos = new ByteArrayOutputStream();//io流

// ImageIO.write(image, "jpg", baos);//写入流中

// byte[] jpg_Bytes = baos.toByteArray();//转换成字节

// BASE64Encoder encoder = new BASE64Encoder();

// jpg_base64 = encoder.encodeBuffer(jpg_Bytes).trim();//转换成base64串

// jpg_base64 = jpg_base64.replaceAll(" ", "").replaceAll(" ", "");//删除

//

// System.out.println("值为:"+"data:image/jpg;base64,"+jpg_base64);

//

// }

// } catch (Exception e) {

// e.printStackTrace();

// }

// return "data:image/jpg;base64,"+jpg_base64;

// }


private static void pdfTojpg(String pdfFilePath, String jpgFilePath) {

File pdfFile = new File(pdfFilePath);

int idx = jpgFilePath.lastIndexOf('.');

String jpgprefix = StringUtils.substring(jpgFilePath, 0, idx);

int pdfdpi = 400;

BASE64Decoder decoder = new BASE64Decoder();

byte[] bytes = null;

try {

bytes = decoder.decodeBuffer(pdfBase64);

} catch (IOException e1) {

e1.printStackTrace();

}


// try (final PDDocument document = PDDocument.load(pdfFile, "")) {

try (final PDDocument document = PDDocument.load(bytes)) {

int size = document.getNumberOfPages();

for (int i = 0; i < size; i++) {

BufferedImage image = new PDFRenderer(document).renderImageWithDPI(i, pdfdpi, ImageType.RGB);

/*

* ByteArrayOutputStream baos = new ByteArrayOutputStream();//io流

* ImageIO.write(image, "jpg", baos);//写入流中 byte[] imgBytes =

* baos.toByteArray();//转换成字节 BASE64Encoder encoder = new BASE64Encoder();

* String png_base64 = encoder.encodeBuffer(imgBytes).trim();//转换成base64串

* png_base64 = png_base64.replaceAll(" ", "").replaceAll(" ", "");//删除

*

* System.out.println("值为:"+"data:image/jpg;base64,"+png_base64);

*/

File jpgFile = new File(jpgprefix + "_" + i + ".jpg");

ImageIO.write(image, "jpg", jpgFile);

}

} catch (Exception e) {

e.printStackTrace();

}


}

private static Double getDiffTime(Date lateTime, Date earlyTime) {

DecimalFormat df=new DecimalFormat("0.00");//设置保留位数

return Double.valueOf(df.format((double)(lateTime.getTime() - earlyTime.getTime()) / 1000));

}


public static String pdfBase64 = "***" //from web网页链接, upload a PDF to get the base64 string (Base64 - Online Base64 decoder and encoder)

}

❼ java做 pdf转换成图片 时出现Unknown CMap: UniGB-UCS2-H急~

用jasperreport的exportpdffile那个方法生成pdf到指定的磁盘目录下,所有的pdf文件生成是生成了,文件大小也不一.但是打开任何pdf文件都是空白的,不知道为什么,而我换exporthtmlfile的那个方法生成的html文件都能展现正常.由于这个程序是在后台生成文件给mail发送的所以不通过jsp,action的流程,只能在后台指定目录中生成一个pdf文件,然后用mail去调用的.所以不能用response流生成pdf文件.都是通过传来的数据生成的pdf,我其他什么都没有改动,就只是用exportpdffile生成的pdf文件是空白的,但用exporthtmlfile的方法生成的能展现,说明数据源是没问题的.不知道为什么,困绕很久,由于需求只要求传pdf文件,所以不能用html的文件来传送,不知道是不是这两个方法的参数设置有什么不同吗?而且pdf的那两个itext中文包我也导入了,所以不存在字符转换问题

❽ 用java实现pdf转jpg图片的全代码,我这里附上参考代码。

学JAVA就到广州疯狂JAVA来学习 李刚授课 我是不能。。。

❾ java 把pdf文档中有高清图片转化为图片时内容不完整,就是图片没有了,请高手帮助。

安装Acrobat,并设置PHOTOSHOP为默认图片编辑器。用对象工具右键点击图片再选编辑,就能把图片以原清晰度完整读入PS。

❿ java pdf转图片问题

搜索添加spire.pdf.jar文件为依赖,pdf转图片代码如下:

  1. import java.awt.image.BufferedImage;

  2. import java.io.File;

  3. import java.io.IOException;

  4. import com.spire.pdf.PdfDocument;

  5. import javax.imageio.ImageIO;


  6. public class toImage {


  7. public static void main(String[] args) throws IOException {

  8. //加载PDF文件

  9. PdfDocument doc = new PdfDocument();

  10. doc.loadFromFile("Sample.pdf");

  11. //保存PDF的每一页到图片

  12. BufferedImage image;

  13. for (int i = 0; i < doc.getPages().getCount(); i++) {

  14. image = doc.saveAsImage(i);

  15. File file = new File( String.format("ToImage-img-%d.png", i));

  16. ImageIO.write(image, "PNG", file);

  17. }

  18. doc.close();

  19. }

  20. }

阅读全文

与javapdf转图片相关的资料

热点内容
dvd光盘存储汉子算法 浏览:755
苹果邮件无法连接服务器地址 浏览:960
phpffmpeg转码 浏览:671
长沙好玩的解压项目 浏览:142
专属学情分析报告是什么app 浏览:563
php工程部署 浏览:831
android全屏透明 浏览:732
阿里云服务器已开通怎么办 浏览:802
光遇为什么登录时服务器已满 浏览:301
PDF分析 浏览:484
h3c光纤全工半全工设置命令 浏览:141
公司法pdf下载 浏览:381
linuxmarkdown 浏览:350
华为手机怎么多选文件夹 浏览:683
如何取消命令方块指令 浏览:349
风翼app为什么进不去了 浏览:778
im4java压缩图片 浏览:362
数据查询网站源码 浏览:150
伊克塞尔文档怎么进行加密 浏览:890
app转账是什么 浏览:163