使用enscript和ghostscript 自己生成RFC文档的PDF版本

RFC(Request For Comments)文档是许多互联网协议的标准文档,对于学习计算机网络的学生和通信网络行业从业者来说是一个重要的资料来源。任何人都可以可以从[RFC Editor(https://www.rfc-editor.org/)方便地获取到RFC文档。

RFC文档是由人编写的,不可避免地会出现一些笔误的情况,在RFC Editor站点上会不定期地刊登出这些勘正信息(Errata),但是并不提供订正后的文本。这点做得就不如法律的修正案,后者在立法机关公布修正案的同时会发布修订后的全文。

咳咳,言归正传,为了平时方便使用,我们需要把这些勘正合并到原文档中(.txt),然后再生成方便阅读和使用的PDF格式文档。参考官方RFC文档中的信息,这里使用enscript和ghostscript来生成近似官方PDF文档的效果。

安装软件

sudo apt install enscript ghostscript

执行脚本

将以下代码保存成 build_PDF.sh 文件

#!/bin/bash
FILENAME=`echo ${1} | sed 's/\.txt//'`

#-B 不在每页添加 '文件名 - 生成日期' 格式的首部
#--margins 设置页边距
#--media=letter 使用US Letter 纸张
#-p <file> 将enscript执行的结果导出成ps文件
enscript -B --margins=76::20 --media=letter -p ${FILENAME}.ps ${FILENAME}.txt
#enscript -B --margins=126::10 --font=Times-Roman12 --media=letter -p ${FILENAME}.ps ${FILENAME}.txt

#等待文件生成
until [ -f ${FILENAME}.ps ]
do
	sleep 1s
done

#转换成pdf
ps2pdf ${FILENAME}.ps ${FILENAME}.pdf

#删除中间文件
rm -f ${FILENAME}.ps

在shell中执行以下命令,会在同目录下生成同名的pdf文件

./build_PDF.sh 3069.txt        #使用你自己的RFC文档

Windows 版本

安装软件

下载ghostscript并安装
下载enscript源码包
在msys2 mingw32(64位可能编译失败)环境下编译enscript:

./configure --with-media=Letter
make
make install

配置环境

假设ghostscript安装到了 C:\Program Files\ghostscript\ 目录,
打开C:\Program Files\ghostscript\lib\ps2pdfwr,
修改GS_EXECUTABLE变量

GS_EXECUTABLE="C:\Program Files\ghostscript\bin\gswin64c.exe"

执行脚本

将以下代码保存成 build_PDF_win.sh 文件,注意修改ps2pdf的路径为你自己的ghostscript路径

#!/bin/bash
FILENAME=`echo ${1} | sed 's/\.txt//'`
ps2pdf="C:\Program Files\ghostscript\lib\ps2pdf"
#-B 不在每页添加 '文件名 - 生成日期' 格式的首部
#--margins 设置页边距
#-p <file> 将enscript执行的结果导出成ps文件
enscript -B --margins=76::20 -p ${FILENAME}.ps ${FILENAME}.txt

#等待文件生成
until [ -f ${FILENAME}.ps ]
do
	sleep 1s
done

#转换成pdf
"${ps2pdf}" ${FILENAME}.ps ${FILENAME}.pdf

#删除中间文件
rm -f ${FILENAME}.ps

在msys2中执行以下命令,会在同目录下生成同名的pdf文件

./build_PDF.sh 3069.txt        #使用你自己的RFC文档

参考:
Linux下文本格式转pdf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值