java markdown 转 pdf_markdown转为pdf文件
要求:
把.md格式转为.pdf格式,并批量处理,最后将多个pdf文件合并为一个pdf并以文件名作为书签名
解决思路:
1.md格式的markdown文件转为html
为了将 md 格式转换成 html 文件,我们需要用到 markdown 和 codecs 这两个库。
pip install markdown
完整代码如下:
importmarkdownimportosimportcodecs
head= """
code {
color: inherit;
background-color: rgba(0, 0, 0, 0.05);
}
"""filepath= "E:/Data/RenZhengfei-master/ALL"savepath= "E:/Data/RenZhengfei-master/ALL-html"
if notos.path.isdir(savepath):
os.mkdir(savepath)
os.chdir(savepath)
i=0
pathDir=os.listdir(filepath)for allDir inpathDir:if (allDir == "pdf"):continuename=allDirprint(name)
os.chdir(filepath)
fp1= codecs.open(name, mode="r", encoding="utf-8")
text=fp1.read()
html=markdown.markdown(text)
fp1.close()#print(html)
fname= name.replace('md', 'html')#f2 = '%s.html' % (fname)
os.chdir(savepath)
fp2= codecs.open(fname, "w", encoding="utf-8", errors="xmlcharrefreplace")
fp2.write(head+ html +foot)
fp2.close()print(i)
MdToHtml
2.html格式文件转为pdf
wkhtmltopdf 是一个开源、简单而有效的命令行 shell 程序,它可以将任何 HTML (网页)转换为 PDF 文档或图像(jpg、png 等)。
我们首先需要去官网去下载对应的程序到本地环境中 :https://wkhtmltopdf.org/downloads.html
也可以直接使用pip安装
pip install pdfkit
完整代码如下:
importtimeimportpdfkitimportos
wk_path= r'E:/wkhtmltox/bin/wkhtmltopdf.exe'config= pdfkit.configuration(wkhtmltopdf=wk_path)
filepath= "E:/Data/RenZhengfei-master/ALL-html"savepath= "E:/Data/RenZhengfei-master/ALL-pdf"time1=time.time()
pathDir=os.listdir(filepath)for allDir inpathDir:if (allDir == "pdf"):continuename=allDirprint(name)
htmlpath=filepath+"\\"+nameprint(htmlpath)
name= name.replace('html', 'pdf')
os.chdir(savepath)
pdfkit.from_url(htmlpath, name, configuration=config)#pdfkit.from_url(url, name, configuration=config)
time2 =time.time()print(str(time2 - time1)+"s")
HtmlToPdf
3.合并多个pdf文件
#!/usr/bin/env python3#-*- coding: utf-8 -*-
'''本脚本用来合并pdf文件,支持带一级子目录的
每章内容分别放在不同的目录下,目录名为章节名
最终生成的pdf,按章节名生成书签'''
importos, sys, codecsfrom PyPDF2 importPdfFileReader, PdfFileWriter, PdfFileMergerimportglobdefgetFileName(filepath):'''获取当前目录下的所有pdf文件'''file_list= glob.glob(filepath+"/*.pdf")#默认安装字典序排序,也可以安装自定义的方式排序
#file_list.sort()
returnfile_listdef get_dirs(filepath='', dirlist_out=[], dirpathlist_out=[]):#遍历filepath下的所有目录
for dir inos.listdir(filepath):
dirpathlist_out.append(filepath+ '\\' +dir)returndirpathlist_outdefmerge_childdir_files(path):'''每个子目录下合并生成一个pdf'''dirpathlist=get_dirs(path)if len(dirpathlist) ==0:print("当前目录不存在子目录")
sys.exit()for dir indirpathlist:
mergefiles(dir, dir)def mergefiles(path, output_filename, import_bookmarks=False):#遍历目录下的所有pdf将其合并输出到一个pdf文件中,输出的pdf文件默认带书签,书签名为之前的文件名#默认情况下原始文件的书签不会导入,使用import_bookmarks=True可以将原文件所带的书签也导入到输出的pdf文件中
merger=PdfFileMerger()
filelist=getFileName(path)if len(filelist)==0:print("当前目录及子目录下不存在pdf文件")
sys.exit()for filename infilelist:
f=codecs.open(filename,'rb')
file_rd=PdfFileReader(f)
short_filename=os.path.basename(os.path.splitext(filename)[0])if file_rd.isEncrypted==True:print('不支持的加密文件:%s'%(filename))continuemerger.append(file_rd,bookmark=short_filename,import_bookmarks=import_bookmarks)print('合并文件:%s'%(filename))
f.close()#out_filename=os.path.join(os.path.abspath(path),output_filename)
merger.write(output_filename+".pdf")print('合并后的输出文件:%s'%(output_filename))
merger.close()if __name__ == "__main__":#每个章节一个子目录,先分别合并每个子目录文件为一个pdf,然后再将这些pdf合并为一个大的pdf,这样做目的是想生成每个章节的书签
#1.指定目录
#原始pdf所在目录
path = "E:\Data\RenZhengfei-master\ALL-pdf"
#输出pdf路径和文件名
output_filename = "E:\Data\RenZhengfei-master"
#2.生成子目录的pdf
#merge_childdir_files(path)
#3.子目录pdf合并为总的pdf
mergefiles(path, output_filename)
AllPdf
java markdown 转 pdf_markdown转为pdf文件相关推荐
- java网页保存pdf_JavaScript+Java实现HTML页面转为PDF文件保存的方法
JavaScript+Java实现HTML页面转为PDF文件保存的方法 发布于 2017-02-27 09:58:50 | 160 次阅读 | 评论: 0 | 来源: 网友投递 JavaScript客 ...
- java 网页保存为pdf文件怎么打开方式_js相关:JavaScript+Java实现HTML页面转为PDF文件保存的方法...
js相关:JavaScript+Java实现HTML页面转为PDF文件保存的方法 发布于 2020-8-12| 复制链接 借助iText这个Java库,我们可以将HTML文件保存为图片文件进而转换成P ...
- java实现excel表格转为pdf文件
import com.aspose.cells.Workbook; import com.aspose.cells.PdfSaveOptions;/**excelFileDir:excel文件路径pd ...
- java将HTML文件转化为pdf文件,如何使用Java将HTML网页转换为PDF文件
我一直在互联网上搜索如何使用Java将HTML页面转换为PDF文件.我发现了很多指针,简而言之,它们不起作用或难以实现.我也下载了一个商业产品,pdf4ml;该API是我很乐意与之合作的,除了当我在维 ...
- java在linux生成pdf文件,从 Java 应用程序动态生成 PDF 文件
简介: 如果您的应用程序需要动态生成 PDF 文档,那么您需要 iText 库.开源的 iText 库使得 PDF 的创建变得轻松易行.本文介绍了 iText 并提供了一个使用它从 Java 技术应用 ...
- 超星阅读器文件转为PDF文件
写在开头:打印是核心要义. 通过打印将'超星阅读器.pdz'文件转为'.oxps'文件: 再通过打印将'.oxps'文件转为'.pdf'文件: 步骤: 1.在超星阅读器中打开书籍文件后,右键选择打印, ...
- Java 将网络图片URL 转为file文件
Java 将网络图片URL 转为file文件;某个需求要求将图片一起导出,图片只有地址,这里将图片先转为file,然后导出excel 代码示例 /*** 将图片转为file** @param url ...
- java使用itext生成表格pdf文件
以下主要讲解的是java使用itext生成表格pdf文件,话不多说,直接上代码 一.首先引入itext所使用的包 <dependency><groupId>com.itextp ...
- 代码示例:使用Java以编程方式拆分PDF文件
有时需要将一个PDF拆分为多个PDF文件时,可能会有多种情况.例如,可能必须分割包含发票/收据的PDF的每一页,并将它们另存为单独的文件.另一方面,可能要从PDF文件中拆分页面的特定集合.为了解决上述 ...
- php把excel转换成pdf文件下载,laravel怎么可以把excel文件转为pdf文件?
laravel怎么可以把excel文件转为pdf文件? 尝试用PHPOffice/PhpSpreadsheet转换,写了个函数,如下: 备注:PhpSpreadsheet是PHPExcel的新版,ht ...
最新文章
- python广告刷量_Python一日一练05----怒刷点击量
- 一次性给予硕士35万,博士50万房补,浙江这个市出台硬核政策引才!
- 67 亿美金搞个图,创建知识图谱的成本有多高你知道吗?
- Cocos2d-x的坐标系统
- mysql中update實現子查詢的方法
- sqlserver存储过程入门之 游标
- mysql otter 数据同步_MySQL数据同步之otter
- 甜甜圈和拓扑学也有关系,你想的到吗?
- [Postman使用]请求与响应
- linux查看ip命令_不可不知的Linux文本查看命令
- vscode+leetcode环境配置
- {MySQL数据库初识}一 数据库概述 二 MySQL介绍 三 MySQL的下载安装、简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 初识sql语句...
- java 反编译 报错_java反编译后再编译成class时提示缺少包
- 于仕琪老师的人脸检测库
- 订单明细升级版、淘宝erp、淘宝打单发货接口
- 报错command line option ‘-std=c11‘ is valid for C/ObjC but not for C++
- 不小心格式化硬盘,重新分区了硬盘的恢复方法
- 绝无仅有!绝无仅有的史上最好shell替代工具
- 图片怎么转换成PDF格式?这两种方法赶紧记下
- java12/13新特性
热门文章
- JVM——Java类加载机制总结
- 用户登录项目第二期——HTML登录页面实现
- android设备当广告屏使用方法,Android手机与电视无线HDMI同屏器使用教程
- python 知乎 sklearn_最全知乎专栏合集:编程、python、爬虫、数据分析、挖掘、ML、NLP、DL......
- java动态生成HTML文件
- stm32实用技巧:JLINK接口定义和使用JTAG或SW下载程序
- jlink接口定义接stm32_图解Stm32使用jlink程序时jtag接口(SW和JTAG模式)的简化方法
- 分享WEB快速开发工具
- 京东架构专家分享京东架构之路
- 机器学习:决策树算法案例(西瓜数据集3.0)