将一个 .doc 或 .pdf 文件转换成图片,并在 Ruby 中显示缩略图?

11

如何在Ruby中将.doc或.pdf转换为图像并显示缩略图?
有没有人知道如何在Ruby(或C、Python等)中生成文档缩略图?

7个回答

22

将PDF转换为PNG的一个简单的RMagick示例:

require 'RMagick'
pdf = Magick::ImageList.new("doc.pdf")
thumb = pdf.scale(300, 300)
thumb.write "doc.png"

要将 MS Word 文档转换,这并不容易。您最好的选择可能是在生成缩略图之前先将其转换为 PDF。生成 PDF 的选项严重依赖于您运行的操作系统。其中一个选项是使用 OpenOffice 和 Python Open Document Converter。还有一些在线转换服务可供尝试,包括 http://Zamzar.com


它可行。但它需要很长时间。我可以只读取pdf的第一页并获取其图像版本吗? - aisensiy

4

以下是回答@aisensiy评论的示例代码:

require 'rmagick'
pdf_path = "/path/to/interesting/file.pdf"
page_index_path = pdf_path + "[0]" # first page in PDF
pdf_page = Magick::Image.read( page_index_path ).first # first item in Magick::ImageList
pdf_page.write( "/tmp/indexed-page.png" ) # implicit conversion based on file extension

根据回答另一个问题中的路径提示:

https://dev59.com/IU7Sa4cB1Zd3GeqP1zop#6369524


0

如果您不介意支付Imgix的费用,它也可以处理PDF文件。您将获得快速CDN的所有好处。


0
不确定任何开源库是否支持 .doc,但 ImageMagick(和 RMagick 宝石)可以编译为支持 pdf(我认为默认情况下是支持的)。

0

ImageMagick中的PDF支持有些小问题,但它是Ruby最好的操作系统方式。此外,还有一个Google Code项目专门用于纯Ruby PDF支持。

我读过一些关于使用没有GUI的OpenOffice来转换.doc文件的文章,但这最多也只是一种复杂的方法。


0

正如前两位回答者所说,ImageMagick可能是生成缩略图最简单的方法。

您可以执行类似以下的命令:

´convert -size 300x300 doc.pdf doc.png´

(反引号告诉 Ruby 将其 shell 出去)。

如果您不想使用 exec 进行转换,可以使用 RMagick gem 为您执行操作,但可能需要更多的代码。


0

LibreOffice帮助我将.doc、.docx或.rtf转换为图片。 在服务器上安装LibreOffice:

sudo apt install libreoffice-common
sudo apt install libreoffice-writer

在您的终端中进行测试:

soffice --draw --convert-to pdf some_file.doc && convert -density 288x288 -units pixelsperinch some_file.pdf -background white -alpha background -alpha off -quality 100 -resize 25% img_name.png

如你所见,这将首先将文件转换为PDF,然后再转换为图像。 你可能需要编辑ImageMagic的策略:
# open ImageMagic policy
sudo nano /etc/ImageMagick-6/policy.xml
# and add this line
<policy domain="coder" rights="read|write" pattern="PDF" />

还有另一种工具可以将PDF转换为图片 - pdftoppm
pdftoppm some_file.pdf img_name -png

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接