JPGとバックコンバータ



動機
よく、私はどちらかで同じ書類を提出しなければなりません.pdf or .jpg/jpeg 形式.私はオンライン変換サイトを使用して2つの形式の間で変換します.最近の懸念は私の心の中に残っていた理由私は雲に私の個人文書をアップロードし、私はちょうどプロセスが私のデバイス上でローカルに滞在するコンバータを作成する必要はありません.したがって、私は変換を行うプログラムを作ることを決めた.

ステップは

-ステップ1 :開発用のフレームワーク/言語を決定する
私は、これを文書化されたステップとして含めたいです:理由は短いです:私は私の日々の生活の中でウェブ開発をします、それで、私はこの小さいプログラムをPythonでコーディングすることがさわやかであると決めました.

-ステップ2 :パッケージの検索
あなたは自分で変換を実装するか、よく維持され、良いダウンロード数を持つパッケージを探すことができます.私は、変換のために以下のパッケージを選びました.

  • pdf2image PDFからJPGへの変換.

  • img2pdf JPG/JPEGのPDF変換に.

  • -ステップ3 : make GUI
    使用するPAGE スタティックGUIを構築するには.これは非常にシンプルで使いやすいドラッグアンドドロップGUIジェネレータです.私は2つのguisを作りました、コンバータのための1と成功メッセージを示すための他.また、すべての1つを扱うことができます.


    注:Tkinterアプリケーション別のOSで異なって見える.私はWindowsを使用します.すべてのプラットフォーム間で同じアプリケーションを作成する場合は、条件付きレイアウトを追加できます.
    ページからスクリプトを生成した後、GUIconversion_mode :
  • If the conversion_mode == 'jpg' , 次に、それに応じてテキストを設定し、出力PDFファイルの名前を入力するための入力フィールドを表示します.
  • 同様に、conversion_mode == 'pdf' , 次に、関連するテキストの変更を行います.出力JPGとしてエントリフィールドを追加する必要はありませんが、PDFの名前にインデックスが続きます.

  • -ステップ4 :ファイルをアップロードする
    私はTkinterのfiledialog ファイルをアップロードするモジュール.設定しますinitialdir スクリプトが置かれるディレクトリに.curr_dir = os.getcwd()

  • PDFファイルをアップロードしますfiledialog.askopenfilename を使用する.
  • filedialog.askopenfilename(initialdir=curr_dir, title="Select PDF",
                                       filetypes=[("PDF File", "*.pdf")])
    

  • JPGファイルをアップロードすることができますfiledialog.askopenfilenames を使用する.
  • filedialog.askopenfilenames(initialdir=curr_dir, title="Select JPG(s)",
                filetypes=[("JPG File", "*.jpeg *.jpg")
    

    ステップ5 : JPGからPDFへの変換
    JPG/JPEGファイルを単一のPDFに変換するにはfile_paths , これはimg 2 pdfのイメージファイルパスのリストですconvert 関数.
    import img2pdf
    
    with open(name+".pdf", "wb+") as file:
            file.write(img2pdf.convert(*file_paths))
    
    name 出力PDF nameはユーザによって提供されます.

    ステップ6 : PDFをjpgに変換します.
    使うpdf2image , ファーストダウンロードpoppler あなたのシステムで.( Instructions ). 私はWindowsユーザーであるので、私はPopplerbin/ スクリプトと同じディレクトリのフォルダー.poppler_path=r"./bin" if (sys.platform == "win32" or sys.platform == "cygwin") else None作成されたイメージファイルはoutput_folder . メモリエラーを避けるためにpaths_only=True それでconvert_from_path(...) PILイメージオブジェクトを返す必要はありません.
    from pdf2image import convert_from_path
    from pdf2image.exceptions import (
        PDFInfoNotInstalledError,
        PDFPageCountError,
        PDFSyntaxError
    )
    
    convert_from_path(
            file_path,
            output_folder=output_folder_path,
            output_file=output_folder_name,
            fmt="jpg",
            paths_only=True,
            poppler_path=r"./bin" if (sys.platform == "win32" or sys.platform == "cygwin") else None
    )
    
    この関数はchunkで実行できます.see ) PDFファイルが何百ものページを持っているか、イメージオブジェクトで働きたいならば、OOMエラーに遭遇することについて心配しています.
    変換後、ユーザーが別のインターフェイスに成功メッセージが表示されますシフトします.
    からの完全なインプリメンテーションを得てくださいGitHub .
    だから私はPDFを作った⇌ 私の要件を満たしている今、私はセキュリティ/プライバシーについて心配する必要はありません.
    共有あなたの考え.フィードバックは常に歓迎です:)