자바 - PNG를 PDF로 변환하는 방법

15288 단어
PDF는 모든 소프트웨어 및 하드웨어에서 잘 작동하는 범용 형식입니다. 이러한 이유로 모든 종류의 작업장에서 사용됩니다. 이미지 파일을 PDF로 변환하면 이미지의 디자인이 그대로 유지되어 완전히 동일하게 보입니다. 이 기사에서는 Spire.PDF for Java을 사용하여 PNG(또는 모든 이미지 형식) 파일을 PDF 문서로 변환하는 방법을 소개합니다.
  • Convert PNG Files to a Single PDF Maintaining Image Quality
  • Convert PNG Files to a PDF Compressing Image Quality

  • Spire.Pdf.jar를 종속성으로 추가



    Maven 프로젝트에서 작업하는 경우 다음을 사용하여 pom.xml 파일에 종속성을 포함할 수 있습니다.

    <repositories>
        <repository>
            <id>com.e-iceblue</id>
            <name>e-iceblue</name>
            <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
        </repository>
    </repositories>
    <dependencies>
        <dependency>
            <groupId>e-iceblue</groupId>
            <artifactId>spire.pdf</artifactId>
            <version>8.5.8</version>
        </dependency>
    </dependencies>
    


    maven을 사용하지 않는 경우 this location 에서 제공되는 zip 파일에서 필요한 jar 파일을 찾을 수 있습니다. 이 자습서에 제공된 샘플 코드를 실행하려면 모든 jar 파일을 애플리케이션 lib 폴더에 포함합니다.

    이미지 품질을 유지하면서 PNG 파일을 단일 PDF로 변환



    이 부분에서는 이미지 품질을 압축하지 않고 각각 별도의 PDF 페이지로 전송되는 단일 PDF 문서에 여러 이미지를 결합하는 방법을 보여줍니다. 주요 단계는 다음과 같습니다.
  • PdfDocument 개체를 만듭니다.
  • PdfDocument.getPageSettings.setMargins() 메서드를 사용하여 페이지 여백을 0으로 설정합니다.
  • 폴더에 있는 이미지 파일의 추상 경로를 가져옵니다.
  • 이미지를 반복하여 특정 이미지를 가져오고 PdfImage.fromImage() 메서드를 사용하여 PdfImage 객체에 로드하고 이미지 너비와 높이를 가져옵니다.
  • PdfDocument.getPages().add() 메서드를 사용하여 이미지 크기에 따라 PDF에 페이지를 추가합니다.
  • PdfPageBase.getCanvas().drawImage() 메서드를 사용하여 페이지의 좌표(0, 0)에서 PdfImage 객체를 그립니다.
  • PdfDocument.saveToFile() 메서드를 사용하여 문서를 PDF 파일로 저장합니다.

  • import com.spire.pdf.PdfDocument;
    import com.spire.pdf.PdfPageBase;
    import com.spire.pdf.graphics.PdfImage;
    
    import javax.imageio.ImageIO;
    import java.awt.*;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    
    public class ConvertPngToPdf {
    
        public static void main(String[] args) throws IOException {
    
            //Create a PdfDocument object
            PdfDocument doc = new PdfDocument();
    
            //Set the margins to 0
            doc.getPageSettings().setMargins(0);
    
            //Creating a File object for directory
            File directoryPath = new File("C:\\Users\\Administrator\\Desktop\\Images");
    
            //Get the abstract paths of the image files in the folder
            File filesList[] = directoryPath.listFiles();
    
            //Loop through the images
            for (int i = 0; i < filesList.length; i++) {
    
                //Read an image to BufferedImage
                BufferedImage bufferedImage = ImageIO.read(new FileInputStream(filesList[i].getAbsolutePath()));
    
                //Create a PdfImage object
                PdfImage pdfImage = PdfImage.fromImage(bufferedImage);
    
                //Get the image width and height
                int width = pdfImage.getWidth();
                int height = pdfImage.getHeight();
    
                //Add a page of the same size as the image
                PdfPageBase page = doc.getPages().add(new Dimension(width, height));
    
                //Draw image at (0, 0) of the page
                page.getCanvas().drawImage(pdfImage, 0, 0, width, height);
            }
    
            //Save to file
            doc.saveToFile("PngToPdf.pdf");
        }
    }
    




    PNG 파일을 PDF 압축 이미지 품질로 변환



    고품질 이미지를 PDF로 병합할 때 PDF 크기가 커지는 경향이 있습니다. 생성된 PDF 문서의 크기를 줄이려면 병합하는 동안 이미지 품질을 압축할 수 있습니다. 다음은 단계입니다.
  • PdfDocument 개체를 만듭니다.
  • PdfDocument.getPageSettings.setMargins() 메서드를 사용하여 페이지 여백을 0으로 설정합니다.
  • 폴더에 있는 이미지 파일의 추상 경로를 가져옵니다.
  • 이미지를 반복하여 특정 이미지를 가져오고 PdfImage.fromImage() 메서드를 사용하여 PdfImage 객체에 로드하고 이미지 너비와 높이를 가져옵니다.
  • PdfDocument.getPages().add() 메서드를 사용하여 이미지 크기에 따라 PDF에 페이지를 추가합니다.
  • PdfPageBase.getCanvas().drawImage(PdfImage image, int compressionQuality, float x, float y, float width, float height) 메서드를 사용하여 페이지의 좌표(0, 0)에서 압축 품질로 이미지를 그립니다. compressionQuality 매개변수의 범위는 1에서 100까지입니다. 1은 사진이 원래 품질의 1%로 압축됨을 의미하고 100은 사진이 압축되지 않음을 의미합니다.
  • PdfDocument.saveToFile() 메서드를 사용하여 문서를 PDF 파일로 저장합니다.

  • import com.spire.pdf.PdfDocument;
    import com.spire.pdf.PdfPageBase;
    import com.spire.pdf.graphics.PdfImage;
    
    import javax.imageio.ImageIO;
    import java.awt.*;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    
    public class ConvertPngToPdfCompressingQuality {
    
        public static void main(String[] args) throws IOException {
    
            //Create a PdfDocument object
            PdfDocument doc = new PdfDocument();
    
            //Set the margins to 0
            doc.getPageSettings().setMargins(0);
    
            //Creating a File object for directory
            File directoryPath = new File("C:\\Users\\Administrator\\Desktop\\Images");
    
            //Get the abstract paths of the image files in the folder
            File filesList[] = directoryPath.listFiles();
    
            //Loop through the images
            for (int i = 0; i < filesList.length; i++) {
    
                //Read an image to BufferedImage
                BufferedImage bufferedImage = ImageIO.read(new FileInputStream(filesList[i].getAbsolutePath()));
    
                //Create a PdfImage object
                PdfImage pdfImage = PdfImage.fromImage(bufferedImage);
    
                //Get the image width and height
                int width = pdfImage.getWidth();
                int height = pdfImage.getHeight();
    
                //Add a page of the same size as the image
                PdfPageBase page = doc.getPages().add(new Dimension(width, height));
    
                //Draw image at (0, 0) of the page
                page.getCanvas().drawImage(pdfImage,30,0, 0, width, height);
            }
    
            //Save to file
            doc.saveToFile("CompressingQuality.pdf");
        }
    }
    


    좋은 웹페이지 즐겨찾기