2008-09-16 61 views
62

Tôi có khoảng 1000 tệp pdf và tôi cần chuyển đổi chúng thành tệp tiff 300 dpi. Cách tốt nhất để làm việc này là gì? Nếu có một SDK hoặc một cái gì đó hoặc một công cụ có thể được kịch bản đó sẽ là lý tưởng.Cách tốt nhất để chuyển đổi tệp pdf thành tệp tiff

+0

Đây là giải pháp mà tôi sử dụng: [Pdf to Tiff sử dụng pdftoppm xpdf và ppm2tiff và tiffcp LibTIFF (không bắt buộc, chỉ khi multipage)] [1] [1]: http://stackoverflow.com/a/12868254/551460 –

+0

bất kỳ giải pháp cuối cùng nào có nguồn đầy đủ de mẫu? có thể sử dụng kịch bản PowerShell .. – Kiquenet

+0

@Kiquenet Tôi đăng một giải pháp sử dụng PowerShell. Xem bên dưới ... – gyurisc

Trả lời

49

Sử dụng Imagemagick, hoặc tốt hơn, Ghostscript.

http://www.ibm.com/developerworks/library/l-graf2/#N101C2 có một ví dụ cho ImageMagick:

convert foo.pdf pages-%03d.tiff 

http://www.asmail.be/msg0055376363.html có một ví dụ cho GhostScript:

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

tôi sẽ cài đặt GhostScript và đọc man page của gs để xem những tùy chọn chính xác là cần thiết và thử nghiệm.

+1

ghostscript hoạt động thực sự tốt, theo như tôi hiểu imagemagick đang sử dụng ghostscript cho các hoạt động pdf. Điều này có đúng không? – gyurisc

+0

đó là những gì tôi nghe, nhưng tôi không phải là một chuyên gia về nội dung ImageMagick;) – Aeon

+0

hiện imagemagick xử lý nhiều pdf -> tiff đúng cách? –

2

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

Bạn cũng có thể sử dụng pdf2ps, ps2image và sau đó chuyển đổi từ hình ảnh kết quả để tiff với các tiện ích khác (tôi nhớ 'paul' [paul - Tuy nhiên, một trình xem ảnh (hiển thị PNG, TIFF, GIF, JPG vv])

2

Disclaimer: làm việc cho sản phẩm tôi đang giới thiệu

Atalasoft có một thư viện .NET rằng có thể convert PDF to TIFF - chúng tôi là đối tác của FOXIT, do đó việc kết xuất PDF rất tốt.

38

Sử dụng GhostScript từ dòng lệnh, tôi đã sử dụng những điều sau đây trong quá khứ:

trên Windows:

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

trên * nix:

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

Đối với một số lượng lớn các tệp, một tập lệnh batch/shell đơn giản có thể được sử dụng để chuyển đổi một số lượng tệp tùy ý ...

+3

+1. Lệnh hữu ích. Nhưng màu sắc của tôi là xuất hiện trong màu đen và trắng. Bất kỳ ý tưởng tại sao? –

+4

'-sDEVICE = tiffg4' là mô hình nén fax đen trắng. Xem: http://pages.cs.wisc.edu/~ghost/doc/AFPL/8.00/Devices.htm#TIFF – HairyFotr

+13

Hầu hết thời gian bạn muốn chuyển đổi hình ảnh pdf sang TIFF có kích thước 300x300 dpi, không phải kích thước 300x300. Vì lý do này, thay thế '-g' bằng' -r': 'gswin32c -dNOPAUSE -q -r300x300 ...' – berezovskyi

17

Tôi đã viết một tập lệnh PowerShell nhỏ để đi qua một cấu trúc thư mục và chuyển đổi tất cả các tệp pdf thành tệp tiff bằng ghostscript. Đây là kịch bản của tôi:

$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

Cảm ơn !! điều này thực sự đã giúp tôi! – codekitty

+2

Sau 7 năm, điều này tiếp tục hữu ích!Tôi sẽ chỉ thêm rằng một người không có kinh nghiệm PowerShell, bạn cần phải: 1. Chỉnh sửa giá trị công cụ $ để phù hợp với đường dẫn và phiên bản trên hệ thống của bạn. 2. Mở PowerShell và cd vào thư mục chứa các tệp PDF. 3. Dán mã vào cửa sổ PowerShell. Tôi cần nhấn enter vài lần sau đó để nó chạy. Cảm ơn gyurisc –

6

sử dụng python đây là những gì tôi đã kết thúc với

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

Nói chung bạn sẽ muốn sử dụng tiến trình con cho việc này. os.popen được coi là không được chấp nhận. Cú pháp gần như giống nhau. – mlissner

8

1) Cài đặt GhostScript

2) Cài đặt ImageMagick

3) Tạo "Ch.đổi ert-to-TIFF.dơi"(Windows XP, Vista, 7) và sử dụng các dòng sau:

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

Kéo bất kỳ số lượng single-page file PDF vào tập tin này sẽ chuyển đổi chúng sang TIFFs nén, ở 300 DPI

+0

GhostScript là bắt buộc? Nếu tôi chỉ cài đặt ImageMagick? – Kiquenet

3

. cần GhostScript & tiffcp Tested trong 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

lẽ cũng thử loại này? PDF Focus

thư viện Net này cho phép bạn giải quyết vấn đề :)

Mã này sẽ giúp (Convert 1000 file PDF sang file TIFF 300 dpi trong 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

PDF Focus Net có thể làm điều đó theo cách như vậy:

1.PDF sang 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 sang nhiều trang-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 là miễn phí? – Kiquenet

Các vấn đề liên quan