相关疑难解决方法(0)

通过java压缩带有大图像的pdf

寻找一种压缩PDF格式的图像并输出pdf进行存档的方法.我无法在创建之前压缩图像,因为它会影响打印质量.

每个pdf的大小约为8MB,其中大部分由2个图像组成.图像采用png格式,并在生成期间生成pdf(使用第三方生成器)

有没有办法在不使用第三方工具的情况下在java中压缩这些.我试过pdfbox,itext和第三方exe(neevia),第三方工具是迄今为止给我任何结果的唯一一个(下降到大约半MB)但我不想放弃对exe的控制.示例代码如下.

import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Arrays;

import org.apache.pdfbox.exceptions.COSVisitorException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.common.PDStream;

import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;
import com.itextpdf.text.pdf.PdfWriter;

public class compressPDF {

public static void main (String[] args) throws IOException, DocumentException, COSVisitorException {


    /*
     * Using PDF Box
     */

    PDDocument doc; // = new PDDocument();

    doc = PDDocument.load("C:/_dev_env_/TEMP/compressPDF/TRPT_135002_1470_20131212_121423.PDF");

    PDStream stream= new PDStream(doc);
    stream.addCompression();

    doc.save("C:/_dev_env_/TEMP/compressPDF/compressed_pdfBox.pdf");

    doc.close();

    /*
     * Using itext
     */

    PdfReader reader = new PdfReader("C:/_dev_env_/TEMP/compressPDF/TRPT_135002_1470_20131212_121423.PDF");

    PdfStamper stamper = new …
Run Code Online (Sandbox Code Playgroud)

java pdf image itext pdfbox

10
推荐指数
2
解决办法
2万
查看次数

标签 统计

image ×1

itext ×1

java ×1

pdf ×1

pdfbox ×1