iText-콘텐츠 축소
이 장에서는 iText 라이브러리를 사용하여 PDF 문서에서 이미지 크기를 조정하는 방법을 알아 봅니다.
PDF에서 콘텐츠 축소
다음은 iText 라이브러리를 사용하여 PDF 페이지의 내용을 축소하는 단계입니다.
1 단계 : PdfWriter 및 PdfReader 개체 만들기
그만큼 PdfWriter클래스는 PDF의 DocWriter를 나타냅니다. 이 클래스는 패키지에 속합니다.com.itextpdf.kernel.pdf. 이 클래스의 생성자는 PDF가 생성 될 파일의 경로를 나타내는 문자열을받습니다.
아래와 같이 생성자에 문자열 값 (PDF를 만들어야하는 경로를 나타냄)을 전달하여 PdfWriter 클래스를 인스턴스화합니다.
// Creating a PdfWriter object
String dest = "C:/itextExamples/shrinking.pdf";
PdfWriter writer = new PdfWriter(dest);
기존 PDF에서 데이터를 읽으려면 PdfReader 아래와 같이 개체.
// Creating a PdfReader
String src = "C:/itextExamples/pdfWithImage.pdf";
PdfReader reader = new PdfReader(src);
2 단계 : PdfDocument 개체 만들기
그만큼 PdfDocumentclass는 iText에서 PDF 문서를 나타내는 클래스입니다. 이 클래스는 패키지에 속합니다.com.itextpdf.kernel.pdf. 이 클래스를 인스턴스화하려면 (쓰기 모드에서) 클래스의 객체를 전달해야합니다.PdfWriter 생성자에.
소스 및 대상 PDF 문서를 PdfWriter 과 PdfReader 아래와 같이 생성자에 객체를 추가합니다.
// Creating a PdfDocument objects
PdfDocument destpdf = new PdfDocument(writer);
PdfDocument srcPdf = new PdfDocument(reader);
3 단계 : 기존 PDF에서 페이지 열기
다음을 사용하여 소스 PDF에서 페이지 가져 오기 getPage() 의 방법 PdfPage수업. 이 개체를 사용하여 아래와 같이 원본 문서의 페이지 크기를 가져옵니다.
// Opening a page from the existing PDF
PdfPage origPage = srcPdf.getPage(1);
// Getting the page size
Rectangle orig = origPage.getPageSizeWithRotation();
4 단계 : 소스 pdf의 내용 축소
사용 getScaleInstance() 의 방법 AffineTransform 클래스의 경우 아래와 같이 소스 문서의 페이지 내용을 축소합니다.
// Shrink original page content using transformation matrix
AffineTransform transformationMatrix = AffineTransform.getScaleInstance(
page.getPageSize().getWidth()/ orig.getWidth()/2,
page.getPageSize().getHeight()/ orig.getHeight()/2);
5 단계 : 페이지 복사
연결 affine transform matrix, 이전 단계에서 생성 된 canvas 아래와 같이 대상 PDF 문서의 개체입니다.
// Concatenating the affine transform matrix to the current matrix
PdfCanvas canvas = new PdfCanvas(page);
canvas.concatMatrix(transformationMatrix);
이제 페이지 사본을 canvas 아래와 같이 대상 PDF의 개체를 원본 문서에 추가합니다.
// Add the object to the canvas
PdfFormXObject pageCopy = origPage.copyAsFormXObject(destpdf);
canvas.addXObject(pageCopy, 0, 0);
6 단계 : Document 개체 만들기
그만큼 Document 패키지 클래스 com.itextpdf.layout자급 자족 PDF를 만드는 동안 루트 요소입니다. 이 클래스의 생성자 중 하나는 PdfDocument 클래스의 개체를받습니다.
인스턴스화 Document 클래스의 객체를 전달하여 클래스 PdfDocument, 아래 그림과 같이.
// Creating a Document
Document document = new Document(destpdf);
7 단계 : 문서 닫기
다음을 사용하여 문서를 닫습니다. close() 의 방법 Document 아래와 같이 클래스.
// Closing the document
document.close();
예
다음 Java 프로그램은 iText 라이브러리를 사용하여 PDF 페이지의 컨텐츠를 축소하는 방법을 보여줍니다. 이름이있는 PDF 문서를 생성합니다.shrinkingPDF.pdf, pdf의 이미지를 축소하고 경로에 저장합니다. C:/itextExamples/
이 코드를 이름이있는 파일에 저장 ShrinkingPDF.java.
import com.itextpdf.kernel.geom.AffineTransform;
import com.itextpdf.kernel.geom.Rectangle;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfPage;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.canvas.PdfCanvas;
import com.itextpdf.kernel.pdf.xobject.PdfFormXObject;
import com.itextpdf.layout.Document;
public class ShrinkPDF {
public static void main(String args[]) throws Exception {
// Creating a PdfWriter object
String dest = "C:/itextExamples/shrinking.pdf";
PdfWriter writer = new PdfWriter(dest);
// Creating a PdfReader
String src = "C:/itextExamples/pdfWithImage.pdf";
PdfReader reader = new PdfReader(src);
// Creating a PdfDocument objects
PdfDocument destpdf = new PdfDocument(writer);
PdfDocument srcPdf = new PdfDocument(reader);
// Opening a page from the existing PDF
PdfPage origPage = srcPdf.getPage(1);
// Getting the page size
Rectangle orig = origPage.getPageSizeWithRotation();
// Adding a page to destination Pdf
PdfPage page = destpdf.addNewPage();
// Scaling the image in a Pdf page
AffineTransform transformationMatrix = AffineTransform.getScaleInstance(
page.getPageSize().getWidth()/orig.getWidth()/2,
page.getPageSize().getHeight()/ orig.getHeight()/2);
// Shrink original page content using transformation matrix
PdfCanvas canvas = new PdfCanvas(page);
canvas.concatMatrix(transformationMatrix);
// Add the object to the canvas
PdfFormXObject pageCopy = origPage.copyAsFormXObject(destpdf);
canvas.addXObject(pageCopy, 0, 0);
// Creating a Document object
Document doc = new Document(destpdf);
// Closing the document
doc.close();
System.out.println("Table created successfully..");
}
}
다음 명령을 사용하여 명령 프롬프트에서 저장된 Java 파일을 컴파일하고 실행합니다.
javac ShrinkingPDF.java
java ShrinkingPDF
실행시 위의 프로그램은 PDF 문서를 생성하고 다음 메시지를 표시합니다.
Table created successfully..
지정된 경로를 확인하면 아래와 같이 생성 된 PDF 문서를 찾을 수 있습니다.