2008-09-16 69 views
62

Tengo alrededor de 1000 archivos pdf y necesito convertirlos a archivos tiff de 300 ppp. ¿Cuál es la mejor manera de hacer esto? Si hay un SDK o algo así o una herramienta que puede ser guionizada, sería ideal.La mejor manera de convertir archivos pdf a archivos tiff

+0

Esta es la solución que utilizo: [PDF a Tiff usando pdftoppm de Xpdf y ppm2tiff y tiffcp de libtiff (opcional, sólo si multipágina)] [1] [1]: http://stackoverflow.com/a/12868254/551460 –

+0

cualquier solución final con co fuente completo de muestra? tal vez usando script powershell ... – Kiquenet

+0

@Kiquenet Publiqué una solución usando powershell. Véalo a continuación ... – gyurisc

Respuesta

49

Usa Imagemagick, o mejor aún, Ghostscript.

http://www.ibm.com/developerworks/library/l-graf2/#N101C2 tiene un ejemplo para ImageMagick:

convert foo.pdf pages-%03d.tiff 

http://www.asmail.be/msg0055376363.html tiene un ejemplo para ghostscript:

gs -q -dNOPAUSE -sDEVICE=tiffg4 -sOutputFile=a.tif foo.pdf -c quit 

Me gustaría instalar Ghostscript y leer la página del manual de gs para ver qué opciones exacta se necesitan y experimentar

+1

ghostscript funciona muy bien, por lo que entiendo imagemagick está reutilizando ghostscript para operaciones en pdf. ¿Es esto correcto? – gyurisc

+0

eso es lo que oigo, pero no soy un experto en las partes internas de ImageMagick;) – Aeon

+0

¿imagemagick maneja varias páginas pdf -> tiff correctamente? –

2

http://python.net/~gherman/projects/pdf2tiff/

También es posible usar pdf2ps, ps2image y luego convertir de la imagen resultante a TIFF con otras utilidades (recuerdo 'Paul' [Paul - Sin embargo, otro visor de imágenes (muestra PNG, TIFF, GIF, JPG , etc.])

2

responsabilidad: trabajo para el producto que estoy recomendando

Atalasoft cuenta con una biblioteca .NET que puede convert PDF to TIFF - somos socios de FOXIT, por lo que el procesamiento de PDF es muy bueno.

38

Usando GhostScript desde la línea de comandos, he utilizado la siguiente en el pasado:

en Windows:

gswin32c -dNOPAUSE -q -g300x300 -sDEVICE=tiffg4 -dBATCH -sOutputFile=output_file_name.tif input_file_name.pdf

en * nix:

gs -dNOPAUSE -q -g300x300 -sDEVICE=tiffg4 -dBATCH -sOutputFile=output_file_name.tif input_file_name.pdf

Para una gran cantidad de archivos, un simple script por lotes/shell podría usarse para convertir un número arbitrario de archivos ...

+3

+1. Comando útil. Pero mi figura de color sale en blanco y negro. ¿Alguna idea de por qué? –

+4

'-sDEVICE = tiffg4' es un modelo de compresión de fax en blanco y negro. Consulte: http://pages.cs.wisc.edu/~ghost/doc/AFPL/8.00/Devices.htm#TIFF – HairyFotr

+13

La mayoría de las veces desea convertir un pdf a imágenes TIFF de 300x300 ppp, no de 300x300. Por esta razón, reemplace el conmutador '-g' con' -r': 'gswin32c -dNOPAUSE -q -r300x300 ...' – berezovskyi

17

Escribí un pequeño script de powershell para ir a través de una estructura de directorio y convertir todos los archivos pdf a archivos tiff usando ghostscript. Aquí es mi guión:

$tool = 'C:\Program Files\gs\gs8.63\bin\gswin32c.exe' 
$pdfs = get-childitem . -recurse | where {$_.Extension -match "pdf"} 

foreach($pdf in $pdfs) 
{ 

    $tiff = $pdf.FullName.split('.')[0] + '.tiff' 
    if(test-path $tiff) 
    { 
     "tiff file already exists " + $tiff 
    } 
    else   
    { 
     'Processing ' + $pdf.Name   
     $param = "-sOutputFile=$tiff" 
     & $tool -q -dNOPAUSE -sDEVICE=tiffg4 $param -r300 $pdf.FullName -c quit 
    } 
} 
+0

¡Gracias! ¡Esto realmente me ayudó! – codekitty

+2

¡Después de 7 años, esto continúa siendo útil!Solo agregaría que una persona que no tiene experiencia en PowerShell, necesita: 1. Editar el valor de la herramienta $ para que coincida con la ruta y la versión de su sistema. 2. Abra PowerShell y cd en el directorio donde están almacenados los PDF. 3. Pegue el código en la ventana de PowerShell. Necesitaba presionar enter un par de veces para que se ejecutara. Gracias gyurisc –

6

usando pitón esto es lo que terminó con

import os 
    os.popen(' '.join([ 
         self._ghostscriptPath + 'gswin32c.exe', 
         '-q', 
         '-dNOPAUSE', 
         '-dBATCH', 
         '-r300', 
         '-sDEVICE=tiff12nc', 
         '-sPAPERSIZE=a4', 
         '-sOutputFile=%s %s' % (tifDest, pdfSource), 
         ])) 
+1

En general, querrá utilizar un subproceso para esto. os.popen se considera obsoleto. La sintaxis es casi la misma. – mlissner

8

1) Instalar GhostScript

