Java 프로그램을 사용하여 PDF 문서를 압축하는 방법
PDF를 압축하면 파일 크기가 줄어들어 업로드, 전송 및 파일 저장이 더 빠르고 디스크 공간도 절약할 수 있습니다. 파일 아카이빙, 이메일 전송, 네트워크 공유 등 다수의 PDF 문서를 빈번히 처리해야 하는 경우, PDF를 압축하면 작업 효율이 크게 향상됩니다. 이 튜토리얼에서는 Free Spire.PDF for Java를 사용하여 PDF 문서의 텍스트와 이미지를 압축하는 방법을 소개합니다. 압축 프로세스는 PDF 파일의 내용에 어떤 손상이나 영향도 주지 않으므로 파일 최적화를 위해 이 기능을 안심하고 사용할 수 있습니다. 아래에는 자세한 조작 방법이 나와 있습니다.
프로그램 환경
IntelliJ IDEA 2018 (jdk 1.8.0)
먼저Free Spire.PDF for Java를 설치하십시오.
이 링크에서 Free Spire.PDF for Java를 다운로드하고 패키지의 압축을 풀 수 있습니다.그런 다음 IDEA에서 새 프로젝트를 만들고 차례로 "파일" - "프로젝트 구조" - "모듈" - "의존성"을 클릭합니다. 오른쪽 초록색 플러스 아래에있는 "JAR 또는 디렉토리"를 선택하고, 압축 해제 된 패키지의 lib 폴더에서 "Spire.PDF.jar"를 찾아 프로젝트로 가져옵니다.
샘플 코드:
import com.spire.pdf.PdfCompressionLevel;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.exporting.PdfImageInfo;
import com.spire.pdf.graphics.PdfBitmap;
public class CompressPdfDocument {
public static void main(String[] args) {
//PdfDocument 클래스의 객체를 생성합니다
PdfDocument doc = new PdfDocument();
//PDF 문서 로드
doc.loadFromFile("sample.pdf");
//IncrementalUpdate 설정을 false로 설정합니다
doc.getFileInfo().setIncrementalUpdate(false);
//압축 수준을 최고로 설정
doc.setCompressionLevel(PdfCompressionLevel.Best);
//문서의 페이지 반복
for (int i = 0; i < doc.getPages().getCount(); i++) {
//지정된 페이지 가져오기
PdfPageBase page = doc.getPages().get(i);
//각 페이지에 대한 이미지 정보 모음 가져오기
PdfImageInfo[] images = page.getImagesInfo();
//컬렉션의 항목 반복하기
if (images != null && images.length > 0)
for (int j = 0; j < images.length; j++) {
//특정 이미지 가져오기
PdfImageInfo image = images[j];
PdfBitmap bp = new PdfBitmap(image.getImage());
//압축 품질 설정
bp.setQuality(20);
//원본 이미지를 압축된 이미지로 바꾸기
page.replaceImage(j, bp);
}
//파일 저장
doc.saveToFile("result.pdf");
doc.close();
}
}
}
PDF 문서를 압축하기 위해 PdfDocument 클래스의 객체를 생성하고, PdfDocument.loadFromFile() 메서드를 사용하여 PDF 문서를 불러옵니다. PdfDocument.getFileInfo().setIncrementalUpdate() 메서드를 사용하여 증분 업데이트를 비활성화하고, PdfDocument.setCompressionLevel() 메서드를 사용하여 압축 레벨을 최상으로 설정합니다. PdfPageBase.getImagesInfo() 메서드를 사용하여 페이지를 순환하며 각 페이지의 이미지 정보 컬렉션을 가져옵니다. 그런 다음 PdfBitmap.setQuality() 메서드를 사용하여 특정 이미지의 압축 품질을 줄입니다. 마지막으로 PdfPageBase.replaceImage() 메서드를 사용하여 원래 이미지를 압축된 이미지로 대체하고, PdfDocument.saveToFile() 메서드를 사용하여 다른 PDF 파일로 문서를 저장합니다.
