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;
}
}
相关推荐
Android Studio集成了Git版本控制系统,允许开发者进行代码提交、分支管理、合并和代码审查。这为团队协作提供了便利,确保代码的稳定性和一致性。 八、性能优化 Android Studio提供了一系列性能分析工具,如...
经过PostgreSQL中文社区文档翻译小组的不懈努力,PostgreSQL 11.2手册终于翻译完成正式上线了! 《PostgreSQL 11.2手册》是基于《PostgreSQL 10.1手册》翻译,并且合并了武汉大学彭煜玮老师翻译的《PostgreSQL ...
持续集成(CI)是一种开发实践,要求开发人员频繁地将代码变更合并到共享仓库中。这通常通过自动化构建和测试来完成,以便早期发现集成错误,提高软件质量。持续交付(CD)是CI的延伸,它保证了软件的变更可以快速、可靠...
以下是对"git分支版本管理.pdf"中提到的知识点的详细说明: 1. **主分支(master)**: 主分支代表了项目的正式发布版本,通常是最稳定的代码库,只包含已验证并上线的代码。 2. **开发分支(dev)**: 开发分支...
而对于前期发生的关联交易(存量数据),在系统初期上线时需要手工录入抵销凭证。 总结 大数据和云计算技术正在引领财务领域的一场革命,尤其在合并报表编制方面,它们为会计实务界解决难题提供了新的途径。通过...
- **单元格合并**:灵活合并单元格。 - **表格背景**:设置表格背景。 - **嵌套表格**:复杂布局的实现。 **第九章:使用框架划分窗口** - **框架基础**:了解框架的作用。 - **创建框架**:实现页面分割。 - **...
阿里云云原生技术的发展可以追溯到2009年,淘宝和天猫合并建设业务中台,三大中间件上线阿里云成立,自研飞天操作系统,开启云化时代。2011年,T4项目启动,容器调度技术支撑集团在线业务,云原生时代开启。2015年,...
7. 国际合作:文件中提到LINE与雅虎日本合并的初步方案,这是国际互联网公司之间的合作示例,显示了全球互联网行业合作的趋势。 8. 投资逻辑:文件建议投资者应关注行业成长性集中在数字出版、付费视频、动漫和游戏...
- **新特性:** 引入了诸如空合并运算符、标量类型声明、返回类型声明等功能。 #### 2. 面向对象编程(OOP)基础 - **类与对象:** 定义类的方法及如何创建对象。 - **继承:** 子类如何继承父类的属性和方法,以及...
这个压缩包中的"创业型公司2周自研通用可扩展自动化上线平台.pdf"文档,很可能是详细介绍了平台的设计原理、实现方法以及实际应用案例,对于想要了解或构建类似系统的读者来说,是一份宝贵的参考资料。
例如,对于需要快速上线和频繁更新的项目,可以选择服务端同步渲染;对于需要丰富交互体验和高度动态内容的项目,则可能更适合客户端渲染或SPA。 页面加载策略优化是提升用户体验的关键。常用的优化策略包括使用CDN...
2. **持续集成**:频繁地合并代码,并进行自动化测试。 3. **代码审查**:定期进行代码审查,提高代码质量。 4. **用户体验优化**:重视用户体验,从用户角度出发进行改进。 #### 1.9 bug怎么管理的,bug的生命周期...
- Master分支:存储最近上线版本的最新代码,不允许直接修改,仅进行合并。每个版本发布后在此分支打TAG。 - Develop分支:存放即将提交测试的相对稳定版本,原则上也不允许直接修改,只进行合并操作,是提交测试的...
1. **持续集成(Continuous Integration, CI)**:开发人员频繁地将代码变更合并到主分支,每次合并后立即进行自动化构建和测试,以尽早发现并解决问题。这一步强调的是快速反馈,确保代码的质量和稳定性。 2. **...
- 搜索引擎:支持模糊搜索、条件树搜索和事件搜索等多种搜索方式,利用同义词查询、自动合并查询结果等高级功能,方便用户在大数据中找到所需信息。 - 患者全生命周期诊疗时间轴:通过数据可视化展现重点诊疗阶段...