PDF Belge Manipülasyonu Java içinde

Aspose.PDF FOSS Java için mevcut PDF belgelerini manipüle etmek için zengin bir API seti sunar — bölme, birleştirme, sayfa çıkarma, sayfa aralıkları ekleme ve sayfalardaki içeriği yeniden boyutlandırma. Bu yetenekler PdfFileEditor içinde ve onun eşlik eden sınıfları ContentsResizeParameters ve ContentsResizeValuede yoğunlaşmıştır.

PdfFileEditor: Temel Sayfa İşlemleri

PdfFileEditor sınıfı, üst düzey PDF dosya işlemleri için merkezi bir kolaylıktır. Birden fazla PDF dosyasını birleştirme, sayfa alt kümelerini çıkarma, bir belgeyi tek tek sayfalara bölme ve bir belgeden diğerine belirli bir konumda sayfa ekleme yöntemleri sağlar.

PdfFileEditor editor = new PdfFileEditor();
// Concatenate two documents into one
editor.concatenate("first.pdf", "second.pdf", "combined.pdf");
// Extract pages 2 through 5 to a new file
editor.extract("source.pdf", 2, 5, "extracted.pdf");

Ana yöntemler şunlardır:

  • concatenate(inputFiles, outputFile) — birden fazla belgeyi sırayla birleştirir
  • extract(inputFile, startPage, endPage, outputFile) — kesintisiz bir aralığı dışa aktarır
  • extract(inputFile, pageNumbers, outputFile) — bağlantısız bir küme dışa aktarır
  • splitToPages(inputFile) — sayfa başına bir ByteArrayOutputStream olarak böler
  • insert(inputFile, insertPosition, portFile, startPage, endPage, outputFile) — bir aralık ekler
  • delete(inputFile, pageNumbers, outputFile) — belirli sayfaları kaldırır
  • append(inputFile, portFile, startPage, endPage, outputFile) — bir sayfa aralığını ekler

Büyük dosyalar için, setUseDiskBuffer(true) dahili depolamayı heap’ten diske değiştirir.

ContentsResizeParameters ile İçerik Yeniden Boyutlandırma

PdfFileEditor.resizeContents(), mevcut sayfa sınırları içinde içeriği ayarlar. Her kenar boşluğu — sol, sağ, üst, alt — ve içerik genişliği ve yüksekliği, ContentsResizeValue örnekleri olarak belirtilir; bu örnekler ContentsResizeValue.percents(value) veya ContentsResizeValue.units(value) fabrika yöntemleriyle oluşturulur.

try (Document doc = new Document("input.pdf")) {
    PdfFileEditor editor = new PdfFileEditor();
    ContentsResizeParameters params = new ContentsResizeParameters(
        ContentsResizeValue.percents(10),   // left margin
        ContentsResizeValue.percents(80),   // content width
        ContentsResizeValue.percents(10),   // right margin
        ContentsResizeValue.percents(10),   // top margin
        ContentsResizeValue.percents(80),   // content height
        ContentsResizeValue.percents(10)    // bottom margin
    );
    editor.resizeContents(doc, params);
    doc.save("resized.pdf");
}

ContentsResizeParameters için altı argümanlı yapıcı, değerleri şu sırayla kabul eder: leftMargin, contentsWidth, rightMargin, topMargin, contentsHeight, bottomMargin. Yüzde tabanlı değerler kullanıldığında altı değer toplamı %100 olmalı, ya da mutlak nokta değerleri kullanıldığında sayfa boyutlarıyla eşleşmelidir.

Belirli Sayfaları Yeniden Boyutlandırma

Yalnızca bir alt küme sayfa yeniden boyutlandırma gerektirdiğinde, sayfa numaralarının bir tamsayı dizisini kabul eden aşırı yükleme, bu sayfalara hedeflenir ve geri kalanları değiştirilmeden bırakır:

PdfFileEditor editor = new PdfFileEditor();
ContentsResizeParameters params = new ContentsResizeParameters(
    ContentsResizeValue.units(28),   // left margin in points
    ContentsResizeValue.units(540),  // content width
    ContentsResizeValue.units(28),   // right margin
    ContentsResizeValue.units(28),   // top margin
    ContentsResizeValue.units(786),  // content height
    ContentsResizeValue.units(28)    // bottom margin
);
// Only resize pages 1 and 3
editor.resizeContents(doc, new int[]{1, 3}, params);

ContentsResizeValue.getValue() ve isPercent(), depolanan değeri incelemeye ve bunun yüzde mi yoksa mutlak nokta sayısı mı olduğunu belirlemeye olanak tanır.

Kitapçık ve N-Up Düzeni

PdfFileEditor, iki taraflı kitapçık sırasına göre sayfaları yerleştirmek için makeBooklet() ve bir sayfada birden çok sayfa döşemek için makeNUp() içerir. Her iki yöntem de dosya yollarını veya akışları kabul eder:

PdfFileEditor editor = new PdfFileEditor();
// Print as a folded booklet
editor.makeBooklet("input.pdf", "booklet.pdf");
// Tile 2 columns × 3 rows per sheet
editor.makeNUp("input.pdf", "nup.pdf", 2, 3);

PdfPageEditor: Sayfa Başına Yakınlaştırma Kontrolü

PdfPageEditor, yakınlaştırma seviyesi gibi bireysel sayfa özelliklerini hedef alır. setZoom(), belgenin bir görüntüleyicide açıldığında başlangıç büyütmesini kontrol eden bir float çarpanı kabul eder:

PdfPageEditor pageEditor = new PdfPageEditor();
pageEditor.bindPdf("input.pdf");
pageEditor.setZoom(1.5f);
pageEditor.save("zoomed.pdf");

0.0 değerleri veya negatif değerler reddedilir — getZoom() bu durumlarda 1.0 döndürür. Bu, PdfPageEditor‘yi erişilebilirlik veya kiosk ekranı kullanım durumları için belirli bir büyütme düzeyinde açılması gereken belgeleri hazırlamaya uygun kılar.

Başlarken

Maven bağımlılığını ekleyin ve facades paketini içe aktarın:

<dependency>
  <groupId>org.aspose</groupId>
  <artifactId>aspose-pdf-foss</artifactId>
  <version>26.8.0</version>
</dependency>
import org.aspose.pdf.*;
import org.aspose.pdf.facades.*;

Aspose.PDF FOSS for Java MIT lisanslıdır ve https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-Java adresinde mevcuttur.

İlgili Kaynaklar