2008-12-10 11 views
5

J'ai besoin d'une bibliothèque Java pour convertir des fichiers PDF en images TIFF. Les fichiers PDF sont des télécopies, et je vais convertir au format TIFF afin que je puisse ensuite faire une reconnaissance de code à barres sur l'image. Quelqu'un peut-il recommander une bonne bibliothèque open source libre pour la conversion de PDF en TIFF?Une bonne bibliothèque pour convertir PDF en TIFF?

Répondre

5

Disclaimer: Je travaille pour Atalasoft

We have an SDK that can convert PDF to TIFF. Le rendu est alimenté par le logiciel Foxit qui rend un moteur de rendu PDF très puissant et efficace.

+0

Le lien renvoie une erreur 404, veuillez mettre à jour votre réponse. Merci –

+1

Terminé - Rechercher le module PDF rasterizer à DotImage Document Imaging –

5

Je ne peux pas recommander une bibliothèque de code, mais il est facile d'utiliser GhostScript pour convertir des fichiers PDF en formats bitmap. Je l'ai personnellement utilisé ci-dessous le script (qui utilise également les utilties netpbm) pour convertir la première page d'un PDF dans une vignette JPEG:

#!/bin/sh 

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

Vous pouvez utiliser -sDEVICE=tiff... pour obtenir une sortie TIFF directement dans différents TIFF sous-formats de GhostScript.

+0

J'ai déjà utilisé une solution ghostscript, mais elle est simplement trop lente pour le volume que j'ai besoin de gérer. – RedFilter

1

Peut-être qu'il n'est pas nécessaire de convertir le PDF en format TIFF. Le fax sera très probablement une image intégrée dans le PDF, vous pouvez donc simplement extraire ces images à nouveau. Cela devrait être possible avec la bibliothèque iText déjà mentionnée.

Je ne sais pas si c'est plus facile que l'autre approche.

0

Aucun Itext ne peut convertir les PDF en Tiff.

Cependant, il existe des bibliothèques commerciales qui peuvent le faire. jPDFImages est une bibliothèque 100% Java qui peut convertir des PDF en images au format TIFF, JPEG ou PNG (et peut-être JBIG? Je ne suis pas sûr). Il peut aussi faire l'inverse, créer des PDF à partir d'images. Cela commence à 300 $ pour un serveur.

3

nous ici PDF aussi faire de conversion -> G3 tiff avec résolution haute et basse. De mon expérience le meilleur outil que vous pouvez avoir est Adobe PDF SDK, le seul problème avec son prix fou. Donc nous ne l'utilisons pas. Ce qui fonctionne bien pour nous est ghostscript, les dernières versions sont assez robustes et rendent correctement la majorité des fichiers PDF. Et nous en avons plusieurs qui arrivent pendant la journée. En production, la conversion est effectuée en utilisant le fichier gsdll32.dll; mais si vous voulez l'essayer utilisez la ligne de commande suivante:

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

il convertit votre PDF en haute résolution G3 TIFF. et le code prefix.ps est ici:

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

Une autre chose à propos de ce sdk est qu'il est open source; vous obtenez à la fois le code source c et ps (postscript) pour cela. Aussi, si vous allez avec un autre outil, vérifiez quel type de moteur ils ont pour alimenter le rendu pdf, il peut arriver qu'ils utilisent gs pour cela; comme par exemple LeadTools.

espérons que cette aide, ce qui

-1

J'ai une grande expérience avec iText (maintenant, j'utilise 5.0.Version 6) et c'est le code pour tiff convertion en 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

C'est l'inverse. L'OP a déjà le PDF et veut le transformer en un TIFF. – monzonj

+0

PDF à Tiff nécessaire! – Blundell