电子书转换为PDF格式
背景:当我们从网上下载一些电子小说或书籍的时候,一般文件的格式可能是.epub、.mobi等。这些格式的文件需要特定的手机阅读软件才能打开(有些能打开但是会出现乱码,排版混乱的情况)。蓝瘦想哭~~
由于PDF格式的文件查看打开比较方便,所以百度搜索了一下电子书转换为PDF格式的软件,没有几个是好用的,最后终于找到一个比较满意的 calibre 可以批量,且支持多种格式转换【此处并非打广告,这个软件确实还可以】
一、mobi 转换 pdf 步骤
- 添加书籍-- 选择需要转换的书籍

- 设置文件导出的目录,以及输出格式

- 按住Ctrl, 选择多个书籍
- 右键选择转换书籍--选择批量转换
- 最后等待所有书籍转换成功

二、查看转换后的结果目录
打开转换的书籍的目录,可以看到所有换的书籍以作者名字命名,下一级目录则以书名命名。该目录下包含封面图片,源文件以及转换后的PDF文件,还有 metadata.opf 书籍信息文件

三、将PDF还原文件名且移出至新目录
从转换后的目录来看,源文件的中文名都换成了拼音的名字,看的蓝瘦(一个文件还好说,这么多个...)
需求: 将文件换成原来的中文名,且移动到新的目录下
思路: 从metadata.opf 读取 title标签【即书名】,然后将PDF 文件名替换为 title标签的名字
# -*- coding: utf-8 -*-
"""
@ author: zzw
@ data: 2018-05-06
"""
import os
import re
class FileRename(object):
# def __init__(self, np):
# self.oldPath = op
# self.newPath = np
# 获取文件的中文名字
@staticmethod
def get_name(file):
name = ''
name_list = []
f = open(file, 'r', encoding='utf-8')
for line in f.readlines():
# 格式: <dc:title>string</dc:title>
if '<dc:title>' in line:
# 得到 string 且将字符串中含有windows 下特殊字符替换
string = line.strip().lstrip('<dc:title>').rstrip('</dc:title>')
name = re.sub(r'[\\/:*?"<>|]', '_', string)
# 去重(如果name出现相同的行则增加字符串(2))
if name not in name_list:
name_list.append(name)
else:
name = name+'(2)'
f.close()
return name
def file_rename(self, path, n_path):
dir_list = os.listdir(path)
for fp in dir_list:
dir_next = os.path.join(path, fp)
if os.path.isdir(dir_next):
self.file_rename(dir_next, n_path)
elif os.path.isfile(dir_next) and os.path.splitext(dir_next)[1] == '.pdf':
# 从 pdf文件同路径下的metadata.opf 文件获取中文名字
src = os.path.dirname(dir_next) + "\\metadata.opf"
if not os.path.exists(n_path):
os.mkdir(n_path)
new_name = n_path + os.sep + self.get_name(src) + ".pdf"
try:
# 重命名文件且移动文件
os.rename(dir_next, new_name)
except OSError as e:
print(e)
else:
pass
if __name__ == '__main__':
FileRename().file_rename("F:\\zzwTest\\book", "F:\\zzwTest\\newBook")
print('done')
最后看一下效果图:

电子书转换为PDF格式的更多相关文章
- java 调用OpenOffice将word格式文件转换为pdf格式
一:环境搭建 OpenOffice 下载地址http://www.openoffice.org/ JodConverter 下载地址http://sourceforge.net/projects/jo ...
- CEBX格式的文档如何转换为PDF格式文档、DOCX文档?
方正阿帕比CEBX格式的文档如何转换为PDF格式文档.DOCX文档? 简介: PDF.Doc.Docx格式的文档使用的非常普遍,金山WPS可以直接打开PDF和Doc.Docx文档,使用也很方便. CE ...
- C#实现office文档转换为PDF格式
1.安装组件OfficeSaveAsPDFandXPS 需要安装office 2007 还有一个office2007的插件OfficeSaveAsPDFandXPS 下载地址 OfficeSave ...
- java使用jacob将office文档转换为PDF格式
jacob 包下载地址: http://sourceforge.net/projects/jacob-project/ 下载后,将jacob 与 jacob-1.19-x64.dll放到安装jdk目录 ...
- 文档转换为pdf格式帮助类
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Word = M ...
- 使用openoffice将word文件转换为pdf格式遇到问题:The type com.sun.star.lang.XEventListener cannot be resolved. It is indirectly referenced from required
The type com.sun.star.lang.XEventListener cannot be resolved. It is indirectly referenced from requi ...
- C#实现office文档转换为PDF或xps的一些方法( 转)
源博客http://blog.csdn.net/kable999/article/details/4786654 代码支持任意office格式 需要安装office 2007 还有一个office20 ...
- C#, VB.NET如何将Excel转换为PDF
在日常工作中,我们经常需要把Excel文档转换为PDF文档.你是否在苦恼如何以C#, VB.NET编程的方式将Excel文档转换为PDF文档呢?你是否查阅了许多资料,运用了大量的代码,但转换后的效果依 ...
- PHP 实现 word/excel/ppt 转换为 PDF
前段时间负责公司内部文件平台的设计,其中有一个需求是要能够在线浏览用户上传的 office 文件. 我的思路是先将 office 转换成 PDF,再通过 pdf.js 插件解析 PDF 文件,使其能在 ...
随机推荐
- js判断浏览器类型和版本
原网址:http://www.cnblogs.com/rubylouvre/archive/2009/10/14/1583362.html 除了另无它法,肯定不使用navigator.userAgen ...
- mysql案例~非常规操作汇总
一 简介:此文汇总mysql不常见的数据库的操作二 mysql表修改最大自增ID 目的: 修复canal相关问题 语法: alter table a AUTO_INCREMENT=num; 执行速度: ...
- Microsoft SQL - 指令
exec指令 查询数据库详细状态 exec sp_helpdb 数据库名称 修改数据库名称 exec sp_rename oldname,new_name 查看表状态 exec sp_help 表名称 ...
- springboot多模块开发以及整合dubbo\zookeeper进行服务管理
之前研究了springboot单工程的使用,参考git地址:https://github.com/qiao-zhi/springboot-ssm 下面研究springboot多模块开发的过程. 1.模 ...
- C++基础题--float型以整型格式输出
int main() { ; a++; printf("%d\n", a); system("pause"); ; } //为什么会输出是0? 解释如下: 在p ...
- python3-面向对象进阶(内置方法)
面向对象进阶: isinstance和issubclass 反射 __setattr__,__getattr,__delattr__ __setitem__,__getitem,__delitem__ ...
- Xilinx原语学习之时钟资源相关原语
一直来,都是使用Vivado中自带的GMIItoRGMII IP核来完成GMII转RGMII的功能:尽管对GMII及RGMII协议都有一定的了解,但从没用代码实现过其功能.由于使用IP时,会涉及到MD ...
- Shell-匹配FTP文件名
想弄个脚本,下载每日构建的版本,由于版本文件名中有构建时间(不是固定值),只能按日期确认文件名,例如:project_name_2019-01-04*.exe 搜索了下,可以用dir filename ...
- Suspend to RAM和Suspend to Idle分析,以及在HiKey上性能对比【转】
转自:https://www.cnblogs.com/arnoldlu/p/6253665.html 测试环境:AOSP 7.1.1+Kernel 4.4.17 HW:HiKey Ubuntu 14. ...
- fabric.js PatternBrush
// Original canvas const canvas = new fabric.Canvas('canvas'); fabric.Image.fromURL('https://picsum. ...