2) Instale ImageMagick

3) Cree "Conv ert-to-TIFF.bat"(Windows XP, Vista, 7) y utilizar la siguiente línea:

for %%f in (%*) DO "C:\Program Files\ImageMagick-6.6.4-Q16\convert.exe" -density 300 -compress lzw %%f %%f.tiff 

arrastrar cualquier número de una sola página, los archivos PDF en este archivo se convertirlos a TIFF comprimido, a 300 DPI

+0

Se requiere GhostScript? Si solo instalo ImageMagick? – Kiquenet

3

. requiere Ghostscript & tiffcp Probado en Ubuntu

import os 

def pdf2tiff(source, destination): 
    idx = destination.rindex('.') 
    destination = destination[:idx] 
    args = [ 
    '-q', '-dNOPAUSE', '-dBATCH', 
    '-sDEVICE=tiffg4', 
    '-r600', '-sPAPERSIZE=a4', 
    '-sOutputFile=' + destination + '__%03d.tiff' 
    ] 
    gs_cmd = 'gs ' + ' '.join(args) +' '+ source 
    os.system(gs_cmd) 
    args = [destination + '__*.tiff', destination + '.tiff' ] 
    tiffcp_cmd = 'tiffcp ' + ' '.join(args) 
    os.system(tiffcp_cmd) 
    args = [destination + '__*.tiff'] 
    rm_cmd = 'rm ' + ' '.join(args) 
    os.system(rm_cmd)  
pdf2tiff('abc.pdf', 'abc.tiff') 
2

Tal vez también probar esto? PDF Focus

Esta biblioteca .Net le permite resolver el problema :)

Este código le ayudará (1000 Convertir archivos PDF a archivos TIFF de 300 dpi en C#):

SautinSoft.PdfFocus f = new SautinSoft.PdfFocus(); 

    string[] pdfFiles = Directory.GetFiles(@"d:\Folder with 1000 pdfs\", "*.pdf"); 
    string folderWithTiffs = @"d:\Folder with TIFFs\"; 

    foreach (string pdffile in pdfFiles) 
    { 
     f.OpenPdf(pdffile); 

     if (f.PageCount > 0) 
     { 
      //save all pages to tiff files with 300 dpi 
      f.ToImage(folderWithTiffs, Path.GetFileNameWithoutExtension(pdffile), System.Drawing.Imaging.ImageFormat.Tiff, 300); 
     } 
     f.ClosePdf(); 
    } 
3

El PDF Enfoque .Net puede hacerlo de tal manera:

1.PDF a TIFF

SautinSoft.PdfFocus f = new SautinSoft.PdfFocus();  

string pdfPath = @"c:\My.pdf"; 

string imageFolder = @"c:\images\"; 

f.OpenPdf(pdfPath); 

if (f.PageCount > 0) 
{ 
    //Save all PDF pages to image folder as tiff images, 200 dpi 
    int result = f.ToImage(imageFolder, "page",System.Drawing.Imaging.ImageFormat.Tiff, 200); 
} 

2.PDF de varias páginas TIFF

//Convert PDF file to Multipage TIFF file 

SautinSoft.PdfFocus f = new SautinSoft.PdfFocus(); 

string pdfPath = @"c:\Document.pdf"; 
string tiffPath = @"c:\Result.tiff"; 

f.OpenPdf(pdfPath); 

if (f.PageCount > 0) 
{ 
    f.ToMultipageTiff(tiffPath, 120) == 0) 
    { 
     System.Diagnostics.Process.Start(tiffPath); 
    } 
} 
+0

PdfFocus es gratis? – Kiquenet