MediaLab Love Chapter 2

Assistance of MediaLab Love about Javascript test and more...

PDFのリネームに便利なPDF Library(Python製)

PDF管理ソフトを作ってみた | ナンクル力学系

最近PDFファイルのをダウンロードを頻繁にしていたのですが、その整理に困っていました。
何とかならないかといろいろ探したのですが、便利なものを見つけたので紹介します。

このソフトはPDFのテキスト部分を抜き出して表示することにより、簡単にファイルをタイトルと著者の名前がついたフォルダに仕分けできるというものです。

さらに、そのフォルダにはテキスト部分を抜き出したテキストファイルも生成されます。作者の方はもともとGoogle Desktopのインデックス用に開発したようです。

使い方は

  1. 起動後にPDFファイルをドラッグ&ドロップすると、最初のテキスト部分が表示されます。
  2. タイトル、著者名と思われる部分を選択します(手動入力も可)。
  3. Add PDFを押すと、「著者名;タイトル」のフォルダができ、その中にテキスト部分のファイルとリネームされたPDFが入り、元々のPDFは削除されます。

ただ私はリネーム機能があればいいので、少し改造しました。OnAddPdfの部分だけです。
フォルダを消して、リネームだけにしています。リネーム後の名前も「[著者名] タイトル」という風にしています。

    def OnAddPdf(self,event):
        # rename pdf and dir
        author = str_strip_for_path( self.author.GetValue() )
        title  = str_strip_for_path( self.title.GetValue()  )
        rename_dir = os.path.join( os.path.split(self.temp_dir)[0],
                                   author + u"; " + title )
        #rename_pdf = os.path.join( rename_dir, title + u".pdf")
        if author == u"":
            author = u" "
        rename_pdf = os.path.join( rename_dir, u"[" + author + u"] " + title + u".pdf")
        temp_pdf   = os.path.join( rename_dir,
                                   os.path.split(self.temp_pdf)[1])
        if os.path.exists(rename_dir):
            error_dlg = wx.MessageDialog(self.frame,
                                         "Existing directory:\n" + rename_dir,
                                         'Existing PDF name',
                                         wx.OK | wx.ICON_ERROR)
            error_dlg.ShowModal()
            error_dlg.Destroy()
            return False
        os.rename(self.temp_dir, rename_dir)
        os.rename(     temp_pdf, rename_pdf)
        # move and delete folder
        shutil.move(rename_pdf, PDF_LIB_DIR)
        shutil.rmtree(rename_dir)
        # clear
        os.remove(self.src_pdf)
        self.clear()
        self.src_pdf = None
        self.OnSetFocus_pdfpath("dummy")

使用する前に、PDF_LIB_DIRとPDF_TO_TXT_COMMANDを環境に合わせて書き換えてください。

私の実行環境は、

でした。

Pythonにはインデントの罠があることを忘れていたのではまってしまいましたが、何とかできました。
id:tkf41さん、ありがとうございました。