Package: clabeler
Crowdmark LabelerThis is a Python package which automatically labels exams outputted by Crowdmark using the names of students provided in apandasdataframe. This script depends onpdfrw,reportlab, andpandas. This is designed for assessments which have the "Enable automated matching" option enabled when booklets are generated in Crowdmark. The script will fill the name box that looks like this:to make it look like thisEnviromentYou can install this package with:pip install clabelerCLIThis package can be called from the command line using theclabelercommand. It has three required arguments and several optional arguments to set the output and to allow for different column labels in the inputted data.usage: clabeler [-h] [-O OUTPUT] [--colfname COLFNAME] [--collname COLLNAME] [--colid COLID] labels booklets pagecount

Label exam PDFs from Crowdmark with names of students.

positional arguments:
  labels               path to a csv containing labels
  booklets             path to PDF of unlabeled exams
  pagecount            number of pages per exam

optional arguments:
  -h, --help           show this help message and exit
  -O OUTPUT            path to output unlabeled exams
  --colfname COLFNAME  column label for student's first name
  --collname COLLNAME  column label for student's last name
  --colid COLID        column label for student IDFunctionIn addition to the command line interface, this package defines the functionlabelbookletsdefined in the following way:deflabelbooklets(labels,pagecount,booklets="booklets.pdf",output="labeled_booklets.pdf",colfname="fname",collname="lname",colid="netID"):the function takes the same arguments:labels:A pandas dataframe containing the student names and netIDspagecount:The number of pages in each exambooklets:The path to the exam booklets generated by Crowdmark; defaults to "booklets.pdf" in the working directoryoutput:The path to output the labeled booklets; defaults to "labeled_booklets.pdf" in the working directorycolfname:The name of your student first name column in your labels dataframe; defaults to "fname"collname:The name of your student last name column in your labels dataframe; defaults to "lname"colid:The name of your student ID column in your labels dataframe; defaults to "netID"ExampleAn example is provided in the example folder. It contains:an excel spreadsheet of fake names calledlabels.xlsxand an identical tab delimited file calledlabels.txta fake exam with a Crowdmark name box calledbooklets.pdfa script that calls thelabelbookletsfunction calledexample.pyThe output of this example is the includedlabeled_booklets.pdfLicenseCrowdmark Labeler is licensed under theMIT License.FAQWhy does the inserted text look different/bad on my device?The script uses the font "Courier" when inserting text. While all versions of Acrobat reader, Windows, and Mac OSX have this font, not all readers and systems do (eg. Android). This is not a limitation unless you intend to print with a device that does not support this font.Does this support documents with A4, legal, etc. paper?No, it only supports letter paper at the moment. It should be easy to add other formats. Please create an issue (or pull request) if you would like to see any other paper size supported.