PDF の最初のページを削除するように OSX サービスを設定するにはどうすればよいですか?

PDF の最初のページを削除するように OSX サービスを設定するにはどうすればよいですか?

最初のページが空白か、まったく役に立たない表紙だけの PDF ファイルを頻繁に受け取ります。最初のページだけを削除してファイルを保存する、迅速で効率的な方法 (Applescript、サービス、または???) を教えていただけますか?

これを Preview または Adob​​e Acrobat Professional 経由で自動化できれば、それが最も理想的です。

何か案は?

答え1

これは、オートメーターワークフロー。他のものより少し複雑なので、実装する際には注意してください。

この投稿にはProcessed PDF File.pdfバージョン: 1つは短く、デスクトップに出力を保存します。もう1つは長く、ファイルを次のように保存します。(Edited)InputFileName.pdf同じディレクトリにあります。長いバージョンに必要な手順は、(オプション)

開けるオートメーター新規作成を選択しますサービス受け取るPDFファイル入力としてあらゆるアプリケーション

  1. (オプション)追加変数の値を設定するアクションを実行し、変数に名前を付けますFilePath
  2. (オプション)追加AppleScriptを実行するアクションを実行し、次のスクリプト コードを使用して、ファイルが保存されているフォルダー名を取得します。

    on run {input, parameters}
        tell application "Finder" to return (container of first item of input) as alias
    end run
    
  3. (オプション)追加変数の値を設定するアクションを実行し、変数に名前を付けますFolder

  4. (オプション)追加変数の値を取得するアクションを実行し、変数を返しますFilePath。このアクションの入力は無視されます。オプション
  5. (オプション)追加シェルスクリプトを実行するアクションとパス入力引数としてファイルのベース名を抽出するには、次のスクリプトを使用します。

    echo "$( basename "$1" )"
    
  6. (オプション)追加変数の値を設定するアクションを実行し、変数に名前を付けますFileName

  7. (オプション)追加変数の値を取得するアクションを実行し、変数に名前を付けますFilePath。このアクションの入力は無視されます。オプション

  8. 追加PDFから画像へアクションを実行し、出力をデスクトップまたは一時ファイルを保持できる任意のフォルダーに保存します。任意の名前を付けることができます。

  9. 追加変数の値を設定するアクションを実行すると、後でどの一時ファイルを削除するかがわかります。変数に名前を付けますTempFiles
  10. 追加AppleScriptを実行するアクションを実行し、次のスクリプト コードを使用して一時ファイルのリストをフィルター処理します (ここで最初のページを削除します)。

    on run {input, parameters}
        return rest of input
    end run
    
  11. 追加PDFページを結合する再びピースをまとめる行動によってページの追加

  12. 使用ファインダーアイテムを移動する結果のファイル (再結合された PDF) をデスクトップまたは任意のフォルダーに移動するアクション。入力ファイルの親フォルダーを計算することにした場合は、ここで変数への参照をドラッグ アンド ドロップしますFolder
  13. Finder項目の名前を変更するアクションは、結合されたPDFファイルに自動的に割り当てられるファイル名であるegよりも適切なファイル名をこれらのファイルに与えることができますzOpY3O.pdf。egを使用してください。名前 単一項目ベース名を にしますProcessed PDF File。長いバージョンを使用する場合は、FileName変数リストからテキスト フィールドにドラッグし、(Edited)その直前に追加します。これで基本的に完了です。クリーンアップするだけです。
  14. 追加する変数の値を取得するアクションを実行して値を取得しますTempFiles。このアクションの入力は無視されます。オプション
  15. 追加Finder 項目をゴミ箱に移動する一時的な単一ページ ファイルを削除するアクション。

以下は、完成したワークフローの長いバージョンのスクリーンショットです。

ここに画像の説明を入力してください

答え2

前述のコマンドライン PDF ツール、次のことを実行するワークフローをコンパイルできました。

  1. 入力PDF(またはPDF複数)を取得し、最初のページを除いた新しいファイルを生成します。
  2. 元のPDFをゴミ箱に移動する
  3. 新しいファイルの名前を元のファイルと一致するように変更します

まず、指示に従って PDF ツールをインストールしました。この場合の重要なツールは pdfsplit です。

Automator で、Finder で選択した PDF ファイルを受信する新しいサービスを作成しました。

「シェル スクリプトの実行」アクションを追加し、シェルを「/bin/bash」にし、「入力を渡す」を「引数として」に設定しました。次に、次の簡単なスクリプトを作成しました。

for f in "$@"
do
        /usr/local/bin/pdfsplit "$f" 2- > "$f".tmp
done

元のファイルに対して「Finder 項目をゴミ箱に移動」アクションを追加し、新しいファイルから .tmp 拡張子を削除する「テキストの置換」アクションを追加しました。

フォルダー入力を使用してプロセスを実行する場合、スクリプトは次のようになります。

cd "$@"
for f in *pdf
do
        /usr/local/bin/pdfsplit "$f" 2- > "$f".tmp
done

削除や名前の変更など、すべてをシェル スクリプトで実行できたと思います。ただし、rm コマンドは危険なので、代わりに元のファイルをゴミ箱に移動することをお勧めします。

このスクリプトは、単に x ページ数を削除する以上の操作を行うように変更できます。たとえば、PDF を一括で切り取って結合する同様のプログラムを開発しました。詳細については、pdfsplit と付属ツールのマニュアルを参照してください。

答え3

別のフォーラムの誰かが開発したいくつかのコマンドライン PDF ツールこれにはページを削除するものも含まれています。比較的簡単そうに見えます。唯一の問題は、ワークフローでの動作方法かもしれません。説明からすると、PDF が開いているときに機能するものを探しているようですが、これらのツールはファイルを閉じた状態でも (より適切に) 機能するようです。

答え4

Joseph Yannielli の回答に付け加えると、シェル スクリプトを実行することにした人にとっては、Automator 経由で個別のアクションを追加するよりも、スクリプトにファイルを削除して名前を変更するコマンドを含める方が簡単かもしれません。

for f in "$@"
do
    /usr/local/bin/pdfsplit "$f" 2- > "$f".tmp
    rm "$f"
    mv "$f".tmp "$f"
done

コマンドラインPDFツールのインストールに関しては、自家製:

brew install pdf-tools

関連情報