maven依赖
<!-- pdf2tif 彩色版 -->
<dependency>
<groupId>com.sun.media</groupId>
<artifactId>jai_codec</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>javax.media</groupId>
<artifactId>jai_core</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>org.icepdf.os</groupId>
<artifactId>icepdf-core</artifactId>
<version>6.2.2</version>
</dependency>
<dependency>
<groupId>javax.media</groupId>
<artifactId>jai_imageio</artifactId>
<version>1.1</version>
</dependency>
实现代码
import java.nio.file.Files;
import com.sun.media.jai.codec.ImageCodec;
import com.sun.media.jai.codec.ImageEncoder;
import com.sun.media.jai.codec.TIFFEncodeParam;
import org.icepdf.core.pobjects.Document;
import org.icepdf.core.pobjects.Page;
import org.icepdf.core.util.GraphicsRenderingHints;
public static List<byte[]> pdf2tifColorList(byte[] data){
List<byte[]> bytes = new ArrayList<>();
Document document = new Document();
try {
document.setByteArray(data,0,data.length,"");
float rotation = 0f;
for (int i = 0; i < document.getNumberOfPages(); i++) {
BufferedImage image = (BufferedImage) document.getPageImage(i,
GraphicsRenderingHints.SCREEN, Page.BOUNDARY_CROPBOX,
rotation, (float) 3.0);
BufferedImage bufferedImage = new BufferedImage(
image.getWidth(null), image.getHeight(null),
BufferedImage.TYPE_INT_RGB);
bufferedImage.getGraphics().drawImage(image, 0, 0, null);
TIFFEncodeParam param = new TIFFEncodeParam();
param.setCompression(TIFFEncodeParam.COMPRESSION_JPEG_TTN2);
ByteArrayOutputStream out = new ByteArrayOutputStream(OmsConstants.Number.ONE_MB);
ImageEncoder enc = ImageCodec.createImageEncoder("TIFF", out,
param);
enc.encode(bufferedImage);
image.flush();
out.close();
bytes.add(out.toByteArray());
}
document.dispose();
} catch (Exception e) {
e.printStackTrace();
}
return bytes;
}
public static void main(String[] args) {
File file = new File("D:/PDF/bb.pdf");
try {
List<byte[]> list = pdf2tifColorList(Files.readAllBytes(file.toPath()));
int i = 1;
for(byte[] b : list){
FileOutputStream ou = new FileOutputStream(new File("D:/PDF/" + i + ".tif"));
ou.write(b);
ou.flush();
i++;
}
}catch (Exception e){
e.printStackTrace();
}
}
有个别jar下载不了的兄弟,可以点赞收藏然后留言邮箱,一般48小时内会发。