quarta-feira, 30 de julho de 2014

Java: Converter Tif em Pdf

O código abaixo converte todos os TIFs de um determinado diretório em PDFs.

 import java.io.File;  
 import java.io.FileOutputStream;  
 import com.itextpdf.text.Document;  
 import com.itextpdf.text.Image;  
 import com.itextpdf.text.PageSize;  
 import com.itextpdf.text.Rectangle;  
 import com.itextpdf.text.pdf.PdfContentByte;  
 import com.itextpdf.text.pdf.PdfWriter;  
 import com.itextpdf.text.pdf.RandomAccessFileOrArray;  
 import com.itextpdf.text.pdf.codec.TiffImage;  
 public class TifToPdf {  
      public static void main(String[] args) {         
   int arquivosConvertidos = 0;  
   File[] arquivos = null;    
   File file = new File("C:\\SCAN\\");   
   arquivos = file.listFiles();   
   String tiff;  
   String pdf;  
   int i = 0;   
   for (int j = arquivos.length; i < j; i++) {  
     tiff = arquivos[i].getAbsolutePath();  
     pdf = tiff.substring(0, tiff.lastIndexOf('.') + 1) + "pdf";  
     Document document = new Document(PageSize.LETTER, 0, 0, 0, 0);  
     try {  
      PdfWriter writer = PdfWriter.getInstance(document,new FileOutputStream(pdf));  
      int pages = 0;  
      document.open();  
      PdfContentByte cb = writer.getDirectContent();  
      RandomAccessFileOrArray ra = null;  
      int comps = 0;  
      try {  
        ra = new RandomAccessFileOrArray(tiff);  
        comps = TiffImage.getNumberOfPages(ra);  
      }   
      catch (Throwable e) {  
        System.out.println("Exceção em " + tiff + " "  
         + e.getMessage());  
        continue;  
      }  
      System.out.println("Processando: " + tiff);  
      System.out.print("página (s): ");  
      for (int c = 0; c < comps; ++c) {  
        try {  
         Image img = TiffImage.getTiffImage(ra, c + 1);  
         if (img != null) {  
          System.out.print(c + 1 + " ");  
          img.scalePercent(7200f / img.getDpiX(), 7200f / img.getDpiY());  
          document.setPageSize(new Rectangle(img.getScaledWidth(), img.getScaledHeight()));  
          img.setAbsolutePosition(0, 0);  
          cb.addImage(img);  
          document.newPage();  
          ++pages;  
         }  
        }   
        catch (Throwable e) {  
         System.out.println("Exceção " + tiff + " página "  
          + (c + 1) + " " + e.getMessage());  
        }  
      }  
      ra.close();  
      document.close();  
      }   
      catch (Throwable e) {  
        e.printStackTrace();  
      }  
           ++arquivosConvertidos;  
           System.out.println("");  
      System.out.println("Arquivo convertido: " + pdf);  
     }  
        System.out.println("Conversão finalizada!");  
        System.out.println("Total de arquivos: " + arquivos.length);  
        System.out.println("Arquivos convertidos: " + arquivosConvertidos);  
   }  
 }  

2 comentários:

  1. Olá meu caro, esses nao estao disponiveis para importa
    import com.itextpdf.text.Document;
    import com.itextpdf.text.Image;
    import com.itextpdf.text.PageSize;
    import com.itextpdf.text.Rectangle;
    import com.itextpdf.text.pdf.PdfContentByte;
    import com.itextpdf.text.pdf.PdfWriter;
    import com.itextpdf.text.pdf.RandomAccessFileOrArray;
    import com.itextpdf.text.pdf.codec.TiffImage;

    ResponderExcluir
  2. Olá,

    Baixe o itextpdf e adicione no classpath!

    Pesquisa no google onde baixar o itextpdf, ou utilize o Maven.

    ResponderExcluir