Package: pdfschedule
GitHub|PyPI|Issues|Changelogpdfscheduleis a Python 3 script for creating PDF documents showing
one’s weekly schedule of events.Installationpdfschedulerequires Python 3.7 or higher.  Just usepipfor Python 3 (You have pip, right?) to installpdfscheduleand its dependencies:python3 -m pip install pdfscheduleUsagepdfschedule [<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).Options-C,--colorColor the event boxes various colors instead of just
grey.-ETIME,--end-timeTIMESpecify the time of day at which each day should start.
Times are specified in the formatHH:MMusing
24-hour time, the minutes being optional (and
optionally separated from the hour by a colon or
period).  Defaults to half an hour before the earliest
event start time or 00:00, whichever is later.-FFONT,--fontFONTTypeset text in the given font.FONTmust be
either the name of a builtin PostScript font or the
path to a.ttffile.  By default, text is typeset
in Helvetica.-fSIZE,--font-sizeSIZESet the size of the font used for event information toSIZE(default 10).  The names of the days of the
week are typeset atSIZE * 1.2; the times of day
are typeset atSIZE / 1.2.-M,--start-mondayUse Monday as the first day of the week instead of
Sunday.-p,--portraitTypeset 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.”-sFACTOR,--scaleFACTORDivide the length of each side of the table byFACTOR.  Without this option, the table fills the
whole page, except for a one-inch margin on each side.-STIME,--start-timeTIMESpecify the time of day at which each day should end.
Times are specified in the formatHH:MMusing
24-hour time, the minutes being optional (and
optionally separated from the hour by a colon or
period).  Defaults to half an hour after the latest
event end time or 24:00, whichever is earlier.-T,--no-timesDo not show the times for each hour line.--no-weekendsDo not show Sunday and Saturday.Input FormatInput is aYAMLlist of dictionaries.  Each dictionary
represents a single weekly event and must contain the following keys:name(optional)The (possibly multiline) text to display in the event’s box on
the scheduledaysThe 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):AbbreviationDaySuorSunSundayMorMoorMonMondayTorTuorTueTuesdayWorWeorWedWednesdayHorRorThorThuThursdayForFrorFriFridaySaorSatSaturdayCase is significant.  Unknown abbreviations are ignored.timeThe start & end times of the event in the formatHH: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).color(optional)The background color of the event’s box, given as six
hexadecimal digits.  The default background color is either grey or, if--coloris in effect, taken from a small palette of basic colors based
on the event’s index.ExampleThe following input file:-name:Garfield impersonationdays:Mtime:7-9color:"FFB04E"-name:Work to livedays:MTWRFtime:9-17-name:|Exercise class(The one on Main Street)days:M, W, Ftime:17:00 - 18:00color:"29FF65"-name:Have they brought back my favorite show yet?days:Rtime:19-19.30color:"FF84DF"-name:Poor decisionsdays:Ftime:22-23.59color:"000000"-name:Sleep indays:SatSuntime:7-12color:"4226C4"produces (using the default options) an output file that looks like this: