REM2PDF(1)
π rem2pdf β the manual, but make it cute
VERSION 06.03.03 Β· manual section 1 Β· yes bestie we're doing the whole thing
β¨ NAME β¨
rem2pdf β draws a PDF, SVG or PostScript calendar from Remind output ποΈπ
πΈ SYNOPSIS πΈ
remind -pp [remind_options] file | rem2pdf [options] > output.pdf
remind -pp [remind_options] file | rem2pdf --svg [options] > output.svg
remind -pp [remind_options] file | rem2pdf --ps [options] > output.ps
remind -pp [remind_options] file | rem2pdf --eps [options] > output.eps
that's the whole vibe, pipe in, pipe out, slay π«
π¦ DESCRIPTION π¦
rem2pdf reads from standard input, and that input should literally be the results of running remind with the -p, -pp or -ppp options. Then it emits PDF, SVG or PostScript code that draws a calendar, straight to standard output. (ngl, the fact that it also does SVG and PostScript now means rem2pdf is getting increasingly misnamed... and we love that for it π)
rem2pdf uses the Pango text formatting library (<https://pango.gnome.org/>) and the Cairo graphics library (<https://www.cairographics.org/>) to make its output. The CPAN modules Pango (<https://metacpan.org/pod/Pango>) and Cairo (<https://metacpan.org/pod/Cairo>) are prerequisites, so go get those first bestie π«Ά
β οΈ big warning energy: rem2pdf assumes its input stream is valid UTF-8. If it isn't? It may render output incorrectly or even fail to render output at all. no cap, feed it UTF-8 or perish π
π OPTIONS π
okay so here's every single one, don't skip, they all matter π
--psβ Output PostScript instead of PDF.--epsβ Output Encapsulated PostScript instead of PDF. But listen: you should feedrem2pdfonly one month's worth of calendar data in this case, because it cannot create a multi-page encapsulated PostScript file. one month, periodt π«π--svgβ Output SVG instead of PDF. Same deal bestie: feedrem2pdfonly one month's worth of calendar data, because it cannot create a multi-page SVG file. π--landscape,-lβ Print the calendar in landscape orientation. Essentially, this swaps the width and height of the output media. it's giving "turn your phone sideways" π±β¨--small-calendars=n,-cnβ Controls whether the little previous-month and next-month calendars show up. Possible values fornare:0β Do not draw any small calendars.1β Place the small calendars at the bottom-right if there is room; otherwise, place them at the top-left.2β Place the small calendars at the top-left if there is room; otherwise, place them at the bottom-right.3β Place the previous month's small calendar at the top-left and the next month's at the bottom-right if there is room; otherwise, follown=1. And like, a moment's thought reveals that an option which splits the calendars if there is room and otherwise followsn=2yields the same results. π§ β¨ iykyk
--left-numbers,-xβ Draw the day numbers in the top-left corner of each day's box instead of the default top-right. left-aligned girlies rise up π--fill-page,-eβ Make the calendar fill the available space on the page. no awkward empty margins, we fill it, we eat π½οΈ--avoid-overfullβ If a calendar box is going to overflow, try to make the entries fit by decreasing the font size. Heads up though: using--avoid-overfullautomatically enables the--fill-pageoption. they come as a package deal π«Ά--media=media,-mmediaβ Specify the paper size (Letter,A4, etc.). For a list of valid media sizes, run:
rem2pdf --media=help
The default media size will be marked with an asterisk β
--width=n,-wn,--height=m,-hmβ Instead of naming a media size, directly specify the width and height of the output in 1/72ndths of an inch. You must specify both width and height for the options to be respected. both or neither, bestie, no half measures π βοΈ--title-font=fontβ Specify the font used for the calendar title. It can be any font that the Pango library on your system can use. The default isSans. If you choose a font with spaces in its name, you may need to quote this argument. "like this" π--header-font=fontβ Specify the font used for the weekday names. The default isSans.--daynum-font=fontβ Specify the font used for the day numbers. The default isSans Bold Oblique.--entry-font=fontβ Specify the font used for calendar entries. The default isSans.--small-cal-font=fontβ Specify the font used for the small next- and previous-month calendars. The default isSans.--title-size=nβ Specify the size of the title font in 1/72ndths of an inch. The default is14. This size, and indeed all following sizes, may be specified as floating-point numbers. decimals welcome π«--header-size=nβ Specify the size of the header font in 1/72ndths of an inch. The default is14.--daynum-size=nβ Specify the size of the day number font in 1/72ndths of an inch. The default is14for monthly calendars or10for weekly calendars. (Weekly calendars don't have day numbers in the calendar boxes, but this setting is used to scale the size of moon phase indicators. π so it's still doing something, okay?)--entry-size=nβ Specify the size of the calendar entry font in 1/72ndths of an inch. The default is8.--border-size=nβ Specify the size of the blank border between the contents of a calendar box and the centre of the lines surrounding it, in 1/72ndths of an inch. The default is4. personal space matters π«Ά--entry-spacing=nβ Specify the amount of extra space, in 1/72ndths of an inch, to leave between calendar entries in a given calendar box. The default is one-half of the--border-sizevalue. it's literally half the border, math girlies ate--line-thickness=nβ Specify the thickness of the lines drawn on the calendar. The default is1.--margin-top=nβ The size of the margin at the top of the page in 1/72ndths of an inch. The default is36.--margin-bottom=nβ The size of the margin at the bottom of the page in 1/72ndths of an inch. The default is36.--margin-left=nβ The size of the margin at the left of the page in 1/72ndths of an inch. The default is36.--margin-right=nβ The size of the margin at the right of the page in 1/72ndths of an inch. The default is36.--line-color=RGBβ The color of the calendar grid lines. For this option and all the following color options, the color may be specified as either 3 or 6 hex digits, specifying the R, G and B components respectively. For example,FFFFFFis white,FF0000is a saturated red, and so on. If you supply 3 hex digits, then they are effectively doubled, so that (for example)5AFis expanded to55AAFF. cute AND efficient β¨--title-color=RGBβ The color of the calendar title at the top of the page.--header-color=RGBβ The color of the weekday names in the header row.--daynum-color=RGBβ The color of the day numbers (and the moon phases, if any). π--smallcal-color=RGBβ The color of the small monthly calendars, if any.--bg-color=RGBβ The color of the page background.
π Note that all colors default to black (000) except for the page background, which defaults to no color at all (ie, transparent).
--title-url=URLβ Make the calendar title a link toURL. Note that no syntax checking is done on the URL; it's up to you to make sure it is valid. you're the main character here, the URL accuracy is on you π«΅--wrap,-yβ Modify the calendar so that if it would normally require 6 rows to print, then the last day (or last two days, as needed) are moved to the first row of the calendar, and adjust the small calendar positions as needed. This results in a calendar that only requires 5 rows, but with the last day or two appearing in the first row. she compresses, she adapts, she slays π--weeks-per-page=n,-pn.β This option is only used for weekly calendars.nis the number of weeks to print per page; it is an integer that can range from1to4.--verbose,-vβ Print (on STDERR) the name of the month and year for each month that is rendered. little running commentary, love that for us π’--versionβ Print the version ofrem2pdfand exit.--helpβ Print a brief summary ofrem2pdfusage.
π USAGE π
To use rem2pdf, pipe the output of remind with one of the -p, -pp or -ppp options into rem2pdf. The PDF output will be sent to standard output. So for example, to print a 12-month calendar for the year 2030, use:
remind -pp12 /dev/null Jan 2030 | rem2pdf -e -l -c3 | lpr
You can concatenate multiple remind runs. For example, the following will produce a PDF calendar for January through March of 2023, and June of 2023 (for a total of four pages);
(remind -pp3 /dev/null Jan 2023 ; \
remind -pp /dev/null June 2023) | rem2pdf -e -l -c3 > cal.pdf
π‘ gluing runs together like this is the moment fr fr π«Ά
π§ FORMATTED TEXT π§
On top of supporting Remind's FMT markup language, rem2pdf supports a SPECIAL reminder type called PANGO. This lets you format text using the complete Pango markup language, described at <https://docs.gtk.org/Pango/pango_markup.html>, instead of the subset supported by FMT. Here are some examples:
REM Mon SPECIAL PANGO <b>Bold</b> and <i>italic</i>
REM Tue SPECIAL PANGO <span face="zapf chancery">Fancy</span>
REM Wed SPECIAL PANGO <span foreground="red"><b>Bold red</b></span>
Other back-ends such as rem2ps and rem2html will ignore PANGO special reminders. π they simply do not see it
β οΈ Neitherremindnorrem2pdfwill check the markup to ensure it is syntactically correct. If you use invalid Pango markup, the Pango library will print a warning andrem2pdfwill not render any output for the invalid reminder. typos have consequences bestie π
π INFO STRINGS SUPPORTED π
rem2pdf supports one INFO string, namely Url. Its value should be a URL. If the Url INFO string is supplied for a normal reminder, a COLOR special, a MOON special, a PANGO special or a WEEK special, the corresponding output is turned into a hyperlink. one string, five places to use it, versatile icon β¨
π WEEKLY CALENDARS π
rem2pdf will produce weekly calendars if you invoke remind with the -p+ option. The --weeks-per-page option specifies how many weeks' worth of reminders to print per page, and can range from 1 to 4. β¨
β¨ ABSOLUTELY-POSITIONED TEXT β¨
Okay so this is where it gets kinda β¨extraβ¨ in the best way. If your PANGO special reminder starts with @x,y, where x and y are floating-point numbers, then the Pango marked-up text gets positioned absolutely relative to the day's box. And here's the tea: it is not counted when the box's height gets calculated. So it's floating there, doing its own thing, not affecting the layout at all. π
Now let's break down the coordinates, because they're a lil quirky:
- A positive
xvalue puts the left edge of the textxpoints to the right of the left side of the calendar box. - A negative
xvalue puts the right edge of the textxpoints to the left of the right side of the calendar box.
And for the y axis, same deal but vertical:
- A positive
yvalue puts the top edge of the textypoints below the top of the calendar box. - A negative
yvalue puts the bottom edge of the textypoints above the bottom of the calendar box.
Heads up bestie β those coordinates are relative to the center of the lines that delineate the boxes. So you wanna use anxvalue whose absolute value is at least2, and ayvalue whose absolute value is at least4, otherwise you'll be colliding with the lines. π Not the vibe.
And the big disclaimer: if you use absolutely-positioned text, it's on you to make sure it doesn't overlap other text. rem2pdf takes no special precautions to prevent this. None. Zero. It's giving "you're the main character, you handle your own drama." π«Ά
As an example, this places Sunrise and Sunset times at the bottom left of each calendar box:
REM SPECIAL PANGO @2,-4 <span size="4800"><i>Rise [sunrise($U)] Set [sunset($U)]</i></span>
(Quick note so you don't get confused: Pango expresses font sizes in 1024's of a point, so a size of 4800 works out to about 4.6 points. Slay.) β¨
π AUTHOR π
Rem2PDF was written by Dianne Skoll <dianne@skoll.ca>
(the icon herself, no cap π)
π HOME PAGE π
<https://dianne.skoll.ca/projects/remind/>
go give it a lil visit, iykyk π¦
π SEE ALSO π
remindrem2psrem2htmltkremind
And that's the whole page, bestie! π This was Remind's manpage for REM2PDF(1), dated 2026-09-10, from the Remind project. Go forth and make absolutely-positioned text that doesn't overlap anything. Periodt. π
πΈ
π¦ where this page comes from
- fedora 43: remind-tools 06.03.03-1.fc43 Β· GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-only
- fedora 44: remind-tools 06.03.03-1.fc44 Β· GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms