位置: 编程技术 - 正文

使用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)

  • 租金收入个税怎么交
  • 可供出售金融资产和长期股权投资
  • 个税抵扣未及时填报
  • 支付境外技术服务费代扣代缴所得税账务处理
  • 什么叫发票分割单
  • 手工发票有没有期限
  • 多缴纳个人所得税怎么办
  • 个税申报包含哪些
  • 没有收汇可以申报吗
  • 保修期内免费维修
  • 收到总公司投资款怎么做账务处理
  • 生产经营所得如何缴纳个人所得税
  • 拆迁房视同销售成本可以抵减吗?
  • 一般纳税人农业增值税如何申报
  • 收到股东借款的现金
  • 十万位发票怎么开
  • 资本化和费用化的条件
  • 旅行社税收
  • 企业所得税分期收款确认收入的时间政策
  • 筹建期间发生的费用计入哪里
  • win11和win10哪个玩游戏好
  • c盘满了清理什么
  • 增值税应税劳务的纳税人是什么意思
  • win7 右键 没反应怎么办
  • ghost读不出硬盘
  • 自查以前年度补税需调帐吗
  • 什么是资产减值准备计提
  • 有限公司股权怎么划分
  • 公司购买购物卡发给职工的账务处理
  • pc安装苹果系统
  • 对公账户存款利息要交增值税吗
  • 固定资产计算折旧时用扣除减值吗
  • 业务招待费如何进行纳税调整
  • 哪些可以作为原始凭证
  • 企业发给员工的工资要交税吗
  • php合并两个二维数组
  • 认缴制下实收资本需要验资吗
  • 各种汇票
  • php自定义字段
  • 以前年度损益调整
  • 查看ls命令的使用手册
  • php新手入门教程
  • tsar命令 收集服务器系统信息
  • 待抵扣进项税计入其他应收款
  • 帝国cms是基于什么的
  • 工商年报资产状况纳税总额怎么填
  • 出差发生的旅游事件
  • 购买礼品送客户取得普票怎么做账
  • 原始凭证可以直接入账吗
  • 资产评估机构可以评估土地吗
  • 物业公司管理费用都有哪些科目
  • 多交了社保
  • 生产成本的会计科目分录
  • 应缴纳房产税的房产
  • 对账和结账的步骤及要求
  • 成本费用会计科目
  • 统计会计主要做什么
  • 赊销是什么意思 视频
  • 设置mysql数据库字符集的语句
  • 修改mysql字段默认值
  • SQL Server提示"选定的用户拥有对象,所以无法除去该用户”
  • CentOS 7.2下MySQL的安装与相关配置
  • 如何将iPhone照片导入电脑
  • linux arp -n
  • centos7版本推荐
  • 如何注销windows账户登录
  • win8电脑设置打不开怎么办
  • win10如何将我的电脑添加到桌面
  • js与css有什么区别
  • android 动态布局
  • cocos2d教程
  • 深入领悟六个必须坚持
  • javascript总结笔记
  • jquery制作简单的网页
  • python 压缩gz
  • 木瓜电子
  • js拖拽生成页面
  • css实现3d效果
  • python提取html内容
  • 缴款书的基本内容
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设