如何将学生提交的 jpg 黑板导出合并为单个 pdf

如何将学生提交的 jpg 黑板导出合并为单个 pdf

沮丧的大学数学教授希望假期能得到一点缓解。

问题总结:

我从 Blackboard LMS 下载了我的班级(超过 100 名学生)的文件。有些学生提交多个文件,有时是非 pdf 格式。我想将每个学生提交的文件合并为该学生的单个 pdf 文件。目前我正在使用 Acrobat 手动执行此操作。这是非常乏味的。

我希望有人可以指导我或帮助我编写一个 bash 脚本,它可以更自动地神奇地组合这些文件?

详细信息

本学期我有 130 名学生。他们的最终书面作业已通过我学院的 Blackboard LMS 提交。

与 Canvas 不同,Blackboard 不允许教授指定/限制允许的文件类型或限制提交的文件数量。 Blackboard 不提供自动将文件合并为 pdf 的选项。为什么不?我不知道。

这些文件放在一个 zip 文件中,当我解压缩时,这些文件在单个文件夹中采用以下格式:

<AssignmentName>_<Student1ID>_attempt_<datestamp>.txt
<AssignmentName>_<Student1ID>_attempt_<datestamp>_<SubmittedFile1>.jpg
<AssignmentName>_<Student1ID>_attempt_<datestamp>_<SubmittedFile2>.jpg
...
<AssignmentName>_<Student2ID>_attempt_<datestamp>.txt
<AssignmentName>_<Student2ID>_attempt_<datestamp>_<SubmittedFile1>.jpeg
<AssignmentName>_<Student2ID>_attempt_<datestamp>_<SubmittedFile2>.jpeg
...
etc.

.txt 文件包含有关学生提交的一般信息。

例子

WrittenAssignment2_40012345_attempt_2021-12-13-20-36-46.txt
WrittenAssignment2_40012345_attempt_2021-12-13-20-36-46_IMG3047.jpg
WrittenAssignment2_40012345_attempt_2021-12-13-20-36-46_IMG3048.jpg
WrittenAssignment2_40012345_attempt_2021-12-13-20-36-46_IMG3049.jpg
WrittenAssignment2_40067890_attempt_2021-12-14-16-22-39.txt
WrittenAssignment2_40067890_attempt_2021-12-14-16-22-39_AssignmentDoc.pdf
WrittenAssignment2_40098765_attempt_2021-12-12-20-08-52.txt
WrittenAssignment2_40098765_attempt_2021-12-12-20-08-52_MyUploadPg1.pdf
WrittenAssignment2_40098765_attempt_2021-12-12-20-08-52_MyUploadPg2.pdf
WrittenAssignment2_40098765_attempt_2021-12-12-20-08-52_MyUploadPg3.pdf
...

许多学生确实成功提交了单个 pdf 文件,但也有很多学生没有成功。我尝试过各种社会工程技术来让他们提交单个多页 pdf,包括提交单个 pdf 的说明,或因不合规而给 0 分,但这只会产生更多头痛。

我想要的是读取 .txt 文件列表,然后将每组相关的 pdf 或 jpg 组合成一个 pdf 并将输出作为

<AssignmentName>_<Student1ID>_attempt_<datestamp>_COMBINED.pdf

这样我只需为每个学生标记一个文件。非常感谢。

答案1

好的。我讨厌人们发布自己的答案,但今天早上我花了大约 2 个小时来研究它,这就是我的想法。它很丑陋,但它确实有效。有人在 Blackboard 教学中提供其他建议吗?谢谢。

#!/bin/bash

search_dir='./TestFiles'
n=1
for entry in "$search_dir"/*.txt
do
  echo $n " Merging"

  f="$(basename "$entry" .txt)"
  for subfile in "$search_dir"/"$f"_*
  do
        echo $n " $subfile"
  done

## First usd pdftk to combine any pdfs into a merged PDF
if compgen -G "${search_dir}/${f}_*.pdf" > /dev/null; then
    echo "pattern exists!"

  pdftk "$search_dir"/"$f"_*.pdf cat output "$search_dir"/"$f"__MERGED.pdf

  echo "Merged PDFs"
fi


##If jpg or jpeg exists then combine to PDF using img2pdf
if compgen -G "${search_dir}/${f}_*.jp*" > /dev/null; then
    echo "pattern exists!"

  img2pdf "$search_dir"/"$f"_*.jp* --output "$search_dir"/"$f"__MERGED.pdf

  echo "Merged JPGs"
fi

  ((n++))

done

相关内容