PDFへの画像

reportlab.pdfgenインポートキャンバスから
reportlab.lib.units輸入インチから、センチ
reportlab.lib.pagesizesからは手紙インポート
reportlab.platypusインポートSimpleDocTemplateから、段落、画像、改ページを
A4、A3、A2、A1をインポートreportlab.lib.pagesizesから、法的、風景
reportlab.lib.utilsからインポートするImageReaderの
輸入PIL.Image、PIL.ExifTags 
OS輸入LISTDIRのから
輸入OS、再
輸入時
reportlab.lib.units輸入インチから

デフimg_search(mypathで、ファイル名):の
    OSでリストに対して.listdir(mypathで):
        パス= os.path.join(mypathで、リスト)
        os.path.isfile(パス)の場合:
            表現= R '+ \ [\ W](JPG | PNG | JPEG)$。'
            もしre.search(式パス、re.IGNORECASE):
                filenames.append(パス)
        ELIFのos.path.isdir(パス):
            img_search(パス、ファイル名)


:DEF img_search1(mypathで、ファイル名)
    os.listdirでリストの(mypathで):
        パス= os.path.join(mypathで、リスト)
        os.path.isfile(パス)場合:
            = path.split( ' ')
            [-1] [' JPG'で、「PNG場合」、 'JPEG']:
                filenames.append(パス)
        ELIFのos.path.isdir(パス):
            img_search1(パス、ファイル名)


デフrotate_img_to_proper(画像):
    試す:
        #画像= Image.open(ファイル名) 
        もしはhasattr(画像、 '_getexif'):JPEGファイルにのみ存在#
            PIL.ExifTags.TAGS.keysの配向のための() :
                PIL.ExifTags.TAGSなら[配向] == '方向':
                    ブレーク
            なしEXIFデータの場合、E = image._getexif()#は、Noneを返す
            :eがNoneでない場合は
                #1 log.info( 'EXIFデータが見つかりました:%のR'は、 E)
                EXIF =辞書(e.items())
                方位= EXIF [配向] 
                #プリント( 'が見つかり、'方向)

                であれば、配向== 3:
                    画像= image.transpose(Image.ROTATE_180)
                ELIF配向== 6:
                    画像= image.transpose(Image.ROTATE_270) 
    :除く
        パスROTATE_270) 
                のelif姿勢== 8:
                    画像= image.rotate(90、= Trueの拡大)
    リターン画像


メイン(src_folder =なし)DEFを:
    output_file_nameに= 'out.pdf' 
    #save_file_name = 'ex.pdf' 
    #doc = SimpleDocTemplate(save_file_name、ページサイズ= A1、
    #rightMargin = 72、LEFTMARGIN = 72、
    #TOPMARGIN = 72、bottomMargin = 18)
    imgDoc = canvas.Canvas(output_file_nameに)#ページサイズ=レター
    imgDoc.setPageSize(A4)
    document_width、document_height = A4 
    src_folderがNone場合:mypathで=入力( '入力画像フォルダください: ')
    他:mypathで= src_folder 
    ファイル名= [] 
    スタート= time.clock()
    img_search(mypathで、ファイル名) 
    端= time.clock()
    印刷( 'ファイルコストの時間を見つける:'、エンドスタート、 'ファイルを検索:'(ファイル名)LEN)
    ファイル名にfに対する#: プリント(f)は
    、ファイル名の画像について:
        試してみてください。
            IMAGE_FILE = PIL.Image.open (画像)
            IMAGE_FILE = rotate_img_to_proper(IMAGE_FILE)

            IMAGE_WIDTH、IMAGE_HEIGHT = image_file.size 
            プリント( 'IMGサイズ:'、image_file.size)
            でない場合(IMAGE_WIDTH> 0とIMAGE_HEIGHT> 0):
                上げる例外
            image_aspect = IMAGE_HEIGHT /フロート(IMAGE_WIDTH)
            概要で画像のdemensionsを#Determins 
            print_width = document_width
            print_height = document_width * image_aspectの
            imgDoc.drawImage(ImageReaderの(IMAGE_FILE)、document_width-print_width、
                         document_height-print_height、print_width =幅、
                             高さ= print_height、preserveAspectRatio =真)は
            、我々は新しいページたいReportLabの#inform 
            (imgDoc.showPage)を
        eと例外を除い:
            プリント( 'エラー:'、E、画像)
    os.chdir(save_path)
    imgDoc.save()
    印刷( '完了')


であれば__name__ == '__main__':
    save_pathは=「C:\\ユーザー\\管理者\\デスクトップ\\ TK」
    メイン(src_folder = R'C:\ユーザーは、管理者\デスクトップ\テックスを\ ');

  

おすすめ

転載: www.cnblogs.com/chargeworld/p/11520279.html