[英]How to resize images in Ruby (Rails) without using RMagick?
[英]How to convert PDF files to images using RMagick and Ruby
我想獲取一個 PDF 文件並將其轉換為圖像,每個 PDF 頁面都成為一個單獨的圖像。
“ 將 .doc 或 .pdf 轉換為圖像並在 Ruby 中顯示縮略圖? ”是一個類似的帖子,但它沒有介紹如何為每個頁面制作單獨的圖像。
使用 RMagick 本身,您可以為不同的頁面創建圖像:
require 'RMagick'
pdf_file_name = "test.pdf"
im = Magick::Image.read(pdf_file_name)
上面的代碼會給你一個數組arr[]
,它會有一個對應頁面的條目。 如果要生成第五頁的 JPEG 圖像,請執行以下操作:
im[4].write(pdf_file_name + ".jpg")
但這會加載整個 PDF,因此速度可能會很慢。
或者,如果您想創建第五頁的圖像並且不想加載完整的 PDF 文件:
require 'RMagick'
pdf_file_name = "test.pdf[5]"
im = Magick::Image.read(pdf_file_name)
im[0].write(pdf_file_name + ".jpg")
ImageMagick可以用 PDF 做到這一點。 想必RMagick也可以做到,但我不熟悉它。
您鏈接到的帖子中的代碼:
require 'RMagick'
pdf = Magick::ImageList.new("doc.pdf")
pdf
是一個ImageList
對象,根據文檔將其許多方法委托給Array
。 您應該能夠遍歷pdf
和呼叫write
到單獨的圖像寫入文件。
由於我找不到在 RMagick 中逐頁處理 PDF 的方法,我建議首先使用pdftk 的burst
命令將 PDF 拆分為頁面,然后在 RMagick 中處理各個頁面。 這可能不如多合一解決方案的性能,但不幸的是,沒有多合一解決方案出現。
還有用於 Ruby 的PDF::Toolkit可以連接到 pdftk,但我從未使用過它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.