iText - İçeriği Küçültme
Bu bölümde, iText kitaplığını kullanarak bir PDF belgesindeki bir görüntünün nasıl ölçekleneceğini göreceğiz.
PDF'deki İçeriği Küçültme
Aşağıda iText kitaplığını kullanarak bir PDF sayfasının içeriğini küçültme adımları verilmiştir.
Adım 1: Bir PdfWriter ve PdfReader nesnesi oluşturma
PdfWritersınıfı, bir PDF için DocWriter'ı temsil eder. Bu sınıf pakete aittircom.itextpdf.kernel.pdf. Bu sınıfın yapıcısı, PDF'nin oluşturulacağı dosyanın yolunu temsil eden bir dizeyi kabul eder.
Aşağıda gösterildiği gibi yapıcısına bir dize değeri (PDF oluşturmanız gereken yolu temsil eden) ileterek PdfWriter sınıfını başlatın.
// Creating a PdfWriter object
String dest = "C:/itextExamples/shrinking.pdf";
PdfWriter writer = new PdfWriter(dest);
Mevcut bir pdf'den veri okumak için bir PdfReader aşağıda gösterildiği gibi nesne.
// Creating a PdfReader
String src = "C:/itextExamples/pdfWithImage.pdf";
PdfReader reader = new PdfReader(src);
Adım 2: Bir PdfDocument nesnesi / nesneleri oluşturma
PdfDocumentclass, iText'teki PDF Belgesini temsil eden sınıftır. Bu sınıf pakete aittircom.itextpdf.kernel.pdf. Bu sınıfı başlatmak için (yazma modunda), sınıfın bir nesnesini iletmeniz gerekir.PdfWriter yapıcısına.
Kaynak ve hedef PDF belgeleri oluşturun. PdfWriter ve PdfReader aşağıda gösterildiği gibi yapıcılara nesneler.
// Creating a PdfDocument objects
PdfDocument destpdf = new PdfDocument(writer);
PdfDocument srcPdf = new PdfDocument(reader);
3. Adım: Mevcut PDF'den bir sayfa açma
Kaynak PDF'den bir sayfa alın getPage() yöntemi PdfPagesınıf. Bu nesneyi kullanarak, aşağıda gösterildiği gibi kaynak belgenin sayfasının boyutunu alın.
// Opening a page from the existing PDF
PdfPage origPage = srcPdf.getPage(1);
// Getting the page size
Rectangle orig = origPage.getPageSizeWithRotation();
Adım 4: Kaynak pdf içeriğini küçültmek
Kullanmak getScaleInstance() yöntemi AffineTransform sınıf, aşağıda gösterildiği gibi kaynak belgenin bir sayfasının içeriğini küçültün.
// Shrink original page content using transformation matrix
AffineTransform transformationMatrix = AffineTransform.getScaleInstance(
page.getPageSize().getWidth()/ orig.getWidth()/2,
page.getPageSize().getHeight()/ orig.getHeight()/2);
5. Adım: Sayfayı kopyalama
Birleştirin affine transform matrix, önceki adımda oluşturulan matrisin canvas Hedef PDF belgesinin nesnesi aşağıda gösterildiği gibi.
// Concatenating the affine transform matrix to the current matrix
PdfCanvas canvas = new PdfCanvas(page);
canvas.concatMatrix(transformationMatrix);
Şimdi, sayfa kopyasını şuraya ekleyin: canvas Hedef PDF'nin nesnesini aşağıda gösterildiği gibi kaynak belgeye ekleyin.
// Add the object to the canvas
PdfFormXObject pageCopy = origPage.copyAsFormXObject(destpdf);
canvas.addXObject(pageCopy, 0, 0);
6. Adım: Belge nesnesini oluşturma
Document paketin sınıfı com.itextpdf.layoutkendi kendine yeten bir PDF oluştururken kullanılan kök öğedir. Bu sınıfın kurucularından biri, PdfDocument sınıfının bir nesnesini kabul eder.
Örnekleyin Document sınıfın nesnesini ileterek sınıf PdfDocument, Aşağıda gösterildiği gibi.
// Creating a Document
Document document = new Document(destpdf);
7. Adım: Belgeyi Kapatma
Belgeyi kullanarak kapatın. close() yöntemi Document sınıf, aşağıda gösterildiği gibi.
// Closing the document
document.close();
Misal
Aşağıdaki Java programı, iText kitaplığı kullanılarak bir PDF sayfasının içeriğinin nasıl küçültüleceğini gösterir. Adıyla bir PDF belgesi oluştururshrinkingPDF.pdf, pdf'deki resmi küçültür ve yola kaydeder C:/itextExamples/
Bu kodu adıyla bir dosyaya kaydedin 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..");
}
}
Kaydedilen Java dosyasını aşağıdaki komutları kullanarak komut isteminden derleyin ve yürütün -
javac ShrinkingPDF.java
java ShrinkingPDF
Yürütmenin ardından, yukarıdaki program aşağıdaki mesajı görüntüleyen bir PDF belgesi oluşturur.
Table created successfully..
Belirtilen yolu doğrularsanız, oluşturulan PDF belgesini aşağıda gösterildiği gibi bulabilirsiniz.