在HTML中将PDF显示为图像

时间:2013-03-18 20:25:48

标签: python html pdf

使用HTML在浏览器中显示pdf的最佳方法是什么?

这里的主要目标是将pdf显示为正常图像。网站的用户上传pdf文件,该文件使用PyPDF在他的不同页面中分离,然后每个页面都应显示在网页上。所以每个页面都是不同的图像。

这是理想的:

<img src="test_page1.pdf">
<img src="test_page2.pdf">

我一直试图通过使用ImageMagick(Python)将我的pdf转换为图像,但这会导致一些困难:

  • 有时会崩溃
  • 图像质量严重下降
  • 尺寸增加

有没有更好的方法来完成这个?如果存在,我宁愿使用非服务器依赖方法!

3 个答案:

答案 0 :(得分:1)

不是客户端,但是......

exec("convert sample.pdf sample.jpeg")

使用ImageMagickhttp://www.imagemagick.org/script/index.php / http://www.imagemagick.org/script/api.php#python

我认为你真的很难做到这个客户端。服务器端可能更强大,可以更快地创建更高质量的图像并进行更多自定义。

答案 1 :(得分:1)

尝试一下http://view.samurajdata.se/。您可以使用此工具在HTML中将PDF显示为图像。它的开源和易于使用。

请注意,此方法使用PHP。

答案 2 :(得分:1)

转换是可以的,但我使用evince-thumbnailer得到了最好的结果。对于同等质量(YMMV),此速度提高约8倍。

另一方面,虽然evince-thumbnailer没有ghostscript依赖,但 引入了其他几个与gnome相关的依赖项,如glib和gtk。

您还可以使用pdftops等poppler工具之一。这些比转换快得多,并且几乎没有依赖性,但质量不会相同。

这里有一些后代的命令行.. 我已经进行了全页300dpi测试并添加了结果。 注意我使用非常大的输出文件来放大缩略图鼠标。您也可以使用较小的jpg来获得更快的结果。

# This produces perfect png at 2480 pixels width.
# Takes averagely long (45sec).
# 2480 is A4 pixel width at 300dpi
evince-thumbnailer -s 2480 -l input.pdf /tmp/output.png
convert /tmp/output.png -quality 85% output.jpg

# This renders perfect jpg at 2400 pixels width.
# Takes extremely long. (6m)
# Quality is comparable
convert -density 300x300 input.pdf -resize 2400x -units PixelsPerInch \
    -quality 85% output.jpg

# This uses poppler to convert to ps and then converts to jpg.
# Takes averagely long (45sec)
# Does not compete quality-wise.
pdftops -l 1 -r 2400 -paper A4 input.pdf /tmp/output.ps
convert /tmp/output.ps output.jpg
相关问题