Pregunta

Necesito una biblioteca Java para convertir archivos PDF a imágenes TIFF. Los archivos PDF son los faxes, y será convertida a TIFF para que yo, pues, haría el reconocimiento de códigos de barras en la imagen. ¿Alguien puede recomendar una buena biblioteca de código abierto para la conversión de PDF a TIFF?

¿Fue útil?

Solución

exención de responsabilidad: yo trabajo para Atalasoft

Tenemos un SDK que puede convertir PDF a TIFF . La prestación funciona con el software Foxit lo que hace que una muy poderosa y eficiente procesador de PDF.

Otros consejos

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

También aquí 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 loco. Por lo que no usamos.

lo que funciona bien para nosotros es ghostscript , últimas versiones son bastante robustos y hacen representar correctamente la mayoría de los archivos PDF. Y tenemos un buen número de ellos procedentes durante el día. En la conversión de producción se realiza mediante el gsdll32.dll; pero si quieres probarlo utilizar la 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 acerca de este SDK es que es de código abierto; que está recibiendo tanto cy código PS (PostScript) fuente para ello. Además, si vas con otra herramienta comprobar qué tipo de motor que tienen que alimentar la prestación pdf, podría suceder que están usando para ello gs; Como por ejemplo LeadTools hace.

Espero que esto ayude, respecto

Puede utilizar la biblioteca icepdf (Licencia Apache 2.0). Incluso proporcionan este caso de uso exacto como uno de los ejemplos de código fuente: http://wiki.icesoft.org/display/PDF/Multi-page Tiff + + Captura

Tal vez no es necesario recurrir a convertir el PDF a TIFF. El fax será muy probablemente una imagen incrustada en el PDF, por lo que sólo podía extraer estas imágenes de nuevo. Eso debería ser posible con la biblioteca iText ya se ha mencionado.

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

No se itext no puede convertir archivos PDF a TIFF.

Sin embargo, hay bibliotecas comerciales que pueden hacer eso. jPDFImages es una biblioteca de Java 100% que puede convertir PDF a imágenes en formato TIFF, JPEG o PNG (y tal vez JBIG? no estoy seguro). También se puede hacer a la inversa, crear archivos PDF a partir de imágenes. Se inicia en $ 300 para un servidor.

Aquí está un buen artículo y clases contenedoras para usar GhostScript con C # .NET ... terminó usando esto en la producción

http://www.codeproject.com/KB/cs/GhostScriptUseWithCSharp.aspx

tengo una gran experiencia con iText (ahora, estoy usando la versión 5.0.6) 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;

}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top