پایگاه دانش

تولید PDF از HTML با استفاده از Java [مرحله به مرحله]

این مقاله به شما نشان می‌دهد چگونه PDFها را از HTML با استفاده از Java تولید کنید. می‌توانید به راحتی اسناد HTML را شامل استایل‌های CSS دستکاری و رندر کنید.

Aspose.HTML for Java به برنامه‌های شما امکان انجام گستره وسیعی از وظایف دستکاری HTML را می‌دهد و از HTML5، CSS3، SVG و ویژگی‌های HTML Canvas پشتیبانی می‌کند. با API ما می‌توانید صفحات وب را بارگذاری، تجزیه و تحلیل، ویرایش محتوا و ذخیره و تبدیل صفحات انجام دهید.
قالب‌های محبوبی که می‌توانید دستکاری کنید: XHTML، MHTML، SVG، MD، PDF، XPS، EPUB، PNG، TIFF، JPEG، BMP و سایرین.

PDF از HTML در Java

مجموعه‌ای غنی از ویژگی‌ها

Aspose.HTML for Java ویژگی‌های متعددی در حوزه‌های مختلف ارائه می‌دهد:

• مدل شیء سند (Document object model) – امکان ویرایش، ایجاد و حذف گره‌ها را فراهم می‌کند و بر اساس مستندات رسمی HTML ساخته شده است.
• مبدل‌های با عملکرد بالا. برای اطلاعات بیشتر درباره قالب‌های پشتیبانی‌شده به فهرست ویژگی‌ها یا مقالات تبدیل مراجعه کنید.
• پردازش CSS، JavaScript و سایر فرمت‌های داخلی.

تولید PDF از HTML با یک خط کد Java

می‌توانید به سادگی PDF را از HTML در برنامه Java خود با یک خط کد واقعی با استفاده از متدهای ایستا کلاس Converter تولید کنید.

// Invoke the ConvertHTML method to convert the HTML to PDF.
com.aspose.html.converters.Converter.convertHTML(
        "<span>Hello World!!</span>",
        ".",
        new com.aspose.html.saving.PdfSaveOptions(),
        "output.pdf"
);

تولید PDF از HTML به صورت خط به خط با Java

در ادامه مراحل تولید PDF از HTML به صورت خط به خط آورده شده است:

  1. با استفاده از کلاس HtmlDocument ابتدا فایل HTML را بارگذاری کنید.
  2. سپس یک نمونه از PdfSaveOptions ایجاد کنید.
  3. با متد ConvertHTML() کلاس Converter HTML را به صورت فایل PDF ذخیره کنید. برای این کار باید [HTMLDocument]، [PdfSaveOptions] و مسیر فایل خروجی را به متد ConvertHTML() پاس دهید تا PDF از HTML تولید شود.
// Prepare an HTML code and save it to the file.
String code = "<span>Hello World!!</span>";
try (java.io.FileWriter fileWriter = new java.io.FileWriter("document.html")) {
    fileWriter.write(code);
}

// Initialize an HTML document from the file
com.aspose.html.HTMLDocument document = new com.aspose.html.HTMLDocument("document.html");
try {
    // Initialize PdfSaveOptions
    com.aspose.html.saving.PdfSaveOptions options = new com.aspose.html.saving.PdfSaveOptions();

    // Convert HTML to PDF
    com.aspose.html.converters.Converter.convertHTML(
            document,
            options,
            "output.pdf"
    );
} finally {
    if (document != null) {
        document.dispose();
    }
}

سفارشی‌سازی فرآیند رندر با گزینه Save

می‌توانید فرآیند رندر را با [PdfSaveOptions] سفارشی کنید و [اندازه صفحه]، [مجوزهای فایل]، [حاشیه‌ها]، [نوع رسانه CSS] و موارد دیگر را مشخص نمایید. در مثال زیر می‌توانید ببینید چگونه از PdfSaveOptions استفاده کنید و یک فایل PDF با اندازه صفحه سفارشی و رنگ پس‌زمینه دلخواه ایجاد کنید:

