Converter PNG para PDF usando Java

Converter PNG para PDF usando Java

PNG e PDF são os formatos de arquivo populares e mais usados no momento atual. PNG é um formato de arquivo de imagem enquanto PDF (Portable Document Format) oferece representação de dados confiável e eficiente. Você precisa converter o formato do arquivo de imagem para PDF em alguns cenários. Portanto, nesta postagem do blog, aprenderemos como converter PNG para PDF usando Java PDF API. Vamos escrever o trecho de código e as etapas para realizar essa conversão em um aplicativo Java.

Abordaremos os seguintes tópicos neste artigo:

Biblioteca Java PDF

Esta biblioteca Java PDF é fácil de instalar e oferece documentação sobre instalação. É uma API de nível empresarial que oferece recursos robustos de conversão e manipulação. No entanto, você pode baixar o JAR ou instalá-lo usando as seguintes configurações do Maven:

<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>

Converter PNG para PDF usando Java

Vamos usar as classes e métodos expostos por esta biblioteca Java PDF. Ele permite realizar a conversão de PNG para PDF escrevendo algumas linhas de código-fonte em Java.

Você pode seguir as etapas e o trecho de código mencionado abaixo:

  1. Instancie uma instância da classe Document.
  2. Crie um objeto da classe DocumentBuilder para simplificar a adição de conteúdo ao documento.
  3. Carregue o arquivo de imagem de entrada chamando o método createImageInputStream e atribua-o ao objeto de ImageInputStream.
  4. Invoque o método getImageReaders que retorna um Iterator contendo todos os ImageReaders atualmente registrados e o atribui ao objeto da classe ImageReader.
  5. Chame o método setInput que define a fonte de entrada a ser usada para o ImageInputStream fornecido.
  6. Obtenha o número de quadros na imagem chamando o método getNumImages.
  7. Faça um loop em todos os quadros.
  8. Selecione um quadro ativo e atribua-o ao objeto da classe BufferedImage.
  9. Invoque o método getPageSetup para acessar a configuração da página atual e atribua-a ao objeto da classe PageSetup.
  10. Defina a altura da página chamando o método setPageWidth.
  11. Invoque o método setPageHeight para definir a largura da página.
  12. Insira a imagem no documento e posicione-a no canto superior esquerdo da página chamando o método insertImage.
  13. Salve o arquivo como um formato de arquivo PDF chamando o método save.
public static void ConvertImageToPDF(String inputFileName, String outputFileName) throws Exception {

    // Instanciar uma instância da classe Document  
    Document doc = new Document();
    // Crie um objeto da classe DocumentBuilder para simplificar a adição de conteúdo ao documento.  
    DocumentBuilder builder = new DocumentBuilder(doc);

    // Carregue imagens do disco usando o leitor apropriado.
    // Os formatos de arquivo que podem ser carregados dependem dos leitores de imagem disponíveis na máquina.
    // Carregue o arquivo de imagem de entrada chamando o método createImageInputStream e atribua-o ao objeto de ImageInputStream.
    ImageInputStream iis = ImageIO.createImageInputStream(new File(inputFileName));
    // Invoque o método getImageReaders que retorna um Iterator contendo todos os ImageReaders atualmente registrados e o atribui ao objeto da classe ImageReader.
    ImageReader reader = ImageIO.getImageReaders(iis).next();
    // Chame o método setInput que define a fonte de entrada a ser usada para o ImageInputStream ou outro Object fornecido. 
    reader.setInput(iis, false);

    // Obtenha o número de quadros na imagem chamando o método getNumImages  
    int framesCount = reader.getNumImages(true);

    // Faça um loop em todos os quadros.
    for (int frameIdx = 0; frameIdx < framesCount; frameIdx++) {
        // Insira uma quebra de seção antes de cada nova página, no caso de uma imagem com vários quadros.
        if (frameIdx != 0)
            builder.insertBreak(BreakType.SECTION_BREAK_NEW_PAGE);

        // Selecione o quadro ativo e atribua-o ao objeto da classe BufferedImage 
        BufferedImage image = reader.read(frameIdx);

        // Queremos que o tamanho da página seja igual ao tamanho da imagem.
	      // Converta pixels em pontos para dimensionar a página para o tamanho real da imagem.
	      // Invoque o método getPageSetup para acessar a configuração da página atual e atribua-a ao objeto da classe PageSetup   
        PageSetup ps = builder.getPageSetup();
        // Defina a altura da página chamando o método setPageWidth 
        ps.setPageWidth(ConvertUtil.pixelToPoint(image.getWidth()));
        // Invoque o método setPageHeight para definir a largura da página 
        ps.setPageHeight(ConvertUtil.pixelToPoint(image.getHeight()));

        // Insira a imagem no documento e posicione-a no canto superior esquerdo da página chamando o método insertImage.
        builder.insertImage(
                image,
                RelativeHorizontalPosition.PAGE,
                0,
                RelativeVerticalPosition.PAGE,
                0,
                ps.getPageWidth(),
                ps.getPageHeight(),
                WrapType.NONE);
    }

    if (iis != null) {
        iis.close();
        reader.dispose();
    }
    // Salve o arquivo como um formato de arquivo PDF chamando o método save
    doc.save(outputFileName);
}

Você pode ver a saída na imagem abaixo:

Conversão de PNG para PDF

Conversão de PNG para PDF

Obtenha uma licença gratuita

Você pode obter uma licença temporária gratuita para experimentar a API além das limitações de avaliação.

Resumindo

Podemos encerrar este post aqui. Demonstramos a implementação da biblioteca Java PDF para converter PNG para PDF usando Java programaticamente. Esta biblioteca permite que você crie um conversor de PNG para PDF usando algumas linhas de código. Além disso, você pode visitar a documentação desta API de conversão de PNG para PDF. conholdate.com está continuamente escrevendo sobre novos tópicos interessantes. Portanto, fique conectado para as atualizações mais recentes.

Faça uma pergunta

Você pode nos informar sobre suas perguntas ou dúvidas em nosso fórum.

Perguntas frequentes

Como converter um PNG para PDF?

Você pode usar esta biblioteca para converter PNG para PDF em Java programaticamente. Ele oferece documentação abrangente sobre seu uso.

Como faço para salvar um PNG como PDF sem perder a qualidade?

Vá até esta seção para aprender como salvar um PNG como um arquivo PDF usando uma biblioteca Java. Você pode invocar o método save para salvar um arquivo PNG como um arquivo PDF.

Veja também