如何設定 OSX 服務來刪除 PDF 的首頁?

如何設定 OSX 服務來刪除 PDF 的首頁?

我經常收到 PDF 文件,其中第一頁要么是空的,要么只是我沒有用的封面頁。您能為我建議一種快速有效的方法(Applescript、Service 或???)來刪除第一頁並儲存檔案嗎?

如果這可以透過 Preview 或 Adob​​e Acrobat Professional 自動化,那就是最理想的。

有任何想法嗎?

答案1

您可以使用自動機工作流程。它比大多數都複雜一點,所以在實現時要小心。

這篇文章包含版本:一個較短並將輸出儲存Processed PDF File.pdf在桌面上,另一個較長並將檔案儲存為(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. 重新命名查找器項目action 可以為這些檔案提供一個比 eg 更好的檔名zOpY3O.pdf,eg 是為合併的 PDF 檔案自動指派的檔案名稱。使用例如名稱 單一項目並給它一個基本名稱Processed PDF File.如果您選擇使用較長的變體,請FileName從變數清單拖曳到文字字段,然後(Edited)在其前面新增。現在我們已經基本完成了,只需要清理一下。
  14. 添加取得變數的值動作並得到 的值TempFiles。忽略此操作的輸入選項
  15. 添加一個將查找器項目移至廢紙簍刪除臨時單頁檔案的操作。

以下是已完成的較長版本工作流程的螢幕截圖:

在此輸入影像描述

答案2

使用前述的命令列 PDF 工具,我能夠編譯一個執行以下操作的工作流程:

  1. 取得輸入的 PDF(或多個 PDF)並產生減去第一頁的新文件
  2. 將原始 PDF 移至垃圾箱
  3. 重新命名新文件以匹配原始文件

首先我照著說明安裝了PDF工具。本例中的關鍵工具是 pdfsplit。

在 Automator 中,我建立了一項新服務來接收 Finder 中選定的 PDF 檔案。

我新增了“運行 Shell 腳本”操作,其中 shell 為“/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

我想我可以在 shell 腳本中完成所有操作,包括刪除和重新命名。但 rm 命令可能很危險,我更喜歡將原始文件移至垃圾箱。

可以修改腳本以執行更多操作,而不僅僅是刪除 x 個頁面。例如,我開發了一個類似的程式來大量裁剪和合併 PDF。請查看 pdfsplit 手冊及其隨附工具以獲取更多資訊。

答案3

另一個論壇有人開發了一些命令列 PDF 工具,包括刪除頁面的功能。看起來相對容易。唯一可能出現的問題可能是它如何與您的工作流程配合使用。從您的描述來看,您似乎可以在 PDF 開啟時使用一些工具,而這些工具似乎可以在關閉的文件中使用(更好)。

答案4

只是為了添加 Joseph Yannielli 提供的答案,對於決定執行 shell 腳本的人來說,在腳本中包含刪除和重命名檔案的命令可能更容易,而不是透過 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

相關內容