// Prepare an HTML code and save it to the file
String code = "<span>Hello</span> <span>World!!</span>";
try (java.io.FileWriter fileWriter = new java.io.FileWriter("document.html")) {
    fileWriter.write(code);
}

// Set A5 as a page-size and change the background color to green
com.aspose.html.saving.PdfSaveOptions options = new com.aspose.html.saving.PdfSaveOptions();
com.aspose.html.rendering.PageSetup pageSetup = new com.aspose.html.rendering.PageSetup();
com.aspose.html.drawing.Page anyPage = new com.aspose.html.drawing.Page();
anyPage.setSize(
        new com.aspose.html.drawing.Size(
                com.aspose.html.drawing.Length.fromInches(8.3f),
                com.aspose.html.drawing.Length.fromInches(5.8f)
        )
);
pageSetup.setAnyPage(anyPage);
options.setPageSetup(pageSetup);

options.setBackgroundColor(com.aspose.html.drawing.Color.getGreen());

// Convert HTML document to PDF
com.aspose.html.converters.Converter.convertHTML(
        "document.html",
        options,
        "output.pdf"
);

در مقاله بهینه‌سازی تبدیل‌کننده‌ها می‌توانید اطلاعات بیشتری درباره [PdfSaveOptions] پیدا کنید.

ارائه‌دهنده جریان خروجی

اگر می‌خواهید فایل‌ها را در ذخیره‌سازی از راه دور مانند ابر یا پایگاه داده ذخیره کنید، می‌توانید اینترفیس [MemoryStreamProvider] را پیاده‌سازی کنید.
این اینترفیس به عنوان یک شیء callback برای ایجاد یک جریان و آزادسازی جریان ایجاد شده پیش از رندر صفحه یا سند طراحی شده است.

در ادامه یک مثال از استفاده از MemoryStreamProvider آورده شده است:

package com.aspose.html.examples.java;

// For complete examples and data files, please go to https://github.com/aspose-html/Aspose.HTML-for-Java
public class MemoryStreamProvider implements java.io.Closeable {
    // List of InputStream objects created during the document rendering
    public java.util.List<java.io.InputStream> lStream = new java.util.ArrayList<>();

    @Override
    public void close() throws java.io.IOException {
        for (java.io.InputStream stream : lStream) {
            stream.close();
        }
    }
}
// Create an instance of MemoryStreamProvider
try (MemoryStreamProvider streamProvider = new MemoryStreamProvider()) {
    // Initialize an HTML document
    com.aspose.html.HTMLDocument document = new com.aspose.html.HTMLDocument("<span>Hello World!!</span>", ".");
    try {
        // Convert HTML to PDF by using the MemoryStreamProvider
        com.aspose.html.converters.Converter.convertHTML(
                document,
                new com.aspose.html.saving.PdfSaveOptions(),
                streamProvider.lStream
        );

        // Get access to the memory stream that contains the result data
        java.io.InputStream inputStream = streamProvider.lStream.stream().findFirst().get();

        // Flush the result data to the output file
        try (java.io.FileOutputStream fileOutputStream = new java.io.FileOutputStream("output.pdf")) {
            byte[] buffer = new byte[inputStream.available()];
            inputStream.read(buffer);
            fileOutputStream.write(buffer);
        }
    } finally {
        if (document != null) {
            document.dispose();
        }
    }
}

Aspose پشتیبانی فنی برای تمام محصولات خود ارائه می‌دهد، از [مقالات پایگاه دانش]، [مستندات]، [وبلاگ]، [نمونه کد] و [دموها] تا [پشتیبانی رایگان] و همچنین [پشتیبانی پولی] با دسترسی بالا.
اگر به متخصصینی نیاز دارید که همراه شما کار کنند و به شما در پیاده‌سازی Aspose.HTML for Java بر اساس نیازهای‌تان کمک کنند، بهترین راه‌حل مشاوره [مشاوره پولی] ماست.