PDF メタデータを PDF のリストに追加するスクリプトを作成しています。
私の問題は、名前に特定の文字が含まれる PDF を処理することです。私が試した例では、名前に「en ダッシュ」が含まれていましたが、将来的には確信しています (これらのファイル名は制御しません)。 ) 他にも同様の問題があります。
私はpdfrw
Python 2.7を使用しています。現在私は持っています:
from pdfrw import PdfReader,PdfWriter
from os import listdir
def get_files(pwy):
tr_files=listdir(pwy)
tr_files2=[]
for t in tr_files:
tr_files2.append(pwy+'/'+t)
return tr_files2
def add_keywords(filename,keywords):
writer=PdfWriter()
trailer=PdfReader(filename)
trailer.Info.Keywords=keywords
writer.trailer=trailer
writer.write(filename)
file_list=get_files('C:/example_folder')
for f in file_list:
add_keywords(f,'some exciting metadata!')
これは、「en ダッシュ」のないファイルに対しては正常に機能します。「ダッシュ」の付いたファイルは、これを実行したときに変更されたことを示していますが、Adobe Acrobat でメタデータを確認すると、何もありません。
これはある種のエンコーディングの問題だと確信しています。「ダッシュ」が と表示されているのでx\96
、cp1252 を使用しているに違いありません。私は Spyder 2.3.1 を使用しており、スクリプトの先頭に# - -coding: utf-8 - - があります。
私はThe Absolute Minimum Every Softward Developer Absolutely, Positively Must Know About Unicode and Character Sets and Pragmatic Unicodeを読み、一般に、入力をデコードし、残りのコードを実行したいことを知っています (上に印刷されていませんが、私は使用しますファイル名を指定してデータベースから情報を抽出し、その情報をフォーマットして、結果の文字列をメタデータに入れたい場合)、再度エンコードします。しかし、私はうまくいくものを理解することができませんでした。
解決策は次のいずれかになると思います。
[最善] エンコーディングの問題を正しく処理します。
サブフォルダーである種のバッチ ファイルを実行して、ファイルの名前をスクリプトが処理できる名前に変更し、最後に名前を逆にします (元のファイル名で終了する必要があります)。
どんな助けにも感謝します!私はうまくいったものを見つけることができませんでした。