web-dev-qa-db-ja.com

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

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

これがプレビューまたはAdobeAcrobat Professionalを介して自動化できる場合は、それが最も理想的です。

何か案は?

4
Maiasaura

Automatorワークフローを使用してこれを行うことができます。ほとんどの場合よりも少し複雑なので、実装するときは注意してください。

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

Automatorを開き、任意のアプリケーションの入力として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を返します。 Optionsでのこのアクションの入力は無視してください。
  5. (オプション)シェルスクリプトの実行アクションを追加し、入力を渡します引数として。次のスクリプトを使用して、ファイルのベース名を抽出します。

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

  7. (オプション)変数の値の取得アクションを追加し、変数にFilePathという名前を付けます。 Optionsでのこのアクションの入力は無視してください。

  8. PDF to Imagesアクションを追加し、出力をデスクトップまたは一時ファイルを保持できる任意のフォルダーに保存します。好きな名前を付けてください。

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

    on run {input, parameters}
        return rest of input
    end run
    
  11. Combine PDF pagesアクションを追加して、appending pagesによってピースを再度まとめます。

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

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

enter image description here

4
Daniel Beck

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

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

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

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

シェルを「/ 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とそれに付随するツールのマニュアルを確認してください。

2

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
0
Konrad

別のフォーラムの誰かが開発しました いくつか コマンドラインPDFツール 、ページを削除するものを含みます。比較的簡単に見えました。唯一の可能性しゃっくりは、ワークフローでどのように機能するかを示している可能性があります。説明から、PDFが開いていて、これらのツールは閉じたファイルで(より良く)機能しているように見えます。

0
Sojourner