0

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

这里的主要目标是像普通图像一样显示 pdf。该网站的用户上传一个pdf文件,该文件使用PyPDF在他的不同页面中分离,然后每个页面都应该显示在网页上。因此,每个页面都作为不同的图像。

这将是理想的:

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

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

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

有没有更好的方法来完成这个?如果存在,我更喜欢不依赖服务器的方法!

4

3 回答 3

2

不是客户端,而是...

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

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

我认为你真的很难做到这一点。服务器端可能更强大,可以更快地创建质量更好的图像,并且具有更多的定制性。

于 2013-03-18T20:44:18.020 回答
1

convert 没问题,但我用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
于 2014-04-22T07:20:14.403 回答
1

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

请注意此方法使用 PHP。

于 2013-12-23T20:31:05.413 回答