web-dev-qa-db-ja.com

ターミナルウィンドウの高品質のスクリーンショットを撮る

私は本を​​書いていますが、ターミナルウィンドウから取得したスクリーンショットを表示しなければならない場合があります。問題は、印刷には適していないので、品質(解像度)を上げる必要があることです。より高い解像度でスクリーンショットを撮る方法はありますか?現在、Ubuntuを使用しています(HIdpiをシミュレートしてスクリーンショットを撮る方法はありますか?)。

5
user148104

実際のテキストから印刷品質の出力を取得する最良の方法は、実際に画像ではなくテキストとして表現することです。ターミナルエミュレータウィンドウの実際のスクリーンショットを撮ると、スクリーンショットの定義により、画面解像度のビットマップが得られます。

script コマンドを使用して、端末に出力されるすべての記録を作成できます。 scriptを使用することの良い点は、アプリケーションや端末からの協力を必要としないことです。ただし、次の点があります。欠点:結果のトランスクリプトには、カーソルの動きや上書きなど、アプリケーションによってそのまま送信されるエスケープシーケンスが含まれるため、通常、出力を解析するためにターミナルエミュレータを作成する必要があります。

画面でアプリケーションを実行し、そのhardcopyコマンド(C-a h)を使用できます。これにより、画面のコンテンツを含むファイル(デフォルトではhardcopy.0と呼ばれます)が生成されます。これにはマークアップ(太字、色など)は含まれていません。

Xtermには印刷機能があり、から呼び出すことができます。 Ctrl+Mouse1 (Ctrl +左クリック)メニュー。デフォルトでは、これはテキストのみを印刷しますが、ビデオ属性のエスケープシーケンスを含めるようにXtermに指示できます。

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

この効果を得るには、colorAttr=2を使用してprint関数にメニューエントリまたはキーボードショートカットを追加できます。デフォルトでは、現在表示されている画面と保存されている行が含まれています。これは、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を実行してターミナルエミュレータを取得し、メニューで[ファイル]→[PostscriptPrintBuffer]を選択して印刷します。 (低品質のビットマップを生成するプレーンな「印刷バッファ」を使用しないでください。)

プログラムシャッターをチェックしてください。いつも端末などのスクリーンショットを撮るのに使っています。解像度はとても良いようです。必要に応じて上げることもできます。

0
user274562