对我的终端窗口进行高质量的屏幕截图

对我的终端窗口进行高质量的屏幕截图

我正在写一本书,有时我必须显示一些从终端窗口截取的屏幕截图。问题是它们不适合打印,所以我需要提高它们的质量(分辨率)。有什么办法可以以更高的分辨率截取屏幕截图吗?目前,我正在使用Ubuntu(有没有办法模拟HIdpi并截图?)。

答案1

从实际文本中获得打印质量输出的最佳方法是将其实际表示为文本,而不是图片。如果您截取终端模拟器窗口的实际屏幕截图,那么根据屏幕截图的定义,您将获得屏幕分辨率位图。

您可以使用script命令记录输出到终端的所有内容。使用的一个好处script是它不需要应用程序或终端的任何配合。但它确实有一个缺点:生成的转录本包含应用程序按原样发送的转义序列,包括光标移动、覆盖等。因此,在一般情况下,您本质上需要编写一个终端模拟器来解析其输出。

您可以在屏幕中运行该应用程序,并使用其hardcopy命令(C-a h)。这会生成一个hardcopy.0包含屏幕内容的文件(默认情况下调用)。它不包含任何标记(粗体、颜色等)。

Xterm 具有打印功能,您可以从Ctrl+ Mouse1(Ctrl+左键单击)菜单调用该功能。默认情况下,这仅打印文本,但您可以告诉 Xterm 包含视频属性的转义序列:

xterm -xrm '*printerCommand: cat' -xrm '*printModeImmediate: 2'

print您可以向该功能添加菜单项或键盘快捷键colorAttr=2来获得此效果。默认情况下,包括当前可见的屏幕和已保存的行;这可以通过printOptsImmediate资源或函数的参数来控制print。例如,要仅获取可见部分,您可以使用

xterm -xrm '*printerCommand: cat' -xrm '*printModeImmediate: 2' -xrm '*printOptsImmediate: 1'

输出位于名为 的文件中,XTerm后跟时间戳(您可以更改资源的前缀printFileImmediate)。它包含用于更改文本属性的 ANSI 转义序列,您可以将其转换为用于排版图书的任何格式(例如通过 HTML)。

也许更方便的方法是使用 Emacs 作为终端模拟器。安装打印到 PDF 文件的打印机 (cups-pdf,应该在您的发行版中可用)。将其设置为默认打印机在 Emacs 中(使用配置界面或放入(setq printer-name "pdf")您的.emacs)。运行M-x term得到终端模拟器,在菜单中选择“文件”→“Postscript打印缓冲区”进行打印。 (不要使用普通的“打印缓冲区”,这会产生低质量的位图。)

答案2

检查程序快门。我一直用它来拍摄终端等的屏幕截图。分辨率对我来说似乎非常好。如果需要,您甚至可以将其调高。

相关内容