From 5774cb9aed92ed429645510ad717595356ca3ffa Mon Sep 17 00:00:00 2001 From: Florian Moser <git@famoser.ch> Date: Sun, 28 Mar 2021 21:38:39 +0200 Subject: [PATCH] Working on PDF course --- pdf/css/remark.css | 4 + pdf/image.pdf | Bin 0 -> 1411 bytes pdf/pdf.html | 193 +++++++++++++++++++++++++++++++++---- pdf/rectangle.pdf | 44 +++++++++ pdf/special_characters.pdf | Bin 0 -> 7531 bytes pdf/text.pdf | 41 ++++++++ 6 files changed, 263 insertions(+), 19 deletions(-) create mode 100644 pdf/image.pdf create mode 100644 pdf/rectangle.pdf create mode 100644 pdf/special_characters.pdf create mode 100644 pdf/text.pdf diff --git a/pdf/css/remark.css b/pdf/css/remark.css index cdb2ed8..26103fd 100644 --- a/pdf/css/remark.css +++ b/pdf/css/remark.css @@ -36,3 +36,7 @@ table thead th { border-bottom: 2px solid #dee2e6; vertical-align: bottom; } + +.space-3 { + margin-top: 5em +} \ No newline at end of file diff --git a/pdf/image.pdf b/pdf/image.pdf new file mode 100644 index 0000000000000000000000000000000000000000..169b26612de0a638e0c6b9f0522fd90c39557824 GIT binary patch literal 1411 zcmc&!&1(}u6o0cDwFHDjD_Bq%DzPo4?nm>frNt(urhcVKv4v7_n@rNJ$xhj9we7`= zASehTc<4=X^59YEO%Pi>6coJpaS;ne{0BV7H_5h3TJ-9?yxr`Z-~8U2$NVOgO{E94 zb1{GD$M%O$evPV>&n@_ehLp*bMMjmR;TRQOrb^Z*vl`WLJ~uq<XI4?b#Ah44g;K7V z#TuO%6yRCp;7gW6HE)@iIIv8luo(iIIjE9jHNIpQFlkuuP~{pcn#L$!rZXxAbPYWb zYtmZ|uET`UW<oEISm@@NzA?AJ3J%4MWoSg;hKDhu%?o+v&>02WK$T1tH<_IE2n5h2 zxXP@uGfyKimAb9jrBw1ub565a&Gl57GK+}RBUHJ}%<?>LJxZ0dS#g+6l~i&v#R|NL zy&W~3T9(;KUR~st*m+#^s>1F3qEW#46uV;<SZ-_-3#vIbGphc^=f-ykjHfecAOwJ* zLE{_o1>lTpA$<2hKUxn&;R1xwqmYGhNTQA7zg3umS=U!#9cu6Zz4cs&I&8pmc!s_K zbrOOd*h1SOA(AJj$Win>StA^6P4banl258jb@@^7e;3er1HldmK$lFqK?)K%NE&aU z3qX>wN8XTpK;%P>uh1bH2(a~#{=WVip`ER74+&BeB?T~a`yT*V0FEG_JAl;EVcDY~ zSc!bxcdWBJnaj^TakG*UIB|OW*3`Rnefn|q<yd`U<!oj;o!Pp-`Sa!rhi@R)$sox4 z3L=txu~iX4hSiU+W}p5AC`%JfATo?V{{8mmy~Y<IS@#gR;uUIXKiqoUJ88NQ8A@#T zSEy2r-bIbj6hFun^SF|DP#td5-jY$}HD)V|#nM2TS<DvUK0M+AU~(&EIE?nD&g&{_ zc~Fn*>R>pW=vVa~RqgXMxNNhMU!`%sx;JPv5*dt847)=^p^8DRy-*adk@k?LVU_J6 zUB?S=Unq`!X$xtpmN*bfco`krFe}U!cV^yPWkSU{&QbN)6TG%ER*6&5A8~Ki9K&{+ PJJPgx)E^36x{>|^B+Xbp literal 0 HcmV?d00001 diff --git a/pdf/pdf.html b/pdf/pdf.html index 20288e2..590d013 100644 --- a/pdf/pdf.html +++ b/pdf/pdf.html @@ -56,18 +56,16 @@ Acrobat Distiller (network version): 2495$ --- -# Releases - -| | Year | Industry | Notable features | -| --- | :--- | :------- | :--------------- | -| 1.0 | 1993 | Adobe | **text**, **images**, **pages**, **hyperlinks**, bookmarks | -| 1.1 | 1994 | Tax | passwords, encryption, device-independent color | -| 1.2 | 1996 | Printing | radio buttons, checkboxes, forms incl. import/export, mouse events, sound, **unicode**, color features | -| 1.3 | 2000 | Printing | digital signatures, color spaces, JavaScript, embedded file streams, image utilities, **CIDFonts**, prepress support | -| 1.4 | 2001 | | RC4 > 40bits, transparency, better forms, metadata, accessibility, page boundaries, printer marks, predefined CMaps | -| 1.5 | 2003 | | jpeg, multimedia playback, better forms, public key encryption, permissions, view/hide layers, slideshow | -| 1.6 | 2004 | | 3D, **OpenType**, SOAP over http, public key encryption improvements, color spaces | -| 1.7 | 2006 | | 3D improvements, public key encryption improvements | +| | Year | Industry | Notable features | +| ---- | :--- | :------- | :--------------- | +| v1.0 | 1993 | Adobe | **text**, **images**, **pages**, **hyperlinks**, bookmarks | +| v1.1 | 1994 | Tax | passwords, encryption, device-independent color | +| v1.2 | 1996 | Printing | radio buttons, checkboxes, forms incl. import/export, mouse events, sound, **unicode**, color features | +| v1.3 | 2000 | Printing | digital signatures, color spaces, JavaScript, embedded file streams, image utilities, **CIDFonts**, prepress support | +| v1.4 | 2001 | | RC4 > 40bits, transparency, better forms, metadata, accessibility, page boundaries, printer marks, predefined CMaps | +| v1.5 | 2003 | | jpeg, multimedia playback, better forms, public key encryption, permissions, view/hide layers, slideshow | +| v1.6 | 2004 | | 3D, **OpenType**, SOAP over http, public key encryption improvements, color spaces | +| v1.7 | 2006 | | 3D improvements, public key encryption improvements | *Version 1.7 is ISO 32000-1:2008.* @@ -110,18 +108,175 @@ PDF/A Subversions: # Why is it so popular? Single purpose, which is archived: -**It display content equally on all devices.** +**It displays content equally on all devices.** -Comparison to web: -- Need to increase readability on smaller screens (font size, colors, spacing, ...) -- Need to handle different aspect ratios -- Optimize for less powerful devices -- [Can I Use](https://caniuse.com/) tries to track browser inconsistencies +<div class="space-3"></div> + +Comarison: How webpages deal with different devices: +- Adapt font size, colors, spacing, ... to screen size +- Adapt layout to aspect ratio / screen size +- Remove or add elements depending on end device +- Test on end devices and/or use resources such as [Can I Use](https://caniuse.com/) + +In short: Its painful and slow. + +--- + +class: center, middle + +# The file format + +--- + +# Tokens + +PDF is a text format. You can open any PDF in your text editor! + +Tokens: +```html +0 % Numbers +Hello % Strings +5 0 R % References (5 for the object number, 0 for its generation number, R for reference) +[2 0 R] % Arrays +<</Key /Value>> % Dictionaries +Image % Names (any two with the same content are "equal") +``` + +Out of these tokens, the higher-level objects are composed +- Dictionaries +- Streams --- -# The PDF format +# Structure (1/2) + +Header (asserts PDF version and wether binary data is contained) +```html +%PDF-1.7 +%���� +``` + +Body (contains the actual content) +```html +1 0 obj +<</Type /Catalog /Pages 2 0 R>> +endobj +2 0 obj +<</Type /Pages /Kids [3 0 R] /Count 1>> +endobj +% ... +``` + +--- + +# Structure (2/2) + +Cross-Reference Table (CRT) (contains the binary offset of objects) +```html +xref +0 8 +0000000000 65535 f +0000000015 00000 n +0000000062 00000 n +% ... +``` + +Trailer (contains size of CRT and reader start points) +```html +trailer +<</Size 8 /Root 1 0 R /Info 7 0 R>> +startxref +574 +%%EOF +``` + +--- + +# Body + +```html +1 0 obj +<</Type /Catalog /Pages 2 0 R>> +endobj +2 0 obj +<</Type /Pages /Kids [3 0 R] /Count 1>> +endobj +3 0 obj +<</Type /Page /Parent 2 0 R /Resources 4 0 R /MediaBox [0 0 210 297] /Contents [6 0 R]>> +endobj +4 0 obj +<</Font <</F 5 0 R>> /ProcSet [/PDF /Text]>> +endobj +5 0 obj +<</Type /Font /Subtype /Type1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding>> +endobj +6 0 obj +<</Length 59>> +stream +BT 1 0 0 1 22 20 cm 1 w /F 12 Tf 14.4 TL (Hello world)Tj ET +endstream +endobj +``` + +--- + +# Content + +Text (`w` = line width, `Tf` = font, `TL` = leading, `Tj` = text) +```html +stream +BT 1 0 0 1 22 20 cm 1 w /F 12 Tf 14.4 TL (Hello world)Tj ET +endstream +``` + +Drawing (`RG` = line color, `rg` = background color, `re` = rectangle, `b` = painting mode) +```html +stream +1 0 0 1 40 20 cm 0.5 w 0.68 0.98 0.94 RG 0.67 0.8 0.73 rg 0 0 20 30 re b +endstream +``` + +--- + +# Image + +Stream with binary image data + +```html +5 0 obj +<</Length 570 /Type /XObject /Subtype /Image /Width 25 /Height 16 /Filter /DCTDecode /BitsPerComponent 8 /ColorSpace /DeviceRGB>> +stream +�����JFIF���������#�#�#�#�%�#�'�+�+�'�6�;�4�;�6�P�J�C�C�J�P�z�W�]�W�]�W�z���s���s�s���s����������������%��������%S +S�oo������#�#�#�#�%�#�'�+�+�'�6�;�4�;�6�P�J�C�C�J�P�z�W�]�W�]�W�z���s���s�s���s����������������%��������%S +S�oo����������"��������������������������̊ �N�������������������������k���������������������������"������������"CRSb�����?��`W�F�X�6�G�Qy&IXFĪ��V�to������������������A���?�zе]������������������Q���?�S����� +endstream +endobj +``` + +Print image (`Do` = print referenced image) +```html +6 0 obj +<</Length 28>> +stream +20 0 0 20 20 20 cm 1 w /I Do +endstream +endobj +``` + +--- + +# Supporting unicode + +`WinAnsiEncoding` is a single byte encoding; so are the other default encodings. + +What if I need a character not contained in these standard encodings (like chinese characters)? + +Steps: +- Embedd font which supports character as stream +- Declare encoding of text (PDF) onto glyphs (font) +- Declare meta data (widths of characters, ...) +=> Requires deep knowledge about font --- diff --git a/pdf/rectangle.pdf b/pdf/rectangle.pdf new file mode 100644 index 0000000..fe60870 --- /dev/null +++ b/pdf/rectangle.pdf @@ -0,0 +1,44 @@ +%PDF-1.7 +%���� +1 0 obj +<</Type /Catalog /Pages 2 0 R>> +endobj +2 0 obj +<</Type /Pages /Kids [3 0 R] /Count 1>> +endobj +3 0 obj +<</Type /Page /Parent 2 0 R /Resources 4 0 R /MediaBox [0 0 210 297] /Contents [5 0 R 6 0 R]>> +endobj +4 0 obj +<</ProcSet [/PDF]>> +endobj +5 0 obj +<</Length 72>> +stream +1 0 0 1 40 20 cm 0.5 w 0.68 0.98 0.94 RG 0.67 0.8 0.73 rg 0 0 20 30 re b +endstream +endobj +6 0 obj +<</Length 31>> +stream +1 0 0 1 -30 0 cm 0 0 20 30 re b +endstream +endobj +7 0 obj +<</Creator (famoser/pdf-generator) /CreationDate (D:20210328202704+02'00)>> +endobj +xref +0 8 +0000000000 65535 f +0000000015 00000 n +0000000062 00000 n +0000000117 00000 n +0000000227 00000 n +0000000262 00000 n +0000000382 00000 n +0000000461 00000 n +trailer +<</Size 8 /Root 1 0 R /Info 7 0 R>> +startxref +552 +%%EOF \ No newline at end of file diff --git a/pdf/special_characters.pdf b/pdf/special_characters.pdf new file mode 100644 index 0000000000000000000000000000000000000000..69ccdadfed0b08bee305a10ac458e72117b0ed13 GIT binary patch literal 7531 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 literal 0 HcmV?d00001 diff --git a/pdf/text.pdf b/pdf/text.pdf new file mode 100644 index 0000000..9dfae31 --- /dev/null +++ b/pdf/text.pdf @@ -0,0 +1,41 @@ +%PDF-1.7 +%���� +1 0 obj +<</Type /Catalog /Pages 2 0 R>> +endobj +2 0 obj +<</Type /Pages /Kids [3 0 R] /Count 1>> +endobj +3 0 obj +<</Type /Page /Parent 2 0 R /Resources 4 0 R /MediaBox [0 0 210 297] /Contents [6 0 R]>> +endobj +4 0 obj +<</Font <</F 5 0 R>> /ProcSet [/PDF /Text]>> +endobj +5 0 obj +<</Type /Font /Subtype /Type1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding>> +endobj +6 0 obj +<</Length 59>> +stream +BT 1 0 0 1 22 20 cm 1 w /F 12 Tf 14.4 TL (Hello world)Tj ET +endstream +endobj +7 0 obj +<</Creator (famoser/pdf-generator) /CreationDate (D:20210328193015+02'00)>> +endobj +xref +0 8 +0000000000 65535 f +0000000015 00000 n +0000000062 00000 n +0000000117 00000 n +0000000221 00000 n +0000000281 00000 n +0000000376 00000 n +0000000483 00000 n +trailer +<</Size 8 /Root 1 0 R /Info 7 0 R>> +startxref +574 +%%EOF \ No newline at end of file -- GitLab