請教automator高手

Viewing 10 posts (of 14 total)
neokao's 的頭像
neokao
使用者
Post Counts: 4
#1

 我有一些目前有不同密碼保護的pdf檔,我有所有密碼也可以正常使用。

但常會搞錯密碼,所以打算在輸入正確密碼後把目前的密碼保護移除。



我現已經發現用 preview 開這些pdf後,依提示輸入密碼打開後,用 Save a Version 的功能,然後會被提示要Duplicate,按Duplicate後就會另存一份無密碼保護的pdf。



問題是我有數百個這樣的pdf,不知道如何在用 Automator 輸入正確密碼後用跑上述workflow把所有pdf的密碼保護移除?



我在Automator / PDFs 裡的actions沒有看到 Save a Version。

Thanks

 

回應 (10)

2fool's 的頭像 2fool
使用者
Post Counts: 0
#2

幾百個好多哦,我想利用 pdftk +腳本 倒是比較容易實現你的需要,前提需先安裝pdftk(點此下載)。如下:

0、安裝pdftk(點此下載)

1、新建檔案夾,作為工作檔案夾

2、整理需移除密碼的pdf到剛建立的檔案夾中;

3、密碼列表文檔——使用TextEdit建立一新文本文檔,在其中敲入密碼(是的所有密碼,供腳本調用),每個密碼必須以 [return] 鍵結束(是的最後一個也必須return,看起來就像是一行一個),然後把此文檔以 passw_dic(全名為 passw_dic.txt)的檔案名存到工作檔案夾中;

4、建立可執行腳本(腳本請看最後)也可點此下載(選 普通下載 ,使用解壓後的檔案),把腳本(暂命名为 cl_pdfpw )存放到工作檔案夾中。

到這裡工作檔案夾大致會變成這樣(我的文檔都是顯示後綴的):

5、執行 cl_pdfpw ,完畢後會看到工作檔案夾中有一名為 output 的檔案夾,裡面即是移除密碼後的pdf 。

 

===以下為腳本(本行不屬於腳本)===========================

#!/bin/bash

source_path="${0%\/*}"
output_path="$source_path/output"
passw_dic="$source_path/passw_dic.txt"

if [ -r "$passw_dic" ]
then
    mkdir -p "$output_path"

    exec 5<&0

    cd "$source_path"
    for pdfile in *.pdf
    do
        echo "== $source_path/$pdfile"
        exec <"$passw_dic"
        while IFS= read -r passw
        do
            pdftk "${pdfile//*\/}" input_pw "$passw" output "$output_path/$pdfile" 2>/dev/null&&break
        done
        [ $? != 0 ]&&echo ' ^ error'
    done

    exec <&5 5<&-

else
    echo "dic error"
fi

===腳本結束(本行不屬於腳本)===========================

發表回應前,請先登入註冊
trd5's 的頭像 trd5
使用者
Post Counts: 0
#3

 雖然看不太懂 但發現這裡的網友還真是夠強的!!

發表回應前,請先登入註冊
neokao's 的頭像 neokao
author
Post Counts: 4
#4

 謝謝您,我到剛剛才有機會試您的方法。

但是全部都是:  ^ error 

不知道如何 troubleshoot?

發表回應前,請先登入註冊
2fool's 的頭像 2fool
使用者
Post Counts: 0
#5

抱歉,腳本裡沒有具體化出錯回饋。發生這個回饋有以下幾方面的原因,可逐一檢視+嘗試。

1、可能是pdftk没有安装妥当,或pdftk沒有支援到——在Terminal中直接敲入pdftk [return]後若反饋的是pdftk使用概述則安裝妥當,否則嘗試重新安裝。

2、無法找到匹配的密碼,包含passw_dic.txt文檔中的密碼編排有問題,以下為正確的示例:

紅色字符用於劃分实际文档的邊界及註釋並非文檔內容

|password|第一行,這裡為一個密碼

|passwo |第二行,最後有一空格也將識別為密碼的一部分

| passw|第三行,前面有一空格也將識別為密碼的一部分

| |第四行,僅為一個空格,是的這個密碼就是一個空格

|pass|第五行,這裡為一個密碼

