دستکاری سند PDF در Java

Aspose.PDF FOSS برای Java مجموعه‌ای غنی از APIها را برای دستکاری اسناد PDF موجود فراهم می‌کند — تقسیم، الحاق، استخراج صفحات، درج بازه‌های صفحه، و تغییر اندازه محتوا درون صفحات. این قابلیت‌ها در PdfFileEditor و کلاس‌های همراه آن ContentsResizeParameters و ContentsResizeValue متمرکز شده‌اند.

PdfFileEditor: عملیات اصلی صفحه

کلاس PdfFileEditor مرکز اصلی برای عملیات سطح‌بالای فایل PDF است. این کلاس روش‌هایی برای الحاق چندین فایل PDF، استخراج زیرمجموعه‌های صفحات، تقسیم یک سند به صفحات جداگانه، و درج صفحات از یک سند به سند دیگر در موقعیت خاصی ارائه می‌دهد.

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");

روش‌های کلیدی شامل:

  • concatenate(inputFiles, outputFile) — اسناد متعدد را به ترتیب ترکیب می‌کند
  • extract(inputFile, startPage, endPage, outputFile) — یک بازه پیوسته را صادر می‌کند
  • extract(inputFile, pageNumbers, outputFile) — یک مجموعه غیرمتوالی صادر می‌کند
  • splitToPages(inputFile) — برای هر صفحه یک ByteArrayOutputStream ایجاد می‌کند
  • insert(inputFile, insertPosition, portFile, startPage, endPage, outputFile) — یک بازه درج می‌کند
  • delete(inputFile, pageNumbers, outputFile) — صفحات خاصی را حذف می‌کند
  • append(inputFile, portFile, startPage, endPage, outputFile) — یک بازه صفحات را اضافه می‌کند

برای فایل‌های بزرگ، setUseDiskBuffer(true) ذخیره‌سازی داخلی را از heap به دیسک تغییر می‌دهد.

تغییر اندازه محتوا با ContentsResizeParameters

PdfFileEditor.resizeContents() محتوا را درون مرزهای صفحه موجود تنظیم می‌کند. هر حاشیه — چپ، راست، بالا، پایین — و عرض و ارتفاع محتوا به عنوان نمونه‌های ContentsResizeValue تعیین می‌شوند، که از طریق متدهای کارخانه‌ای ContentsResizeValue.percents(value) یا ContentsResizeValue.units(value) ساخته می‌شوند.

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 مقادیر را به ترتیب زیر می‌پذیرد: leftMargin، contentsWidth، rightMargin، topMargin، contentsHeight، bottomMargin. هر شش مقدار باید هنگام استفاده از مقادیر درصدی به 100٪ جمع شوند، یا هنگام استفاده از مقادیر نقطه‌ای مطلق با ابعاد صفحه مطابقت داشته باشند.

تغییر اندازه صفحات خاص

هنگامی که فقط زیرمجموعه‌ای از صفحات نیاز به تغییر اندازه دارند، overloadی که یک آرایهٔ عدد صحیح از شماره‌های صفحات را می‌پذیرد، آن صفحات را هدف قرار می‌دهد در حالی که بقیه دست نخورده می‌مانند:

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() و isPercent() امکان بررسی مقدار ذخیره‌شده و تعیین اینکه آیا آن نمایانگر درصد است یا شمارش نقطه‌ای مطلق را فراهم می‌کنند.

چیدمان کتابچه‌ای و N-Up

PdfFileEditor شامل makeBooklet() برای ترتیب‌گذاری صفحات به صورت کتابچه دوطرفه و makeNUp() برای کاشی‌گذاری چندین صفحه بر روی یک برگه است. هر دو روش مسیرهای فایل یا جریان‌ها را می‌پذیرند:

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: کنترل زوم برای هر صفحه

PdfPageEditor ویژگی‌های فردی صفحه مانند سطح زوم را هدف می‌گیرد. setZoom() یک ضریب عددی شناور می‌پذیرد که بزرگنمایی اولیه را هنگام باز شدن سند در یک نمایشگر کنترل می‌کند:

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

مقادیر 0.0 یا منفی رد می‌شوند — getZoom() در این موارد 1.0 برمی‌گرداند. این باعث می‌شود PdfPageEditor برای تهیه اسنادی که باید با بزرگ‌نمایی خاصی برای دسترس‌پذیری یا موارد استفاده نمایش کیوسک باز شوند، مناسب باشد.

شروع به کار

وابستگی Maven را اضافه کنید و بسته facades را ایمپورت کنید:

<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 برای Java تحت مجوز MIT است و در https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-Java موجود است.

منابع مرتبط