Skip to main content

Weekly schedule typesetter

Project description

Project Status: Active — The project has reached a stable, usable state and is being actively developed. MIT License

GitHub | PyPI | Issues | Changelog

pdfschedule is a Python 3 script for creating PDF documents showing one’s weekly schedule of events.


pdfschedule requires Python 3.6 or higher. Just use pip for Python 3 (You have pip, right?) to install pdfschedule and its dependencies:

python3 -m pip install pdfschedule


pdfschedule [<OPTIONS>] [<infile> [<outfile>]]

Input — formatted as described below under “Input Format” — is read from <infile> (defaulting to standard input), and the resulting PDF is written to <outfile> (defaulting to <infile> with its file extension changed to .pdf, or to standard output if <infile> is standard input).


-C, --color Color the event boxes various colors instead of just grey.
-F FONT, --font FONT
 Typeset text in the given font. FONT must be either the name of a builtin PostScript font or the path to a .ttf file. By default, text is typeset in Helvetica.
-f SIZE, --font-size SIZE
 Set the size of the font used for event information to SIZE (default 10). The names of the days of the week are typeset at SIZE * 1.2; the times of day are typeset at SIZE / 1.2.
-M, --start-monday
 Use Monday as the first day of the week instead of Sunday.
-p, --portrait Typeset the table in “portrait mode,” i.e., with the shorter side of the paper as the width. The default is to typeset it in “landscape mode.”
-s FACTOR, --scale FACTOR
 Divide the length of each side of the table by FACTOR. Without this option, the table fills the whole page, except for a one-inch margin on each side.
-T, --no-times Do not show the times for each hour line.
--no-weekends Do not show Sunday and Saturday.

Input Format

Input is a YAML list of dictionaries. Each dictionary represents a single weekly event and must contain the following keys:

(optional) The (possibly multiline) text to display in the event’s box on the schedule

The days of the week on which the event occurs, specified as a string of one or more of the following abbreviations in any order (optionally with intervening whitespace and/or commas):

Abbreviation Day
Su or Sun Sunday
M or Mo or Mon Monday
T or Tu or Tue Tuesday
W or We or Wed Wednesday
H or R or Th or Thu Thursday
F or Fr or Fri Friday
Sa or Sat Saturday

Case is significant. Unknown abbreviations are ignored.

The start & end times of the event in the format HH:MM - HH:MM. Times are specified in 24-hour format, the minutes being optional (and optionally separated from the hour by a colon or period).
(optional) The background color of the event’s box, given as six hexadecimal digits. The default background color is either grey or, if --color is in effect, taken from a small palette of basic colors based on the event’s index.


The following input file:

- name: Garfield impersonation
  days: M
  time: 7-9
  color: "FFB04E"

- name: Work to live
  days: MTWRF
  time: 9-17

- name: |
    Exercise class
    (The one on Main Street)
  days: M, W, F
  time: 17:00 - 18:00
  color: "29FF65"

- name: Have they brought back my favorite show yet?
  days: R
  time: 19-19.30
  color: "FF84DF"

- name: Poor decisions
  days: F
  time: 22-23.59
  color: "000000"

- name: Sleep in
  days: SatSun
  time: 7-12
  color: "4226C4"

produces (using the default options) an output file that looks like this:

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for pdfschedule, version 0.3.3
Filename, size File type Python version Upload date Hashes
Filename, size pdfschedule-0.3.3.tar.gz (39.8 kB) File type Source Python version None Upload date Hashes View
Filename, size pdfschedule-0.3.3-py3-none-any.whl (8.9 kB) File type Wheel Python version py3 Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page