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

t2a7ltrp  于 2023-10-18  发布在  Ruby
关注(0)|答案(7)|浏览(126)

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

r8uurelv

r8uurelv1#

将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

0pizxfdo

0pizxfdo2#

回答@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

dced5bon

dced5bon3#

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

bnlyeluc

bnlyeluc4#

PDF支持在ImageMagick中有一点缺陷-但它是目前为止Ruby的最佳操作系统方式。还有一个google Summer of Code项目用于纯Ruby PDF支持。
我读过一些关于在没有GUI的情况下使用OpenOffice来转换.doc文件的文章-但这充其量是复杂的。

ibrsph3r

ibrsph3r5#

正如前两张海报所说,ImageMagick可能是生成缩略图最简单的方法。
你可以执行类似这样的命令:

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

(The反引号告诉Ruby把它壳掉)。
如果你不想使用exec来完成转换,你可以使用RMagick gem来完成,但它可能需要更多的代码。

yeotifhr

yeotifhr6#

如果你不介意为Imgix付费,它也是handles PDFs。您可以从中获得快速CDN的所有好处。

xtupzzrd

xtupzzrd7#

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

相关问题