寻找一种压缩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)