Java PDF压缩桌面应用程序工具

Java PDF压缩桌面应用程序工具,java,pdf,itext,desktop-application,Java,Pdf,Itext,Desktop Application,我正在尝试开发一个桌面应用程序(最好),它应该能够在很大程度上压缩PDF文件(可能在40%-50%左右)。我选择了JAVA并编写了以下代码,但它可以将文件压缩10kb,这是不可取的。我应该选择哪种语言,或者我应该做些什么来获得所需的结果。请帮忙 public class Compress { public static void main(String[] args) throws FileNotFoundException, DocumentException, IOExceptio

我正在尝试开发一个桌面应用程序(最好),它应该能够在很大程度上压缩PDF文件(可能在40%-50%左右)。我选择了JAVA并编写了以下代码,但它可以将文件压缩10kb,这是不可取的。我应该选择哪种语言,或者我应该做些什么来获得所需的结果。请帮忙

public class Compress {

    public static void main(String[] args) throws FileNotFoundException, DocumentException, IOException {
        PdfReader reader = new PdfReader("C:\\Users\\Srijita     thakur\\Desktop\\test\\CS_S06.pdf");
        PdfStamper stamper = new PdfStamper(reader, new     FileOutputStream("C:\\Users\\Srijita Thakur\\Desktop\\test\\op.pdf"),     PdfWriter.VERSION_1_5);
        stamper.getWriter().setCompressionLevel(5);
        int total = reader.getNumberOfPages() + 1;
        for (int i = 1; i < total; i++) {
            reader.setPageContent(i, reader.getPageContent(i));
        }
        stamper.setFullCompression();
        stamper.close();
        reader.close();

    }

}
公共类压缩{
公共静态void main(字符串[]args)抛出FileNotFoundException、DocumentException、IOException{
PdfReader reader=新的PdfReader(“C:\\Users\\Srijita thakur\\Desktop\\test\\CS_S06.pdf”);
PdfStamper stamper=新PdfStamper(读卡器,新文件输出流(“C:\\Users\\Srijita Thakur\\Desktop\\test\\op.pdf”),PdfWriter.VERSION\u 1\u 5);
stamper.getWriter().setCompressionLevel(5);
int total=reader.getNumberOfPages()+1;
对于(int i=1;i
PDF已被压缩。好的归档员可能会压缩一些空间,但这取决于文档。尝试7zip的最大设置。它甚至有可以从你的应用程序调用的命令行工具。不确定使用哪种语言或哪种库。有免费的桌面应用程序可以进行压缩(如),这可能会解决您的问题。他们获得更多压缩的方法是降低pdf中图像的质量。由于图像往往会堆积成pdf文件,并且已经被压缩,因此关键在于重新压缩图像,以有损的方式最大限度地减小图像的大小,从而使图像仍具有可读性和视觉可接受性。我不知道有哪种语言的代码库可以为您提供这种功能。
setCompressionLevel(5)
不会有多大影响。通常,流已经用最佳压缩进行了压缩。
setFullCompression()
将压缩对象和交叉引用表,这将导致最小PDF的文件大小变大,而具有多个对象的PDF的文件大小变小。真正的好处是压缩图像(导致图像分辨率较低,但文件大小要小得多)。好的,非常感谢:)所以我也应该集中精力压缩pdf文件中的图像,对吗?