MS Forms/Google Formsに提出された画像ファイルをPDFに一括変換する
MS Formsにアップロードされた画像ファイル形式
- MS Formsを通してアップロードされるファイルは以下のようになる.
- ファイル名_学生の姓名.拡張子.という形式になっている.人によっては名姓になっていることもあるので注意
- 0FBABF78-CCCB-4958-A17B-61BC43EF27D3_工大 太郎.jpeg
- 0FBABF78-CCCB-4958-A17B-61BC43EF27D3_工大 太郎 1.jpeg
- フォームで提出するフォーマットとして画像を指定していれば,jpg,png,pdfなどが存在する.ファイル名部分は学生に依存するので,仮に同名のファイルが提出されていた場合,名前 1.jpegのように通し番号がつくっぽい
- test_工大 花子.png
- これを以下のように学生番号_通し番号.pdfなファイルに変換したい
- X0111_1.pdf
- X0111_2.pdf
- X0123_1.pdf
Google Formsにアップロードされる画像ファイルの形式
- Google Formsを通してアップロードされるファイルは以下のようになる.
- ファイル名 - 学生の姓名.拡張子.という形式になっている.学生によっては名姓になっていることもあるので注意
- 0FBABF78-CCCB-4958-A17B-61BC43EF27D3 - 工大太郎.jpeg
- 0FBABF78-CCCB-4958-A17B-61BC43EF27D3 - 工大太郎(1).jpeg
- 同名のファイルを同じ学生がアップロードすると2つ目から(1)などが後ろにつく
- test_工大花子.png
- これを以下のように学生番号_通し番号.pdfなファイルに変換したい
- X0111_1.pdf
- X0111_2.pdf
- X0123_1.pdf
できることとできないこと
- MS FormsやGoogle Formsのファイルアップロード機能を利用して提出された画像ファイルを名簿情報に基づいて学生番号_通し番号.pdfのようなPDFに個別に変換することができる
- 画像ファイル以外のPDF変換はできない
- 画像ファイルで対応しているのはjpg,pngだけ.heicなどその他のフォーマットには未対応
- docx,pptx,htmlなどはren_*file2sid.pyでファイル名を変換してからAcrobatで一括変換を想定
- Acrobat起動->ファイル->作成->複数のPDFファイルを作成
できなかったけどできるようになったこと
- 元のファイルで姓名がひっくり返っていた
- 姓名と名姓の両パターンで検索を実施するように修正
- 同名のファイルを同じ学生が一度にアップロードしている場合があった
- ファイル名末尾に" 1.jpg"や"(1).jpg"みたいに通し番号がつくっぽいのでファイル名から姓名を取り出すときに数字を正規表現を利用して削除した
- Value errorなどで変換に失敗することがある->プログラムを再実行すると変換に成功する(今の所ほぼ100%再実行で成功している.原因不明).
- ○に4のような機種依存文字がファイル名に含まれているとcsv出力時にcp932だと失敗する
- 出力時の文字コードをutf8に変更
準備
- 以下のようなフォーマットのcsvファイルを作成する
- 姓名の間に空白が含まれている必要がある
- ファイルはExcelからcsv出力されたcp932の文字コードであること
- このプログラムでは変換したファイル名を管理するためのcsvを出力するが,そちらはutf8で出力する(機種依存文字がファイル名に使われていることがあるため)
sid | name |
---|---|
B88000 | 工大 太郎 |
B87999 | 工大 花子 |
- アップロードされた画像ファイルを特定のフォルダにまとめてほりこむ
MS Formsに提出された画像ファイルのPDF変換
ファイル名の変更(ren_msfile2sid.py)
- https://github.com/igaki/renconpdf/blob/master/ren_msfile2sid.py
- 準備で作成した番号と氏名が書かれたcsvファイル名,画像ファイルがあるフォルダ名を指定してプログラムを実行する
-
python ren_msfile2sid.py cpu2020.csv exama
のように実行する - 第1引数が名簿のcsvファイル名,第2引数が画像等のファイルが格納されたディレクトリ名
-
- 画像ファイルがあるフォルダにあるファイルが指定したフォルダ/output に移動される
- 画像ファイルがあるフォルダ名.csvファイルに,どの学生がどのファイルを提出し,どうリネームされたかが記述される
PDFファイルへの変更(con_sid2pdf.py)
- https://github.com/igaki/renconpdf/blob/master/con_sid2pdf.py
- ren_....pyで指定した第2引数(画像フォルダ名)と同じものを第1引数に指定して実行する
例python consid2pdf.py cpuexama
を実行する -
画像フォルダ名/output
にある学生番号_通し番号.jpgなどの画像データがcompleteに移動され,同時にpdf化されたファイルがpdfフォルダに作成される - 変換に失敗した画像データがある場合はoutputに残る.その場合,con_sid2pdf.pyを再実行すると正しく変換されることが有る.
Google Formsに提出された画像ファイルのPDF変換
ファイル名の変更(ren_gfile2sid.py)
- https://github.com/igaki/renconpdf/blob/master/ren_gfile2sid.py
- 準備で作成した学生番号と学生氏名が書かれたcsvファイル名,画像ファイルがあるフォルダ名を指定してプログラムを実行する
-
python ren_gfile2sid.py se2_2020.csv exama
のように実行する - 第1引数が学生名簿のcsvファイル名,第2引数が画像等のファイルが格納されたディレクトリ名
-
- 画像ファイルがあるフォルダにあるファイルが指定したフォルダ/output に移動される
- 画像ファイルがあるフォルダ名.csvファイルに,どの学生がどのファイルを提出し,どうリネームされたかが記述される
PDFファイルへの変更(con_sid2pdf.py)
- MS Forms側で利用したものと同じ