位置: 编程技术 - 正文

使用rst2pdf实现将sphinx生成PDF(rst.open)

编辑:rootadmin

推荐整理分享使用rst2pdf实现将sphinx生成PDF(rst.open),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:rsf教程,rsem使用,rsf教程,rstp命令,rsf教程,rstp命令,rst字段,rsrp pdf图,内容如对您有帮助,希望把文章链接给更多的朋友!

当初项目文档是用sphinx写的,一套rst下来make html得到一整个漂亮的在线文档。现在想要将文档导出为离线的handbook pdf,于是找到了rst2pdf这个项目,作为sphinx的拓展,然后加上少量配置即可输出中文PDF。

rst2pdf

简介

rst2pdf是一个将 reStructuredText 转换为 PDF 的工具,具有下列特性:

自定义页面布局 支持层叠样式表 支持内嵌TTF和Type1字体 支持几乎所有语言的语法高亮 使用reStructuredText作为源文件 支持字间距调整

安装

配置rst2pdf

注册到sphinx项目

需要告诉sphinx我们安装了rst2pdf,并且将其作为插件使用。只需在项目根目录下的conf.py中配置:

即可。然后,在conf.py中拷入PDF相关的配置:

具体配置项的值请自行调整,不需要严格按照我的来。

样式表

在项目根目录下创建一个zh_CN.json,写入:

关于以上样式的说明:

embeddedFonts用于嵌入字体,经试验,必须包含至少四个值才不会报错。不过这四个字体值可以是重复的。

fontsAlias用来指定各类字形用什么字体。如stdFont指正文字体,stdBold指粗体,stdItalic指斜体。其他的还有stdBoldItalic粗斜体,stdMono等宽体,等等。确保所用字体已经安装在你的操作系统上,且字体必须是TTF类型的(Windows环境下限制比较多~)。

wordWrap用于指定换行规则,CJK就是适用于中日韩文字的规则。这是从网上的模板抄来的,但经我的测试发现,如果用CJK规则的话,中英混排的文档里面英文部分就没法正常断行,这真是个遗憾。实际上,fontsAlias的分类很多都只对英文字体有意义,如严格来讲中文是没有所谓斜体的(不过因为Word的普及,经常看到中文被设置为斜体的情形)。如果是纯中文文档,当然随便用哪些中文字体都行,如宋体。现实中,经常会有中英文混排的情形,所以如果全用中文字体的话,英文部分就没法显示斜体等字形了。

关于pdf_stylesheets的说明:这个参数中默认使用的某些样式包含了一些字体,而这些字体并非在所有操作系统上都找得到。'sphinx'和'kerning'都是默认提供的样式,要么不用它们,要么直接修改其包含的字体。'a4'指设置输出的PDF为A4纸大小。默认的样式文件可以在rst2pdf的安装路径下找到。

然后配置编译脚本

使用rst2pdf实现将sphinx生成PDF(rst.open)

Windows用户,在make.bat中加入:

类Unix用户修改Makefile:

输出PDF

然后一句:

就能输出PDF了。

解决findfonts.py: Unknown font:

这应该是由于pdf_font_path配置有误造成的,事实上,我确定配置无误rst2pdf还是找不到字体文件,于是我修改了X:Program Files (x)PythonLibsite-packagesrst2pdffindfonts.py第行,在

fontfile = get_nt_fname(fname)

后面加了一句:

fontfile = 'C:\Windows\Fonts\simsun.ttc'

强行解决问题。

解决rst2pdf输出PDF为空白文档

事实上,在字体正常的情况下,我发现输出的PDF依然是空白的:

在使用二分法排除rst文件中的问题后,我发现这是由于PDF开头的目录造成的。当目录超出一页时就会发生这种情况,我倾向于认为这是rst2pdf的一个bug。

解决方法是将pdf_toc_depth调小一点,或者干脆不生成目录,pdf_use_toc = False。

PDF效果

于是再次重试,可以生成漂亮的PDF了:

相关链接:

python多线程方式执行多个bat代码 python多线程方式执行多个bat的代码,感兴趣的朋友可以参考下。importthreadingfromwinapiimport*classMyThread(threading.Thread):def__init__(self,bat_path,**kwargs):threading.Thre

