V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
fprint
V2EX  ›  问与答

有没有开源的,可以直接浏览 pdf 的网站程序?

  •  
  •   fprint · 2014-08-08 20:38:01 +08:00 · 6605 次点击
    这是一个创建于 3762 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有没有开源的,可以直接浏览pdf的网站程序?
    24 条回复    2014-08-11 01:42:05 +08:00
    fprint
        1
    fprint  
    OP
       2014-08-08 20:38:32 +08:00
    类似百度文库,但是要更简单点的。
    Mutoo
        2
    Mutoo  
       2014-08-08 20:45:15 +08:00   ❤️ 1
    fprint
        3
    fprint  
    OP
       2014-08-08 20:46:30 +08:00
    @Mutoo nice倒啊,我研究研究
    ytzong
        4
    ytzong  
       2014-08-08 20:47:57 +08:00   ❤️ 1
    ytzong
        5
    ytzong  
       2014-08-08 20:48:51 +08:00   ❤️ 1
    发完才发现 @Mutoo 发过了
    fprint
        6
    fprint  
    OP
       2014-08-08 20:52:17 +08:00
    @ytzong 也谢谢你
    14
        7
    14  
       2014-08-08 20:54:53 +08:00 via Android   ❤️ 1
    pdf.js效果和速度都太差了…
    尽量调用浏览器插件吧,Chrome内置
    14
        8
    14  
       2014-08-08 20:59:18 +08:00 via Android   ❤️ 1
    对了,调用Google Doc也不错,国内就算了
    O21
        9
    O21  
       2014-08-08 21:00:54 +08:00   ❤️ 1
    要看的话。。直接把pdf文件 拖入chrome浏览器就可以看。
    fprint
        10
    fprint  
    OP
       2014-08-08 21:03:32 +08:00
    @14 我是想做一个电子版的书库,pdf.js应该能满足吧?
    fprint
        11
    fprint  
    OP
       2014-08-08 21:04:23 +08:00
    @14 离线的条件下也能调用google doc?
    fprint
        12
    fprint  
    OP
       2014-08-08 21:05:45 +08:00
    @O21 不是为了浏览器看pdf,是想做一个简单的书库
    13k
        13
    13k  
       2014-08-08 21:21:08 +08:00
    微软的office已经支持地很好了,可以看看怎么调用(参加明道或者126邮箱的附件预览)
    phuslu
        14
    phuslu  
       2014-08-08 21:22:26 +08:00
    kisshere
        15
    kisshere  
       2014-08-08 21:22:56 +08:00
    @Mutoo 用chrome能行,用IE不行,而chrome能直接打开pdf,那还需要个P的插件啊
    thonatos
        16
    thonatos  
       2014-08-08 22:19:22 +08:00   ❤️ 4
    这东西我帮项目组弄过一套,使用方案有好几种,大概给你讲下:

    PDF展示:
    =========

    1.pdf.js

    好处是可以直接在线的浏览和编辑,问题在于浏览器的兼容问题,有些浏览器上面不正常,所以这个方案你要考虑清楚以后再考虑。

    2.FlexPaper

    这个方案是使用java+flash,相对来说,就目前而言,兼容性比较好,毕竟flash还是主流。

    3.java2png

    之所以用这个,是因为学校要求pdf不能被修改,所以采用了org.apache.pdfbox来转换pdf为图片,然后将图片加载到网站,这个方案,个人认为还是不错的,因为你可以通过一些方法实现在html中设置背景+文字层,但是不足显然存在:pdf中的图片不太好处理,仅仅是文字的话问题不大,所以说这个不是一个成熟的做法。

    4.openoffice

    这个方案,我没事测试过,但是据我一做开发的朋友说,是一套很成熟的解决方案。你可以找找相关的资源。

    PDF生成:
    =========

    既然说了,顺便就给你也讲下当时做的生成pdf的吧,这个解决方法就很多了,也就不详细的说要用什么的,我当时是用了html转cavans,然后通过cavans生成base64的png,接着用png生成pdf,这里也可以用pdfbox做的吧(由于这部分我是用nodewebkit做的pc客户端,所以是用nodejs来搞的~)

    希望对你有用吧,鉴于项目组的内容,源码不方便分享,但是相信思路更重要了~
    fprint
        17
    fprint  
    OP
       2014-08-08 22:36:23 +08:00
    @thonatos 辛苦了,写了这么多,能提供思路已经是最大的恩惠了。
    thonatos
        18
    thonatos  
       2014-08-08 22:37:49 +08:00
    @fprint 呵呵,辛苦什么,写代码,最大的乐趣不就是可以帮助别人嘛,你选择一个自己方便的方案吧~
    fprint
        19
    fprint  
    OP
       2014-08-08 22:39:58 +08:00
    感谢各位大大的回复,我已经用上了pdf.js,初步看起来能满足我需要,试着加载了一个6M大小的文字pdf,六百多页吧,时间大概需要1分钟,怎么能更快加载呢?
    tywtyw2002
        20
    tywtyw2002  
       2014-08-09 02:17:34 +08:00   ❤️ 1
    @thonatos pdf.js感觉体验不是很好,经常出现各种各样的bug。
    chrome的内置pdf插件好像也有一些问题,有的时候会把扫描的白色页面显示成粉红色。


    @fprint 你试试把pdf分开,一次只加载一小部分,比如10页一次。pdf分页有现成的源码。
    thonatos
        21
    thonatos  
       2014-08-10 00:48:22 +08:00   ❤️ 1
    @tywtyw2002 嗯,是的,pdf.js稳定性不太好,在ff下面还算可以相对稳定的运行,但是在其他浏览器上面,假死或者无法载入的情况多不胜数,所以我最后放弃了pdf.js转而采用了其他的方法,关键的一个问题在于,pdf.js在FF上,基本相当于FF是一个PDF客户端了,在其他浏览器,一些数据是调用的,然后就会出现无法加载什么的,要是真的要用,建议考虑下openoffice吧
    fprint
        22
    fprint  
    OP
       2014-08-11 01:27:06 +08:00
    补充一个可以参考的链接: https://ruby-china.org/topics/17309?page=2#replies
    fprint
        23
    fprint  
    OP
       2014-08-11 01:39:29 +08:00
    @thonatos openoffice是实现把文档转pdf吧?能实现网页pdf显示么?
    fprint
        24
    fprint  
    OP
       2014-08-11 01:42:05 +08:00
    pdf转换就不用考虑了,因为数量不多,可以先在电脑上转成pdf,再上传。主要是pdf显示。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1075 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 19:50 · PVG 03:50 · LAX 11:50 · JFK 14:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.