parser leer icepdf convert java pdf tiff

leer - pdf parser java



Una buena biblioteca para convertir PDF a TIFF? (9)

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?



No puedo recomendar ninguna biblioteca de códigos, pero es fácil usar GhostScript para convertir PDF en formatos de mapa de bits. Personalmente, he utilizado el script a continuación (que también usa las utilidades 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 usar -sDEVICE=tiff... para obtener salida TIFF directa en varios sub-formatos TIFF de GhostScript.


Tal vez 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.


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.


aquí también hacemos conversión PDF -> G3 tiffs con alta y baja resolución. Según 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 un buen número de ellos durante el día. En producción, la conversión se realiza utilizando gsdll32.dll; pero si quieres probarlo usa la siguiente línea de comando:

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

Convertiría su PDF en el GIF TIFF de alta resolución. 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í.

espero que esto ayude, saludos


Tengo una gran experiencia con iText (ahora, estoy usando la versión 5.0.6) y este es el código para la 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; }