python实现多线程的方式及多条命令并发执行 一、概念介绍Thread是threading模块中最重要的类之一,可以使用它来创建线程。有两种方式来创建线程:一种是通过继承Thread类,重写它的run方法;另一

python3批量删除豆瓣分组下的好友的实现代码 python3批量删除豆瓣分组下的好友的实现代码"""python3批量删除豆瓣分组下的好友年6月7日::codegay我两年前一时冲动在豆瓣关注了很多豆瓣的员工,

标签: rst.open

本文链接地址:https://www.jiuchutong.com/biancheng/387589.html 转载请保留说明!

上一篇:python监控文件或目录变化(python系统监控)

下一篇:python多线程方式执行多个bat代码(多线程 python)

  • 增值税销项进项什么意思
  • 委托加工应税消费品代扣代缴
  • 什么时候公司需要赔偿员工
  • 一般纳税人是什么型企业
  • 企业银行贷款报表要求
  • 中介费要求开发票中介公司不开
  • 资产处置收益是什么意思
  • 汽车4s店索赔和维修
  • 非货币性资产含义
  • 收到免税发票怎么做账务处理
  • 企业计提固定资产折旧
  • 固定资产尚未投入怎么办
  • 购置股权账务处理流程
  • 提前还款罚息是多少
  • 企业给员工的异地安家费交个税吗?
  • 房租税费计入什么会计科目
  • 劳动保护费在企业怎么交
  • 增值税出口退税计入什么科目
  • 为什么有些单位一直在招聘
  • 如何区分纳税人和小规模纳税人
  • 母子公司划转房产怎么办
  • 账务中如何把短期借款转变为实收资本?
  • 旅行社开具的发票能否作废
  • 期望值E(X)怎么算例题
  • 远程清卡失败怎么办
  • 代订住宿费可以开专票吗
  • 广告服务类企业有哪些
  • 银行发放贷款银行会计怎么做账务处理
  • 网上申报税务局怎么操作
  • 三星电脑安装系统按哪个键
  • php处理图片需要什么扩展
  • php中字符串函数
  • 红掌的养殖方法和注意事项
  • 分公司收到总公司利润分录怎么写
  • 递延所得税的计税基础
  • 科技财政支出的意义
  • 芬兰东部的国家有哪些
  • electron 打包
  • laravel中的session有效期
  • 收到税务局退回的企业所得税分录
  • 增值税核算账务处理办法
  • 增值税专用发票进项
  • 企业年度报告包括哪些内容
  • 定期存款怎么入门
  • MySQL Proxy的安装及基本命令使用教程
  • 如何设置长期有效的二维码
  • sql server定时作业
  • 出口退税款计入营业外收入
  • 小规模纳税人的条件
  • 企业所得税扣除项目
  • 库存现金的账务处理流程
  • 处置固定资产净收益属于利得吗
  • 业务招待费 纳税调增
  • 个体户员工要签劳动合同吗
  • 利息保障倍数为0说明什么
  • 转账支票遗失声明
  • 个人借款产生的利息怎么计算的
  • 建筑业发票的相关要求
  • 固定资产一次性扣除政策
  • 完工结转的会计分录
  • 银行结息需要开发票吗
  • 总公司和分公司企业所得税分配
  • 印花税如何做账报税
  • 删除数据库重复
  • Win10预览版桌面图标和任务栏不翼而飞怎么办?
  • windows2003怎么升级
  • 微软官方操作系统叫什么
  • win7旗舰版和家庭版哪个对电脑要求低
  • xp系统好奇怪哦
  • windows的气泡屏保会加速
  • 安装程序不运行怎么回事
  • fp3是什么文件格式
  • win10小娜怎么用不了
  • win7如何查看电脑主板型号
  • JavaScript的Ext JS框架中的GridPanel组件使用指南
  • 每次开机windows桌面更新
  • js验证身份证合法性
  • 判断jquery对象是否存在
  • 北京增值税普通发票图片
  • 广东地方税务局官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设