Chuyển đổi PNG sang PDF bằng Java

Chuyển đổi PNG sang PDF bằng Java

PNGPDF là các định dạng tệp phổ biến và được sử dụng rộng rãi nhất tại thời điểm hiện tại. PNG là định dạng tệp hình ảnh trong khi PDF (Định dạng tài liệu di động) cung cấp khả năng trình bày dữ liệu đáng tin cậy và hiệu quả. Bạn cần chuyển đổi định dạng tệp hình ảnh sang PDF trong một số trường hợp. Do đó, trong bài đăng trên blog này, chúng ta sẽ tìm hiểu cách chuyển đổi PNG sang PDF bằng Java PDF API. Chúng tôi sẽ viết đoạn mã và các bước để thực hiện chuyển đổi này trong ứng dụng Java.

Chúng tôi sẽ đề cập đến các chủ đề sau trong bài viết này:

Thư viện Java PDF

[Thư viện Java PDF] này 6 rất dễ cài đặt và cung cấp tài liệu về cài đặt. Đây là API cấp doanh nghiệp cung cấp các tính năng thao tác và chuyển đổi mạnh mẽ. Tuy nhiên, bạn có thể tải xuống JAR hoặc cài đặt nó bằng các cấu hình Maven sau:

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-words</artifactId>
    <version>21.11</version>
    <type>pom</type>
</dependency>

Chuyển đổi PNG sang PDF bằng Java

Chúng ta sẽ sử dụng các lớp và phương thức được cung cấp bởi thư viện Java PDF này. Nó cho phép bạn thực hiện chuyển đổi PNG sang PDF bằng cách viết một vài dòng mã nguồn bằng Java.

Bạn có thể làm theo các bước và đoạn mã được đề cập bên dưới:

  1. Khởi tạo một thể hiện của lớp Tài liệu.
  2. Tạo một đối tượng của lớp DocumentBuilder để đơn giản hóa việc thêm nội dung vào tài liệu.
  3. Tải tệp hình ảnh đầu vào bằng cách gọi phương thức createImageInputStream và gán nó cho đối tượng của ImageInputStream.
  4. Gọi phương thức getImageReaders trả về một Iterator chứa tất cả các ImageReader đã đăng ký hiện tại và gán nó cho đối tượng của lớp ImageReader.
  5. Gọi phương thức setInput để đặt nguồn đầu vào sẽ sử dụng cho ImageInputStream đã cho.
  6. Lấy số lượng khung hình trong ảnh bằng cách gọi phương thức getNumImages.
  7. Lặp qua tất cả các khung.
  8. Chọn một khung đang hoạt động và gán nó cho đối tượng của lớp BufferedImage.
  9. Gọi phương thức getPageSetup để truy cập thiết lập trang hiện tại và gán nó cho đối tượng của lớp PageSetup.
  10. Đặt chiều cao trang bằng cách gọi phương thức setPageWidth.
  11. Gọi phương thức setPageHeight để đặt chiều rộng của trang.
  12. Chèn hình ảnh vào tài liệu và đặt nó ở góc trên cùng bên trái của trang bằng cách gọi phương thức insertImage.
  13. Lưu tệp dưới dạng định dạng tệp PDF bằng cách gọi phương thức save.
