Recently, I’ve obtained the Professional Scrum Master certification. The preparation for the examination involved dissecting the official Scrum Guide. Scrum as a framework is well structured into principles, accountabilities, events, and artifacts with important relations between them. However, while going through the guide, I would have preferred to have numbered section heads to highlight the hierarchy of each section. This is a great opportunity to try editing a real-life PDF with a text editor such as vim.
The command-line tool qpdf provides a mode to decompress object streams in PDF to obtain a file that is editable with a regular text editor. Try
$ qpdf scrum-guide-2020.pdf --qdf scrum-guide-2020-qdf.pdf
The PDF file format and the commands encountered within the document are explained in the PDF Reference document (here version 1.4). The manual is surprisingly easy to read, and if you are familiar with PostScript it should be easy to perform small edits.
- Original Scrum Guide 2020 (scrum-guide-2020.pdf)
- Editable Scrum Guide 2020 (scrum-guide-2020-qdf.pdf)
- Edited Scrum Guide 2020 (scrum-guide-2020-edit.pdf)
The first link is the original PDF of the scrum guide. The second PDF is a version obtained from qpdf that is editable with a text editor. This version is visually identical to the original PDF. The third link points to the edited version. A diff between the qdf and my version reveals my edits:
$ diff scrum-guide-2020-qdf.pdf scrum-guide-2020-edit.pdf
1179c1179
< /Title (Scrum Definition)
---
> /Title (1 Scrum Definition)
...
3630c3630
< [(S)4(c)-8(r)8(um)6( Def)8(in)5(it)-2(io)7(n)] TJ
---
> [(1 S)4(c)-8(r)8(um)6( Def)8(in)5(it)-2(io)7(n)] TJ
...
6737c6737
< [(Sc)7(rum)-7( )4(D)4(efi)-8(ni)-8(ti)-3(on)] TJ
---
> [(1 Sc)7(rum)-7( )4(D)4(efi)-8(ni)-8(ti)-3(on)] TJ
...
7475,7476c7475,7476
< 0.235 0.251 0.263 rg
< 0.235 0.251 0.263 RG
---
> 0 g
> 0 G
I’ve enumerated the section heads for the main sections in the main body, the
table of contents on page two, and the PDF table of contents (/Title
).
The TJ
operator puts text with kerning into the document. The characters are
specified in parenthesis. The positive and negative numbers between the parenthesis are kerning
adjustments.
Secondly, I’ve noticed that the text in the Transparency section is printed in
gray and not black as the rest of the text.
The original version used rg
and RG
operations to set an RGB color for this
section.
With my modifications, the PDF uses 0 g
and 0 G
to set 0% color on a gray scale,
i.e., black.
This might also interest you