你们知道怎么合并PDF并根据文件名生成目录/书签吗

  • t
    tiens
    java用itext写一个,代码应该不超过50行。
  • a
    anetdog
    Adobe 自带的合并,合并出来就自动安装文件名生成书签了 iOS fly ~
  • w
    wsyx87930
    不可能的,我一开始也试了下用python直接拼pdf,结果看文件体积是都拼起来了,但是打开只显示一个文档的内容
    百度了一下貌似是PDF文件头尾都有文档信息,还得修改这玩意才能让它最后完全显示。。

    ================================================================
    看了一下原来这个itext也是一个pdf库啊我错了
  • w
    wsyx87930
    只装了地板推荐的Sumatra和pdf xchange view
    实在不行只能向adobe投降了。。
  • a
    anetdog
    sumatra只看图很好用,小巧快速,标签页方式切换也方便,编辑功能太少了,比如单独旋转某一页的功能就没有,旋转就整个PDF一起转…… iOS fly ~
  • t
    tiens
    合并和书签我都用itext写过,不仅合并,还有删除每个文档的第一页。java的操作是相当直观的。不知pypdf的对象模型是什么样的,回头也可以试试。
  • t
    tilleul
    坛子里以前推荐过的pdfsam可以做到,很简单。
  • s
    storespace0930
    pdf补丁丁这个软件试试
  • w
    wsyx87930
    搞定了,感谢!
    白折腾一天
  • t
    tiens
    回复1#wsyx87930


    吃完晚饭试了一下PyPDF2:
    import PyPDF2

    def PDFmerge(pdfs,output):

    pdfMerger = PyPDF2.PdfFileMerger(strict=False)

    for pdf in pdfs:
    pdfMerger.append(PyPDF2.PdfFileReader(pdf))

    with open(output,'wb') as f:
    pdfMerger.write(f)

    def main():
    pdfs = ['1.pdf','2.pdf']

    output = 'combined_example.pdf'

    PDFmerge(pdfs,output)
    if __name__ == '__main__':
    main()



    这个代码调通了合并,书签还没加
  • j
    jmhqlw
    我一般都是Excel表格加老马的软件自己做书签目录
  • t
    tiens
    这个代码合并和书签都可以了:

    import PyPDF2

    def PDFmerge(pdfs,output):

    pdfMerger = PyPDF2.PdfFileMerger(strict=False)

    count = 0

    for pdf in pdfs:
    s = PyPDF2.PdfFileReader(pdf)
    pdfMerger.append(s)
    pdfMerger.addBookmark(pdf,count, None)
    count = count + s.numPages

    with open(output,'wb') as f:
    pdfMerger.write(f)

    def main():
    pdfs = ['1.pdf','2.pdf']

    output = 'combined_example.pdf'

    PDFmerge(pdfs,output)
    if __name__ == '__main__':
    main()
  • w
    wsyx87930
    我写的跟这大差不差,问题就是会报错
    刚直接复制你的代码去跑了一下,提示:


    待合并的PDF:
    1.pdf(271.78 KB)
    2.pdf(236.06 KB)
    用你的代码合并出来的PDF:
    combined_example.pdf(462.21 KB)
  • w
    wc2003
    java有个pdfbox
  • t
    tiens
    查了一下,网上也有反映这个问题的,最后是修改源码解决的。。。
    https://github.com/mstamy2/PyPDF2/issues/438

    看来是PyPDF2处理中文的固有毛病了,我试验的两个pdf不包含中文,就没出这种事
    还是推荐一下java的iText,我试了一下从前的代码,合并这两个中文pdf没问题