public static void ConvertImageToPDF(String inputFileName, String outputFileName) throws Exception {

    // Khởi tạo một thể hiện của lớp Tài liệu  
    Document doc = new Document();
    // Tạo một đối tượng của lớp DocumentBuilder để giúp việc thêm nội dung vào tài liệu trở nên đơn giản.  
    DocumentBuilder builder = new DocumentBuilder(doc);

    // Tải hình ảnh từ đĩa bằng đầu đọc thích hợp.
    // Các định dạng tệp có thể được tải tùy thuộc vào trình đọc hình ảnh có sẵn trên máy.
    // Tải tệp hình ảnh đầu vào bằng cách gọi phương thức createImageInputStream và gán nó cho đối tượng của ImageInputStream.
    ImageInputStream iis = ImageIO.createImageInputStream(new File(inputFileName));
    // Gọi phương thức getImageReaders trả về một Iterator chứa tất cả các ImageReader đã đăng ký hiện tại và gán nó cho đối tượng của lớp ImageReader.
    ImageReader reader = ImageIO.getImageReaders(iis).next();
    // Gọi phương thức setInput để đặt nguồn đầu vào sẽ sử dụng cho ImageInputStream đã cho hoặc Đối tượng khác. 
    reader.setInput(iis, false);

    // Lấy số lượng khung hình trong ảnh bằng cách gọi phương thức getNumImages  
    int framesCount = reader.getNumImages(true);

    // Lặp qua tất cả các khung.
   for (int frameIdx = 0; frameIdx < framesCount; frameIdx++) {
        // Chèn dấu ngắt phần trước mỗi trang mới, trong trường hợp hình ảnh có nhiều khung.
        if (frameIdx != 0)
            builder.insertBreak(BreakType.SECTION_BREAK_NEW_PAGE);

        // Chọn khung hoạt động và gán nó cho đối tượng của lớp BufferedImage 
        BufferedImage image = reader.read(frameIdx);

        // Chúng tôi muốn kích thước của trang giống với kích thước của hình ảnh.
	      // Chuyển đổi pixel thành điểm để kích thước trang thành kích thước hình ảnh thực tế.
	      // Gọi phương thức getPageSetup để truy cập thiết lập trang hiện tại và gán nó cho đối tượng của lớp PageSetup   
        PageSetup ps = builder.getPageSetup();
        // Đặt chiều cao trang bằng cách gọi phương thức setPageWidth 
        ps.setPageWidth(ConvertUtil.pixelToPoint(image.getWidth()));
        // Gọi phương thức setPageHeight để đặt chiều rộng của trang 
        ps.setPageHeight(ConvertUtil.pixelToPoint(image.getHeight()));

        // Chèn hình ảnh vào tài liệu và đặt nó ở góc trên cùng bên trái của trang bằng cách gọi phương thức InsertImage.
        builder.insertImage(
                image,
                RelativeHorizontalPosition.PAGE,
                0,
                RelativeVerticalPosition.PAGE,
                0,
                ps.getPageWidth(),
                ps.getPageHeight(),
                WrapType.NONE);
    }

    if (iis != null) {
        iis.close();
        reader.dispose();
    }
    // Lưu tệp dưới dạng định dạng tệp PDF bằng cách gọi phương thức lưu
    doc.save(outputFileName);
}

Bạn có thể thấy đầu ra trong hình ảnh dưới đây:

Chuyển đổi PNG sang PDF

Chuyển đổi PNG sang PDF

Nhận giấy phép miễn phí

Bạn có thể nhận giấy phép tạm thời miễn phí để dùng thử API vượt quá giới hạn đánh giá.

Tổng hợp

Chúng ta có thể kết thúc bài viết blog này ở đây. Chúng tôi đã trình diễn cách triển khai thư viện Java PDF để chuyển đổi PNG sang PDF bằng cách sử dụng Java theo chương trình. Thư viện này cho phép bạn xây dựng trình chuyển đổi PNG sang PDF bằng cách sử dụng một vài dòng mã. Ngoài ra, bạn có thể truy cập tài liệu của API chuyển đổi PNG sang PDF này. conholdate.com liên tục viết về những chủ đề mới thú vị. Vì vậy, hãy kết nối để cập nhật thông tin mới nhất.

Đặt một câu hỏi

Bạn có thể cho chúng tôi biết về các câu hỏi hoặc thắc mắc của bạn trên diễn đàn của chúng tôi.

Câu hỏi thường gặp

Làm cách nào để chuyển đổi PNG thành PDF?

Bạn có thể sử dụng thư viện này để chuyển đổi PNG sang PDF trong Java theo chương trình. Nó cung cấp tài liệu toàn diện về việc sử dụng nó.

Làm cách nào để lưu PNG dưới dạng PDF mà không làm giảm chất lượng?

Hãy xem qua phần này để tìm hiểu cách lưu PNG dưới dạng tệp PDF bằng thư viện Java. Bạn có thể gọi phương thức save để lưu tệp PNG dưới dạng tệp PDF.

Xem thêm