java - PDFBox 将 PDF 转换为 TIFF。减少图像大小(以字节为单位)

标签 java image pdf tiff pdfbox

我正在尝试将 pdf 转换为 tiff 图像。我使用 pdfbox 让它工作,但图像太大。

假设我的 PDF 大小为 224kb => 图像大小=1.4Mb

如何在不损失质量的情况下缩小 tiff 文件?

下面是一些代码:

TIFFImageWriterSpi tiffspi = new TIFFImageWriterSpi();
writer = tiffspi.createWriterInstance();
ImageWriteParam param = writer.getDefaultWriteParam();
TIFFImageWriteParam param2 = (TIFFImageWriteParam) writer.getDefaultWriteParam();
param2.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);

param2.setCompressionType("LZW");
param2.setCompressionQuality(1.0f);

writer.setOutput(output);
writer.write(null,new IIOImage(image,null,null),param2);

最佳答案

以下是一些准则:

  • 使颜色与您的输出相匹配。如果您以黑色和 白色使用双值输出,即每像素一位。如果 你的颜色很少,没有太多的阴影或混合,比如 突出着色或卡通风格的图形,使用 256 种颜色。仅有的 如果 PDF 中有照片,请使用全彩。如果你必须 产生全彩,你对小尺寸的追求注定是注定的。
  • 将压缩率与颜色深度相匹配。用于单色使用 CCITT T.4 或 CCITT T.6,效率更高 位序列。 LZW 在字节序列(例如 256 色)上效果最佳。 如果你必须生产全彩,这是你获得体面的唯一希望 压缩是 jpeg,但这会使您的文本和线条变得模糊。

关于java - PDFBox 将 PDF 转换为 TIFF。减少图像大小(以字节为单位),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16058213/

相关文章:

java - 正确使用ProgressMonitorDialog的取消按钮、中断线程、显示进度

java - 如何计算 00 :00:00 a. m 的日期。今天的?

image - Libtiff:从像素阵列生成 TIFF/EP Profile 2 原始图像

c# - 使用 C# 组合框放置图像和字符串

image - 如何在ffmpeg中的视频上叠加/放置图像

java - Blackberry:位置服务向后兼容 OS 4.5

java - PHP 套接字连接被拒绝(Java 服务器)

javascript - Elfinder 打开 PDF 而不是下载

php - 如何使用 PHP 在 PDF 文件中查找所需文本的坐标?

html - 使用 Laravel 路由和 vuejs axios 以模式加载 PDF