2009-05-19 11 views
15

Tôi đã sử dụng ghostscript để làm pdf để tạo hình ảnh của một trang từ pdf. Bây giờ tôi cần để có thể kéo nhiều trang từ pdf và tạo ra một hình ảnh dọc dài.Ghostscript Multipage PDF sang PNG

Có một lý lẽ nào mà tôi bỏ lỡ cho phép điều này không?

Cho đến nay tôi đang sử dụng các đối số sau khi tôi gọi ra GhostScript:

string[] args ={ 
       "-q",      
       "-dQUIET",     
       "-dPARANOIDSAFER", // Run this command in safe mode 
       "-dBATCH", // Keep gs from going into interactive mode 
       "-dNOPAUSE", // Do not prompt and pause for each page 
       "-dNOPROMPT", // Disable prompts for user interaction       
       "-dFirstPage="+start, 
       "-dLastPage="+stop, 
       "-sDEVICE=png16m", 
       "-dTextAlphaBits=4", 
       "-dGraphicsAlphaBits=4", 
       "-r300x300",     

       // Set the input and output files 
       String.Format("-sOutputFile={0}", tempFile), 
       originalPdfFile 
      }; 

Trả lời

10

Tôi đã kết thúc việc thêm "% d" vào tham số "OutputFile" để nó tạo một tệp trên mỗi trang. Sau đó, tôi chỉ đọc lên tất cả các tập tin và khâu chúng lại với nhau trong # mã c tôi như vậy:

var images =pdf.GetPreview(1,8); //All of the individual images read in one per file 

using (Bitmap b = new Bitmap(images[0].Width, images.Sum(img=>img.Height))) { 
    using (var g = Graphics.FromImage(b)) { 
     for (int i = 0; i < images.Count; i++) { 
      g.DrawImageUnscaled(images[i], 0, images.Take(i).Sum(img=>img.Height)); 
     } 
    } 
    //Do Stuff 
} 
+0

Có thể thực hiện ở mức script/bash mà không cần kết nối với mã mức cao như C# ở trên. – Supra

+0

@Supra 'man gs' có phần in riêng từng trang bằng cách sử dụng' -sOutputFile = 'với'% d' – dat

1

Trước tiên kiểm tra các tùy chọn thiết bị đầu ra; nhưng tôi không nghĩ rằng có một lựa chọn cho điều đó.

Có lẽ bạn sẽ cần tự mình áp dụng, hoặc làm cho GhostScript làm điều đó (bạn sẽ phải viết một chương trình PostScript) hoặc ghép các trang kết quả bằng ImageMagick hoặc một cái gì đó tương tự.

Nếu bạn muốn thử tuyến đường PostScript (có khả năng là hiệu quả nhất), hãy kiểm tra các ví dụ N-up có trong gói GhostScript.

6

Nếu bạn có thể sử dụng ImageMagick, bạn có thể sử dụng một trong các lệnh tốt của nó:

montage -mode Concatenate -tile 1x -density 144 -type Grayscale input.pdf output.png 

nơi

  • -density 144 độ phân giải determins trong dpi, tăng nó nếu cần thiết, mặc định là 72
  • -type Grayscale sử dụng nó nếu PDF của bạn không có màu sắc, bạn sẽ tiết kiệm một số KB trong hình ảnh kết quả