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:\ユーザーは、管理者\デスクトップ\テックスを\ ');