将 .doc 或 .pdf 转换为图像并在 Ruby 中显示缩略图?

问题描述 投票:0回答:7

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

ruby pdf doc
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


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://stackoverflow.com/a/6369524/765063


0
投票

不确定任何开源库中是否支持 .doc,但 ImageMagick(和 RMagick gem)可以使用 pdf 支持进行编译(我认为默认情况下是打开的)


0
投票

ImageMagick 中的 PDF 支持有点问题 - 但它是迄今为止 ruby 的最佳操作系统方式。还有一个 google Summer of Code 项目,用于纯 Ruby PDF 支持。

我读过有关在没有 GUI 的情况下使用 OpenOffice 来转换 .doc 文件的内容 - 但充其量它会很复杂。


0
投票

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

你可以执行类似的命令:

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

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

如果您不想使用 exec 进行转换,您可以使用 RMagick gem 来为您完成转换,但这可能需要更多代码。


0
投票

如果您不介意购买 Imgix,它也可以处理 PDF。您可以通过它获得快速 CDN 的所有好处。


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
© www.soinside.com 2019 - 2024. All rights reserved.