2021-08-16
Adobe, Moodle, PDF, PDFtk, ShellScript
moodleからヘッダー付のまとめpdfを作成 (v2)
moodleからフッター付のまとめpdfを作成 http://qiita.com/keitasumiya/items/7975b068f22ddb7ddb82 の変更記事です.
前記事を真面目に書きすぎて修正するのが面倒になったので, 新記事にしました.
変更点
- txtのpdf化をpandocでやる http://qiita.com/keitasumiya/items/8f4febe8d5a0b66a4b9a
- フッターではなく, ヘッダーに.
- 各種ファイルのpdf化はlibreofficeでやる
にしたことで, 少しだけ楽になりました.
問題点
- 濁点のファイル名に未対応
$のあるファイル名に未対応(もしくは)のあるファイル名に未対応
environments
mac osx 10.11 el capitanpandoc 1.17.0.3 < Compiled with texmath 0.8.6.3, highlighting-kate 0.6.2.pdftk2.02LibreOffice 5.3.3.2
tree
$ tree.├── file│ ├── Sato\ Jiro_123102_assignsubmission_file_課?\214.pdf│ ├── Yamada\ Taro_123001_assignsubmission_file_abc?\217?\201?課?\214.docx│ └── 山?\234?\ ?\211?\203\216_123023_assignsubmission_onlinetext_onlinetext.html└── students└── 987654_2017\ ?\225?\232-20170510_0831-comma_separated.csv
commands
mkdir pdfmkdir txtmkdir txt_pdfmkdir output_pdfcd students/sed -e '1d' *.csv > students.txtcat students.txt | awk -F',| ' '{print $2"_"$1"_"substr($6,2,6)}' > students_edited.txtcd ../file/ls | awk '{a=$0; gsub(" ","_",a); print "mv \""$0"\" \""a"\""}' | shls | sed 's/\./zzzz/g' | awk -F'_|zzzz| ' '{a=$0; gsub("zzzz",".",a); print "mv \""a"\" \""$1"_"$2"."$NF"\""}' | shfor i in `ls`; do echo $i" "`grep ${i%.*} ../students/students_edited.txt` | sed 's/\./ /g' |awk -F' |_' '{print "mv "$1"_"$2"."$3" "$6"_"$1$2"."$3}' | sh; done
for i in `ls | grep -v .pdf`; do soffice --headless --convert-to pdf:writer_pdf_Export $i; doneここはsoffice --headless --convert-to pdf:writer_pdf_Export *でひとまとめにしてもおkです.上記は, pdfを飛ばしたかったためです.libreofficeだと表示が変わったりするので, 確実に変換したければacrobatでの変換をオススメします.
cp *.pdf ../pdf/cd ../pdf/ls | sed 's/\./_/g' | awk -F'_| ' '{print "echo",$1"_"$2,">",$1".txt"}' | shls | grep .txt | awk '{print "mv",$0,"../txt"}' | shcd ../txtls | sed 's/\./_/g' | awk -F'_| ' '{print "pandoc",$1".txt -o",$1".pdf -V documentclass=ltjarticle --latex-engine=lualatex -V geometry:margin=0mm -V papersize:a4"}' | shls | grep .pdf | awk '{print "mv",$0,"../txt_pdf"}' | shcd ../pdfls | awk -F'_| ' '{print "pdftk",$0,"stamp ../txt_pdf/"$1".pdf","output ../output_pdf/"$1".pdf"}' | shcd ../output_pdfpdftk *.pdf output ../output.pdf
results
$ tree.├── file│ ├── ab9999_YamadaTaro.docx│ ├── ab9999_YamadaTaro.pdf│ ├── ef9990_山?\234??\211?\203\216.html│ ├── ef9990_山?\234??\211?\203\216.pdf│ └── hg9980_SatoJiro.pdf├── output.pdf├── output_pdf│ ├── ab9999.pdf│ ├── ef9990.pdf│ └── hg9980.pdf│ ├── ab9999_YamadaTaro.pdf│ ├── ef9990_山?\234??\211?\203\216.pdf│ └── hg9980_SatoJiro.pdf├── students│ ├── 987654_2017\ ?\225?\232-20170510_0831-comma_separated.csv│ ├── students.txt│ └── students_edited.txt├── txt│ ├── ab9999.txt│ ├── ef9990.txt│ └── hg9980.txt└── txt_pdf├── ab9999.pdf├── ef9990.pdf└── hg9980.pdf
acrobat版

libreoffice版

bash
$ tree.├── 1_rename.sh├── 2_mk_merge_pdf.sh├── file│ ├── Sato\ Jiro_123102_assignsubmission_file_課?\214.pdf│ ├── Yamada\ Taro_123001_assignsubmission_file_abc?\217?\201?課?\214.docx│ └── 山?\234?\ ?\211?\203\216_123023_assignsubmission_onlinetext_onlinetext.html└── students └── 987654_2017\ ?\225?\232-20170510_0831-comma_separated.csv
#!/bin/sh
mkdir pdfmkdir txtmkdir txt_pdfmkdir output_pdf
cd students/sed -e '1d' *.csv > students.txtcat students.txt | awk -F',| ' '{print $2"_"$1"_"substr($6,2,6)}' > students_edited.txt
cd ../file/ls | awk '{a=$0; gsub(" ","_",a); print "mv \""$0"\" \""a"\""}' | shls | sed 's/\./zzzz/g' | awk -F'_|zzzz| ' '{a=$0; gsub("zzzz",".",a); print "mv \""a"\" \""$1"_"$2"."$NF"\""}' | shfor i in `ls`; do echo $i" "`grep ${i%.*} ../students/students_edited.txt` | sed 's/\./ /g' |awk -F' |_' '{print "mv "$1"_"$2"."$3" "$6"_"$1$2"."$3}' | sh; done
xxxxxxxxxx#!/bin/shcd file/for i in `ls | grep -v .pdf`; do soffice --headless --convert-to pdf:writer_pdf_Export $i; done
xxxxxxxxxx#!/bin/shcd file/
cp *.pdf ../pdf/
cd ../pdf/ls | sed 's/\./_/g' | awk -F'_| ' '{print "echo",$1"_"$2,">",$1".txt"}' | shls | grep .txt | awk '{print "mv",$0,"../txt"}' | sh
cd ../txtls | sed 's/\./_/g' | awk -F'_| ' '{print "pandoc",$1".txt -o",$1".pdf -V documentclass=ltjarticle --latex-engine=lualatex -V geometry:margin=0mm -V papersize:a4"}' | shls | grep .pdf | awk '{print "mv",$0,"../txt_pdf"}' | sh
cd ../pdfls | awk -F'_| ' '{print "pdftk",$0,"stamp ../txt_pdf/"$1".pdf","output ../output_pdf/"$1".pdf"}' | sh
cd ../output_pdfpdftk *.pdf output ../output.pdf
usage
xxxxxxxxxxchmod +x 1_rename.shchmod +x 2_file2pdf.shchmod +x 3_mk_merge_pdf.sh./1_rename.shpdf化 by acrobator./2_file2pdf.sh./3_mk_merge_pdf.sh
もしくは
xxxxxxxxxx./0_all
で全部一気にやるのもおkです.
ref
前記事 http://qiita.com/keitasumiya/items/7975b068f22ddb7ddb82 複数のpdfにheaderをつける. txt等からpdfを作成する. http://qiita.com/keitasumiya/items/8f4febe8d5a0b66a4b9a make pdf with libreoffice http://qiita.com/keitasumiya/items/4b2b1f6269413225b7cd