2008-12-10 19 views
5

Necesito una biblioteca Java para convertir archivos PDF a imágenes TIFF. Los archivos PDF son faxes y me convertiré en TIFF para poder hacer el reconocimiento de código de barras en la imagen. ¿Alguien puede recomendar una buena biblioteca de código abierto para la conversión de PDF a TIFF?¿Una buena biblioteca para convertir PDF a TIFF?

Respuesta

5

responsabilidad: yo trabajo para Atalasoft

We have an SDK that can convert PDF to TIFF. El renderizado funciona con el software Foxit, que hace un procesador de PDF muy poderoso y eficiente.

+0

El enlace arroja un error 404, actualice su respuesta. Gracias –

+1

Listo: busque el complemento de rasterizador de PDF a DotImage Document Imaging –

5

No puedo recomendar ninguna biblioteca de códigos, pero es fácil de usar GhostScript para convertir PDF en formatos de mapa de bits. Personalmente, he utilizado el siguiente script (que también utiliza las utilidades de netpbm) para convertir la primera página de un PDF en una miniatura JPEG:

#!/bin/sh 

/opt/local/bin/gs -q -dLastPage=1 -dNOPAUSE -dBATCH -dSAFER -r300 \ 
    -sDEVICE=pnmraw -sOutputFile=- $* | 
    pnmcrop | 
    pnmscale -width 240 | 
    cjpeg 

Puede utilizar -sDEVICE=tiff... para obtener una salida TIFF directa en varios TIFF sub-formatos de GhostScript.

+0

He usado una solución de Ghostscript anteriormente, pero es simplemente demasiado lenta para el volumen que necesito manejar. – RedFilter

1

Quizás no sea necesario convertir el PDF a TIFF. Es muy probable que el fax sea una imagen incrustada en el PDF, por lo que podría extraer estas imágenes nuevamente. Eso debería ser posible con la biblioteca iText ya mencionada.

No sé si esto es más fácil que el otro enfoque.

0

No Itext no puede convertir archivos PDF a Tiff.

Sin embargo, hay bibliotecas comerciales que pueden hacer eso. jPDFImages es una biblioteca 100% java que puede convertir archivos PDF a imágenes en formatos TIFF, JPEG o PNG (¿y quizás JBIG? No estoy seguro). También puede hacer lo contrario, crear PDF a partir de imágenes. Comienza en $ 300 por un servidor.

3

que aquí también haciendo la conversión de PDF -> G3 TIFF con resolución de alta y baja. Desde mi experiencia, la mejor herramienta que puede tener es Adobe PDF SDK, el único problema es su precio insensato. Entonces no lo usamos

lo que funciona bien para nosotros es ghostscript, las últimas versiones son bastante robustas y representan correctamente la mayoría de los pdfs. Y tenemos bastantes de ellos durante el día. En producción, la conversión se realiza utilizando gsdll32.dll; pero si quieres probar que utilice la siguiente línea de comandos:

gswin32c -dNOPAUSE -dBATCH -dMaxStripSize=8192 -sDEVICE=tiffg3 -r204x196 -dDITHERPPI=200 -sOutputFile=test.tif prefix.ps test.pdf 

sería convertir el PDF en el alto res G3 TIFF. y el código prefix.ps está aquí:

<< currentpagedevice /InputAttributes get 
0 1 2 index length 1 sub {1 index exch undef } for 
/InputAttributes exch dup 0 <</PageSize [0 0 612 1728]>> put 
/Policies << /PageSize 3 >> >> setpagedevice 

otra cosa sobre este SDK es que es de código abierto; obtienes el código fuente de c y ps (postscript) para él. Además, si vas con otra herramienta, comprueba qué tipo de motor tienen para alimentar el procesamiento de PDF, podría suceder que estén usando gs para ello; como por ejemplo, LeadTools sí.

esperanza que esta ayuda, que se refiere a

-1

tengo una gran experiencia con iText (ahora, estoy usando 5.0.6 versión) y este es el código de conversión TIFF a PDF:

private static String convertTiff2Pdf(String tiff) { 

    // target path PDF 
    String pdf = null; 

    try { 

     pdf = tiff.substring(0, tiff.lastIndexOf('.') + 1) + "pdf"; 

     // New document A4 standard (LETTER) 
     Document document = new Document(PageSize.LETTER, 0, 0, 0, 0); 

     PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(pdf)); 
     int pages = 0; 
     document.open(); 
     PdfContentByte cb = writer.getDirectContent(); 
     RandomAccessFileOrArray ra = null; 
     int comps = 0; 
     ra = new RandomAccessFileOrArray(tiff); 
     comps = TiffImage.getNumberOfPages(ra); 

     // Convertion statement 
     for (int c = 0; c < comps; ++c) { 
      Image img = TiffImage.getTiffImage(ra, c + 1); 
      if (img != null) { 
       System.out.println("page " + (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; 
      } 
     } 

     ra.close(); 
     document.close(); 

    } catch (Exception e) { 
     logger.error("Convert fail"); 
     logger.debug("", e); 
     pdf = null; 
    } 

    logger.debug("[" + tiff + "] -> [" + pdf + "] OK"); 
    return pdf; 

} 
+0

Es al revés. El OP ya tiene el PDF y quiere transformarlo en un TIFF. – monzonj

+0

¡Se necesita PDF a Tiff! – Blundell

Cuestiones relacionadas