2011-02-03 2 views
32

Tôi muốn chuyển đổi các trang PDF thành hình ảnh (PNG, JPEG/JPG hoặc GIF). Tôi muốn chúng ở kích thước toàn trang.PDF sang hình ảnh bằng cách sử dụng Java

Làm cách nào để thực hiện điều này bằng Java? Những thư viện nào có sẵn để đạt được điều này?

+1

Ồ, tôi sẽ rất thú vị khi biết. Nó tốt nếu có một tùy chọn thay đổi kích thước là tốt. – Nishant

+2

http://stackoverflow.com/questions/356550/a-good-library-for-converting-pdf-to-tiff –

+0

@Nantant: khi bạn nhận được đối tượng Hình ảnh, bạn được tự do chuyển đổi nó;) – Maxym

Trả lời

9

Bạn sẽ cần trình kết xuất PDF. Có một số ít hay nhiều sản phẩm tốt trên thị trường (ICEPdf, pdfrenderer), nhưng không có, bạn sẽ phải dựa vào các công cụ bên ngoài. Các trình kết xuất PDF miễn phí cũng không thể hiển thị các phông chữ được nhúng và do đó sẽ chỉ tốt cho việc tạo hình thu nhỏ (những gì bạn muốn).

Công cụ bên ngoài yêu thích của tôi là Ghostscript, công cụ này có thể chuyển đổi PDF sang hình ảnh bằng một lời gọi dòng lệnh duy nhất.

này chuyển Postscript file sang bmp cho chúng ta, cũng giống như một hướng dẫn để sửa đổi cho các nhu cầu của bạn (và PDF?) (Biết bạn cần env VAR cho gs làm việc!):

pushd 
setlocal 

Set BIN_DIR=C:\Program Files\IKOffice_ACME\bin 
Set GS=C:\Program Files\IKOffice_ACME\gs 
Set GS_DLL=%GS%\gs8.54\bin\gsdll32.dll 
Set GS_LIB=%GS%\gs8.54\lib;%GS%\gs8.54\Resource;%GS%\fonts 
Set Path=%Path%;%GS%\gs8.54\bin 
Set Path=%Path%;%GS%\gs8.54\lib 

call "%GS%\gs8.54\bin\gswin32c.exe" -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE#bmpmono -r600x600 -sOutputFile#%2 -f %1 

endlocal 
popd 
+0

Xin chào Daniel, cảm ơn bạn đã trả lời nhanh, Tôi có thể tự động hóa Ghostscript bằng Java không? Nếu có thể làm thế nào tôi có thể làm điều đó? Nơi tôi có thể tìm thấy hướng dẫn Ghostscript rất tốt, Cảm ơn một lần nữa! –

+0

Có thể xem Ghost4J http://ghost4j.sourceforge.net/coreapisamples.html – anergy

+0

Không hoàn toàn đúng khi "trình kết xuất miễn phí không thể thu nhỏ lại các phông chữ được nhúng" - ít nhất jPodRenderer làm như vậy ... – mtraut

0

Nếu GPL là tốt bạn có thể có một cái nhìn bổ sung tại jPodRenderer (SourceForge)

29

Trong Ghost4J thư viện (http://ghost4j.sourceforge.net), kể từ phiên bản 0.4.0 bạn có thể sử dụng một SimpleRenderer để thực hiện công việc với vài dòng mã :

  1. tải PDF hoặc file PS (sử dụng PSDocument lớp cho rằng):

    PDFDocument document = new PDFDocument(); 
        document.load(new File("input.pdf")); 
    
  2. Tạo các renderer

    SimpleRenderer renderer = new SimpleRenderer(); 
    
        // set resolution (in DPI) 
        renderer.setResolution(300); 
    
  3. Render

    List<Image> images = renderer.render(document); 
    

Sau đó, bạn có thể làm những gì bạn muốn với các đối tượng hình ảnh của bạn, ví dụ, bạn có thể viết chúng như PNG như thế này:

  for (int i = 0; i < images.size(); i++) { 
       ImageIO.write((RenderedImage) images.get(i), "png", new File((i + 1) + ".png")); 
      } 

Lưu ý: Ghost4J sử dụng API Ghostscript C gốc để bạn cần cài đặt Ghostscript trên hộp của mình.

Tôi hy vọng nó sẽ giúp bạn :)

+0

Hey tôi nhận được lỗi nói "Ngoại lệ trong chủ đề" chính "java.lang.UnsatisfiedLinkError: Không thể tải thư viện 'gsdll32': Không tìm thấy mô-đun được chỉ định. " Tôi đã cài đặt phiên bản Ghostscript mới nhất. Xin vui lòng giúp đỡ: ( –

+1

Điều này có nghĩa là thư viện Ghostscript không được tìm thấy ... Bạn đang làm việc trên hệ điều hành nào? Đảm bảo rằng .dll/.so nằm trên đường dẫn thư viện hệ thống – zippy1978

+0

Đơn giản chỉ cần cài đặt Ghostscript không hoạt động cho tôi. này bu thả gsdll32.dll vào thư mục Project của Eclipse – MyTitle

21

Apache PDF Box có thể chuyển đổi file PDF sang jpg, bmp, WBMP, png và gif.

Thư viện thậm chí còn có tiện ích dòng lệnh gọi là PDFToImage để thực hiện việc này.

Nếu bạn tải xuống mã nguồn và xem lớp PDFToImage, bạn sẽ có thể tìm hiểu cách sử dụng Hộp PDF để chuyển đổi PDF sang hình ảnh từ mã Java của riêng bạn.

+0

nó hơi không phù hợp Nếu có một "ColorPattern" (không phải là một hình ảnh nhưng tương tự .. khó hiểu) trong PDF nguồn, nó sẽ không được sao chép sang desti hình ảnh quốc gia. http://stackoverflow.com/questions/28589477/pdfbox-pdf-to-image-losing-qr-code-colorspace-pattern-doesnt-provide-a-non-str?noredirect=1#comment45487987_28589477 – mmcrae

+0

nhưng có thể có cải tiến trong phiên bản 2.x của PDFBox! (hy vọng) – mmcrae

+1

Xem https://pdfbox.apache.org/2.0/migration.html trong PDF Rendering để biết chi tiết về cách thực hiện việc này trong PDFBox 2.0.0 – gordon613

1

jPDFImages không miễn phí nhưng là thư viện thương mại chuyển đổi các trang PDF thành hình ảnh ở định dạng JPEG, TIFF hoặc PNG. Kích thước hình ảnh đầu ra có thể tùy chỉnh.

+0

Bạn có liên kết với sản phẩm đó không? Hãy chắc chắn đọc faq về quảng cáo http://stackoverflow.com/faq#promotion – Leigh