`
mooyinn
  • 浏览: 2166 次
文章分类
社区版块
存档分类
最新评论

pdf在线合并上线啦

    博客分类:
  • java
阅读更多

pdf merge online 在线pdf合并上线啦 做这个网站的起源是之前在开一个网络课程,每节课都有一个pdf课件。想合并成一个看起来方便些, 于是网上找一些在线的合并pdf工具,没有特别好用的,只好自己撸一个 戳这里试用http://pdfmerge.enilu.cn

刚开始用python做了一个,网上很多python合并pdf的例子,整理后下面这个可用


# -*- coding:utf-8*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

import fnmatch
import os
import os.path
from pyPdf import PdfFileReader,PdfFileWriter
import time
time1=time.time()


# 使用os模块walk函数,搜索出某目录下的全部pdf文件
######################获取同一个文件夹下的所有PDF文件名#######################
def getFileName(filepath):
    file_list = []
    for n in range(1,10):
        file_list.append(str(n)+'.pdf')

    return file_list


##########################合并同一个文件夹下所有PDF文件########################
def MergePDF(filepath,outfile):
    output=PdfFileWriter()
    outputPages=0
    pdf_fileName=getFileName(filepath)
    print pdf_fileName
    for each in pdf_fileName:
        # 读取源pdf文件
        input = PdfFileReader(file('/root/test/pdf/'+each, "rb"))

        # 如果pdf文件已经加密,必须首先解密才能使用pyPdf
        if input.isEncrypted == True:
            input.decrypt("map")

        # 获得源pdf文件中页面总数
        pageCount = input.getNumPages()
        outputPages += pageCount
        print pageCount

        # 分别将page添加到输出output中
        for iPage in range(0, pageCount):
            output.addPage(input.getPage(iPage))


    print "All Pages Number:"+str(outputPages)
    # 最后写pdf文件
    outputStream=file(filepath+outfile,"wb")
    output.write(outputStream)
    outputStream.close()
    print "finished"



if __name__ == '__main__':
    file_dir = r'/root/test/pdf/'
    out=u"out.pdf"
    MergePDF(file_dir,out)
    time2 = time.time()
    print u'总共耗时:' + str(time2 - time1) + 's'


但是我想要的是一个在线的pdf合并工具,所以用spring boot搭建了一个,既然用了java,就不用python做pdf合并了。 java方面itext对pdf的操作支持很丰富,自然少不了合并pdf,下面是合并pdf的核心代码

public class PdfService {
    public static void main(String[] args) {
        Map<Integer,String> files = new HashMap();
        files.put(0,"e:\\1.pdf");
        files.put(1, "e:\\2.pdf");
        files.put(2, "e:\\3.pdf" );
        String savepath = "e:\\temp.pdf";

        new PdfService().mergePdfFiles(files, savepath);
    }

    public  boolean mergePdfFiles(Map<Integer,String> files, String newfile) {
        boolean retValue = false;
        Document document = null;
        try {
            document = new Document(new PdfReader(files.get(0)).getPageSize(1));
            PdfCopy copy = new PdfCopy(document, new FileOutputStream(newfile));
            document.open();
            for (int i = 0; i < files.size(); i++) {
                PdfReader reader = new PdfReader(files.get(i));
                int n = reader.getNumberOfPages();
                for (int j = 1; j <= n; j++) {
                    document.newPage();
                    PdfImportedPage page = copy.getImportedPage(reader, j);
                    copy.addPage(page);
                }
            }
            retValue = true;
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            document.close();
        }
        return retValue;
    }
}

 

分享到:
评论

相关推荐

    PostgreSQL11.2-中文手册.pdf

    经过PostgreSQL中文社区文档翻译小组的不懈努力,PostgreSQL 11.2手册终于翻译完成正式上线了! 《PostgreSQL 11.2手册》是基于《PostgreSQL 10.1手册》翻译,并且合并了武汉大学彭煜玮老师翻译的《PostgreSQL ...

    devops 代码一步上线.pdf

    持续集成(CI)是一种开发实践,要求开发人员频繁地将代码变更合并到共享仓库中。这通常通过自动化构建和测试来完成,以便早期发现集成错误,提高软件质量。持续交付(CD)是CI的延伸,它保证了软件的变更可以快速、可靠...

    git分支版本管理.pdf

    以下是对"git分支版本管理.pdf"中提到的知识点的详细说明: 1. **主分支(master)**: 主分支代表了项目的正式发布版本,通常是最稳定的代码库,只包含已验证并上线的代码。 2. **开发分支(dev)**: 开发分支...

    浅议大数据、云计算对会计报表编制的影响——财务信息化与集约化条件下的合并报表编制创新研究.pdf

    而对于前期发生的关联交易(存量数据),在系统初期上线时需要手工录入抵销凭证。 总结 大数据和云计算技术正在引领财务领域的一场革命,尤其在合并报表编制方面,它们为会计实务界解决难题提供了新的途径。通过...

    Html+Css+Javascript从入门到精通.pdf

    - **单元格合并**:灵活合并单元格。 - **表格背景**:设置表格背景。 - **嵌套表格**:复杂布局的实现。 **第九章:使用框架划分窗口** - **框架基础**:了解框架的作用。 - **创建框架**:实现页面分割。 - **...

    阿里云核心技术云原生.pdf

    阿里云云原生技术的发展可以追溯到2009年,淘宝和天猫合并建设业务中台,三大中间件上线阿里云成立,自研飞天操作系统,开启云化时代。2011年,T4项目启动,容器调度技术支撑集团在线业务,云原生时代开启。2015年,...

    文化传媒行业周报:谷歌Stadia平台上线,巨头将抢滩云游戏服务.pdf

    7. 国际合作:文件中提到LINE与雅虎日本合并的初步方案,这是国际互联网公司之间的合作示例,显示了全球互联网行业合作的趋势。 8. 投资逻辑:文件建议投资者应关注行业成长性集中在数字出版、付费视频、动漫和游戏...

    Learn PHP 7.pdf

    - **新特性:** 引入了诸如空合并运算符、标量类型声明、返回类型声明等功能。 #### 2. 面向对象编程(OOP)基础 - **类与对象:** 定义类的方法及如何创建对象。 - **继承:** 子类如何继承父类的属性和方法,以及...

    创业型公司2周自研通用可扩展自动化上线平台.zip

    这个压缩包中的"创业型公司2周自研通用可扩展自动化上线平台.pdf"文档,很可能是详细介绍了平台的设计原理、实现方法以及实际应用案例,对于想要了解或构建类似系统的读者来说,是一份宝贵的参考资料。

    第三章:页面渲染架构设计与性能优化.pdf

    例如,对于需要快速上线和频繁更新的项目,可以选择服务端同步渲染;对于需要丰富交互体验和高度动态内容的项目,则可能更适合客户端渲染或SPA。 页面加载策略优化是提升用户体验的关键。常用的优化策略包括使用CDN...

    面试整理-背诵版.pdf

    2. **持续集成**:频繁地合并代码,并进行自动化测试。 3. **代码审查**:定期进行代码审查,提高代码质量。 4. **用户体验优化**:重视用户体验,从用户角度出发进行改进。 #### 1.9 bug怎么管理的,bug的生命周期...

    开发版本管理git使用规范.pdf

    - Master分支:存储最近上线版本的最新代码,不允许直接修改,仅进行合并。每个版本发布后在此分支打TAG。 - Develop分支:存放即将提交测试的相对稳定版本,原则上也不允许直接修改,只进行合并操作,是提交测试的...

    DevOps工作三步法共31页.pdf.zip

    1. **持续集成(Continuous Integration, CI)**:开发人员频繁地将代码变更合并到主分支,每次合并后立即进行自动化构建和测试,以尽早发现并解决问题。这一步强调的是快速反馈,确保代码的质量和稳定性。 2. **...

    医渡云业务模式及产品.pdf

    - 搜索引擎:支持模糊搜索、条件树搜索和事件搜索等多种搜索方式,利用同义词查询、自动合并查询结果等高级功能,方便用户在大数据中找到所需信息。 - 患者全生命周期诊疗时间轴:通过数据可视化展现重点诊疗阶段...

    证券员工工作总结3.pdf

    - **案例七**:完成金川江营业部与太原街营业部的数据合并工作。 - **案例八**:完成南五与南八中路营业部的数据集中工作。 ### 3. 新产品学习与应用 - **产品举例**:内嵌和通用版剩余配售、xone、移动柜台、开放...

Global site tag (gtag.js) - Google Analytics