||末行,這裡很重要!!這裡僅為上一行return下來的空置行沒有任何字符,若沒有這個,上一行將不會被識別為有效密碼

 

3、pdftk遇到無法識別的文檔——可能pdf文檔的版本過高無法識別(儘管概率很低,但無法排除)、遇到非pdf文檔(也就是是以pdf為後綴的偽pdf)

 

ps.若想在Terminal中中斷當前的執行可按 [control]+[c]

發表回應前,請先登入註冊
mackarma's 的頭像 mackarma
使用者
Post Counts: 28
#6

 看了獲益良多,感謝。

發表回應前,請先登入註冊
neokao's 的頭像 neokao
author
Post Counts: 4
#7

我在terminal下打 pdftk 後出現以下:
SYNOPSIS
pdftk
[ input_pw ]
[ ]
[ output ]
[ encrypt_40bit | encrypt_128bit ]
[ allow
]
[ owner_pw ]
[ user_pw ]
[ flatten ] [ compress | uncompress ]
[ keep_first_id | keep_final_id ] [ drop_xfa ]
[ verbose ] [ dont_ask | do_ask ]
Where:
may be empty, or:
[ cat | shuffle | burst |
generate_fdf | fill_form |
background | multibackground |
stamp | multistamp |
dump_data | dump_data_utf8 |
dump_data_fields | dump_data_fields_utf8 |
update_info | update_info_utf8 |
attach_files | unpack_files ]

For Complete Help: pdftk --help

看起來pdftk應該ok,我確認過密碼檔也ok(目前只放一個密碼做測試),我用過該密碼用preview測試pdf檔也都可以開啟。
但還是^error?

發表回應前,請先登入註冊
2fool's 的頭像 2fool
使用者
Post Counts: 0
#8

那很可能是密码档缺少了最後那一下的[return],因為我測試時也發生過這種狀況。

你若方便可以把測試pdf+密碼發送到我這邊來測試。email 稍候PM給你。

發表回應前,請先登入註冊
neokao's 的頭像 neokao
author
Post Counts: 4
#9

 我確認過密碼檔有[enter],還是不行,檔案已email 給您,謝謝。

發表回應前,請先登入註冊
2fool's 的頭像 2fool
使用者
Post Counts: 0
#10

查看了你的pdf檔原來是AES加密,但pdftk没有支援到,所以出错。

搜寻到一款替换程式 qpdf ,但其僅提供原碼,安裝起來會不便,為了方便起見我想通過軟體包管理器 MacPorts 來安裝會比較順暢(好吧,是有點殺雞用牛刀之感XD)。

以下為整合結果:

 

一、下載此檔 cl_pdfpw.zip ,解壓後按需使用裡面的可執行腳本

解壓出檔案夾的使用註解:

tools/

install_MacPorts&qpdf      --執行則安裝 MacPorts,順帶把 qpdf 一併安裝。由於是在線安裝配置的,會比較慢。

uninstall_MacPorts            --若覺得 MacPorts 這把牛刀太重了,在使用完後可執行這個移除。

uninstall_pdftk                   --執行這個可移除之前安裝的 pdftk

cl_pdfpw                    --這個用於替換之前的同名檔案,用法一致

 

二、關鍵點

1、執行 install_MacPorts&qpdf 安裝軟體 (留意執行過程中可能會提示你輸入用戶密碼,而密碼的輸入是不顯示的)

2、替換原來的 cl_pdfpw,按原來的方法整理後執行之(是的除了要安裝一個東東外其它基本沒變)

 

 

Ps.解壓出的可執行檔皆可通過 TextEdit 打開來查看

Ps2. MacPorts 是一款Mac命令行下基與源代碼的軟體包管理器,wiki下你會發現Mac下會有如此之多強大的免費軟體。

發表回應前,請先登入註冊
neokao's 的頭像 neokao
author
Post Counts: 4
#11

qpdf安裝有問題: configure: error: in `/Users/neokao/.cache/MacPorts-2.1.1': configure: error: no acceptable C compiler found in $PATH See `config.log' for more details logout 謝謝您。

發表回應前,請先登入註冊

頁面

Viewing 10 posts (of 14 total)