Linux命令行打印PDF:求enscript -2lr的现代替代方案
嘿,我之前也找过替代enscript的现代PDF工具,刚好能解决你的需求!下面这几个Linux命令行工具都能实现单页打印两页文本(单列)的效果,兼顾可读性和纸张节约,而且都是现代PDF工作流里常用的:
替代enscript的现代Linux命令行PDF打印方案
1. pdfjam(最推荐,灵活可控)
pdfjam是专门折腾PDF排版的工具,基于LaTeX,缩印、合并、调整页面都不在话下,参数配置也很直观:
- 第一步:先把文本转成单页PDF(用pandoc就行,绝大多数Linux发行版都能安装):
pandoc myTextFile.txt -o single_pages.pdf - 第二步:用pdfjam把两页内容缩印到单张纸,单列纵向排列,还能指定纸张规格:
给你拆解下关键参数:pdfjam --nup 1x2 --no-landscape --paper letterpaper single_pages.pdf -o two_up_single_side.pdf--nup 1x2:设置为1列2行,刚好把两页文本上下排列在一张纸上--no-landscape:保持纸张纵向(工具默认会转横向,咱们不需要这个)--paper letterpaper:要A4纸的话直接换成a4paper就行
生成的two_up_single_side.pdf直接打印就符合你的需求了,可读性和纸张利用率都拉满。
2. pandoc一步到位(适合高频使用)
如果你不想分两步操作,pandoc可以结合自定义LaTeX模板直接生成缩印PDF,前提是你系统装了TeXLive或者MikTeX这类LaTeX环境:
- 先写个简单的LaTeX模板(比如命名为
two_up.latex),内容如下:\documentclass{article} \usepackage{pdfpages} \usepackage{geometry} $for(geometry)$\geometry{$geometry$}$endfor$ \begin{document} \includepdf[nup=1x2,pages=-]{$inputfile$} \end{document} - 然后用pandoc调用模板生成PDF:
pandoc myTextFile.txt -V papersize=letter -V geometry:"margin=1in" --pdf-engine=xelatex -o two_up.pdf --template=two_up.latex
这个模板可以复用,以后要处理其他文本文件直接改文件名就行,非常方便。
3. 老工具新用法(enscript + ps2pdf)
如果你还是习惯enscript的排版风格,不想学新工具,那直接把enscript的输出转成PDF就行,完美衔接你之前的操作:
enscript -2r myTextFile.txt -o - | ps2pdf - two_up.pdf
这里-o -是让enscript把内容输出到标准输出,然后通过管道传给ps2pdf转换成PDF,最后保存为two_up.pdf,完全符合你的需求,零学习成本。
4. txt2pdf + pdfnup(轻量快捷)
txt2pdf是专门把文本转PDF的轻量工具,配合pdfnup(和pdfjam是同一系列)也能实现效果:
- 先安装txt2pdf(不同发行版命令略有不同):
sudo apt install txt2pdf # Debian/Ubuntu系 sudo dnf install txt2pdf # Fedora/RHEL系 - 把文本转成单页PDF:
txt2pdf -p letter myTextFile.txt -o single_pages.pdf - 缩印成两页合一的PDF:
pdfnup --nup 1x2 --paper letter single_pages.pdf -o two_up.pdf
最后,生成的PDF都可以用lp命令直接打印,比如:
lp two_up_single_side.pdf
如果有多个打印机,指定打印机名称就行:
lp -d your_printer_name two_up_single_side.pdf
内容的提问来源于stack exchange,提问作者Harvey King
相关产品推荐
相关产品推荐

