テクノロジーのホワイトペーパー、原稿、RPGの本の間で、私は毎日たくさんのPDFを扱っています。 PDF形式は、処理されたPostScriptコードが含まれているため人気があります。 PostScriptは最新のプリンターの母国語であるため、出版社は、とにかく印刷用のファイルを作成するための時間と労力に投資したため、書籍のデジタル版をPDFとしてリリースすることがよくあります。ただし、PDFは編集可能な形式を意図したものではなく、逆の処理も可能ですが、デジタルデータがプリンターに送信される前の最後の停止となることを目的としています。それでも、PDFを調整する必要がある場合があり、その仕事で私のお気に入りのツールの1つはpdftk-javaコマンドです。
その他のLinuxリソース
- Linuxコマンドのチートシート
- 高度なLinuxコマンドのチートシート
- 無料のオンラインコース:RHELの技術概要
- Linuxネットワーキングのチートシート
- SELinuxチートシート
- Linuxの一般的なコマンドのチートシート
- Linuxコンテナとは何ですか?
- 最新のLinux記事
Linuxにpdftk-javaをインストールする
その名前が示すように、 pdftk-java
はJavaで記述されているため、Javaがインストールされている限り、すべての主要なオペレーティングシステムで動作します。
LinuxおよびmacOSユーザーは、AdoptOpenJDK.netからJavaをインストールできます。 Windowsユーザーは、RedHatのOpenJDKのWindowsビルドをインストールできます。
pdftk-java
をインストールするには :
1. pdftk-all.jarリリースをGitlabリポジトリからダウンロードし、〜/ .local / bin /
に保存します。 またはパス内の他の場所。
2. 〜/ .bashrc
を開きます お気に入りのテキストエディタで、次の行を追加します:
alias pdftk='java -jar $HOME/.local/bin/pdftk-all.jar'
3.新しいBash設定をロードします:
$ source ~/.bashrc
コマンド構文
有効なpdftk-java
の構造 コマンドはパターンに従いますが、パターンの内容には多くの柔軟性があります。従来のスタイルの端末オプションを使用しないため、構文は少し変わっていますが、練習すれば、覚えるのはそれほど難しくありません。
-
pdftk
:コマンドを呼び出すためのエイリアス - 入力ファイル:変更するPDF
- アクション:入力ファイルに対して実行したいこと
- 出力:変更したPDFファイルを保存する場所
最も複雑なのはアクション部分なので、簡単なタスクから始めます。
2つのPDFファイルを1つに結合
本の表紙がInkscapeやGIMPなどの別のアプリケーションで作成されることは珍しくありません。これは通常、ScribusなどのレイアウトアプリケーションやLibreOfficeなどのオフィススイートで行われます。レイアウトアプリケーションで2つを組み合わせることができます。 Scribusのような優れたデスクトップパブリッシャーは、画像を参照するだけで簡単にできるので、表紙が変更されたときに、レイアウトが自動的に更新されます。ただし、 pdftk-java
を使用してPDFの前に表紙を追加することもできます。 :
$ pdftk cover.pdf body.pdf \
cat \
output book.pdf
この例では、アクションは cat
です。 、連結のように Linux catコマンドと同様に、1つ以上のPDFファイルを単一のデータストリームに連結し、データストリームは output
の任意のファイルに送信されます。 引数で指定します。
PDFからページを削除する
PDFからページを正確に削除することはできませんが、保持したいページのみを含む新しいPDFを作成することはできます。
$ pdftk book.pdf \
cat 1 3-end \
output shorter-book.pdf
この例では、私の本のファイルの1ページ目、および3から最後までのすべてのページが新しいファイルに保存されます。したがって、削除したページは2ページ目です。
PDFを別々のファイルに分割する
PDFファイルを多くの異なるファイルに分割する場合もcat
を使用します アクションであり、原則としてページの削除に似ています。必要なページを新しいファイルに送信することでPDFを分割できます:
$ pdftk book.pdf \
cat 1-15 \
output part-1.pdf
$ pdftk book.pdf \
cat 16-42 \
output part-2.pdf
PDFを単一ページのファイルに分割する必要がある場合は、バースト
と呼ばれる特別なアクションがあります。 :
$ pdftk book.pdf burst
$ ls
book.pdf pg_0001.pdf pg_0002.pdf
pg_0003.pdf pg_0004.pdf pg_0005.pdf
[...]
フォームに記入
PDF形式が何年にもわたって肥大化していないと主張する人はほとんどいません。PDFファイルに時々見られる機能の1つは、入力可能なフォームです。これは、米国の税務書類、RPGキャラクターシート、オンラインの学校のワークブック、およびインタラクティブを目的としたその他のPDFファイルで確認できます。 GNOMEのEvinceやKDEのOkularなどの最新のPDFビューアは、PDFフォームに入力できますが、 pdftk-java
を使用してPDFフォームに入力することもできます。 。
まず、 generate_fdf
を使用してフォームデータを抽出する必要があります アクション。これにより、フォーム要素のIDが抽出され、テキストファイルに配置されます。
$ pdftk character-sheet.pdf \
generate_fdf \
output chsheet-form.txt
宛先ファイル(この例では、 chsheet-form.txt
)には、PDFに含まれているフォームのデータが含まれていますが、テキスト部分のみが含まれています。 AtomやGeditなどの標準のテキストエディタで編集できます。
PDFを作成している組織のワークフローを垣間見ると、見事なこともあれば厄介なこともありますが、一部のフォームには明確にラベルが付けられていますが、他のフォームには「Checkbox_001」や「Textfield-021」などのデフォルト名が付いているため、クロスする必要があります。 -テキストファイルをPDFで参照しますが、フォームに自動的に入力するスクリプトを作成している場合は、それだけの価値があります。各ラベルは/T
としてマークされています アイテムであり、次の行にスペースがあります( / V
としてマークされています) )テキスト入力用に提供されています。これは、ラベルへのコンテキストといくつかのデータが入力されたものからのスニペットです:
/T (CharacterName 2)
/V (Abaddon)
>>
<<
/T (SlotsTotal 24)
/V ()
>>
<<
/T (Hair)
/V (Brown)
>>
<<
/T (AC)
/V (15)
>>
<<
/T (Background)
/V ()
>>
<<
/T (DEXmod )
/V ()
フォームデータを入力したら、テキスト入力とPDF構造を fill_form
で組み合わせることができます。 アクション:
$ pdftk character-sheet.pdf \
fill_form chsheet-form.txt \
output completed.pdf
結果のサンプルは次のとおりです。
PDFの変更が簡単になりました
シェルスクリプトを介して大量のPDFファイルまたはPDFファイルを処理する場合、 pdftk-java
のようなツール すべてを手動で行う必要がなくなるため、非常に貴重です。 Docbookの出力からPDFを作成すると、 pdftk-java
を呼び出すMakefileになります。 任意の数のタスクに対して、ステップを忘れたり、コマンドの入力を間違えたりする可能性はなく、それに時間を費やす必要もありません。 pdftk-java
を使用する理由は他にもたくさんあります あなた自身のワークフローで、そして他の多くのもの pdftk-java
shuffle
などのアクションを含めて実行できます 、回転コード> 、
dump_data
、 update_info
、および attach_files
。 PDFファイルを頻繁に扱う場合は、 pdftk-java
を指定してください。 試してみてください。