{"id":8343,"date":"2021-04-08T18:11:02","date_gmt":"2021-04-08T16:11:02","guid":{"rendered":"https:\/\/monodes.com\/predaelli\/?p=8343"},"modified":"2021-04-08T18:11:02","modified_gmt":"2021-04-08T16:11:02","slug":"beautiful-pdfs-from-html","status":"publish","type":"post","link":"https:\/\/monodes.com\/predaelli\/2021\/04\/08\/beautiful-pdfs-from-html\/","title":{"rendered":"Beautiful PDFs from HTML"},"content":{"rendered":"<h1><em><a href=\"https:\/\/pdf.math.dev\/\">Beautiful PDFs from HTML<\/a><a href=\"https:\/\/pdf.math.dev\/\"><img data-recalc-dims=\"1\" decoding=\"async\" class=\"alignnone size-full\" src=\"https:\/\/i0.wp.com\/monodes.com\/predaelli\/wp-content\/uploads\/sites\/4\/2021\/04\/chrome.png?w=910&#038;ssl=1\" alt=\"\" \/><\/a><a href=\"https:\/\/pdf.math.dev\/\"><img data-recalc-dims=\"1\" decoding=\"async\" class=\"alignnone size-full\" src=\"https:\/\/i0.wp.com\/monodes.com\/predaelli\/wp-content\/uploads\/sites\/4\/2021\/04\/safari.png?w=910&#038;ssl=1\" alt=\"\" \/><\/a><\/em><\/h1>\n","protected":false},"excerpt":{"rendered":"<p class=\"excerpt\">Beautiful PDFs from HTML<\/p>\n<p class=\"more-link-p\"><a class=\"more-link\" href=\"https:\/\/monodes.com\/predaelli\/2021\/04\/08\/beautiful-pdfs-from-html\/\">Read more &rarr;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"link","meta":{"inline_featured_image":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[18,46],"tags":[],"class_list":["post-8343","post","type-post","status-publish","format-link","hentry","category-themes","category-web","post_format-post-format-link"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p6daft-2az","jetpack-related-posts":[{"id":3220,"url":"https:\/\/monodes.com\/predaelli\/2017\/07\/17\/masonry\/","url_meta":{"origin":8343,"position":0},"title":"Masonry","author":"Paolo Redaelli","date":"2017-07-17","format":"link","excerpt":"\u00a0 Masonry, a Cascading grid layout library is used in the theme I currently use (Carton). Shall use it for my forthcoming \"Basilica\" Theme","rel":"","context":"In &quot;HTML&quot;","block_context":{"text":"HTML","link":"https:\/\/monodes.com\/predaelli\/category\/html\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":9782,"url":"https:\/\/monodes.com\/predaelli\/2022\/11\/05\/digitize-books-searchable-ocr-pdf-with-text-overlay-from-scanned-or-photographed-books-on-linux-michael-franzl\/","url_meta":{"origin":8343,"position":1},"title":"Digitize books: Searchable OCR PDF with text overlay from scanned or photographed books on Linux &#8211; Michael Franzl","author":"Paolo Redaelli","date":"2022-11-05","format":false,"excerpt":"Step-by-step tutorial to digitize books. Produce searchable OCR PDFs with a selectable text overlay from a hardcopy book using Linux free software. Source: Digitize books: Searchable OCR PDF with text overlay from scanned or photographed books on Linux - Michael Franzl","rel":"","context":"In &quot;Senza categoria&quot;","block_context":{"text":"Senza categoria","link":"https:\/\/monodes.com\/predaelli\/category\/senza-categoria\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":12133,"url":"https:\/\/monodes.com\/predaelli\/2024\/12\/19\/is-html-a-programming-language-webbed-briefs\/","url_meta":{"origin":8343,"position":2},"title":"Is HTML A Programming Language? (Webbed Briefs)","author":"Paolo Redaelli","date":"2024-12-19","format":false,"excerpt":"Today I stumbled into this Fediverse post: A great conversation in the supporter Discord\/Matrix reminded me that it's about time to share this fantastic item by @heydon. Anyway, yes HTML is a programming language and folks who argue with this statement in my comments will be muted, blocked, defederated, or\u2026","rel":"","context":"In &quot;Ethics&quot;","block_context":{"text":"Ethics","link":"https:\/\/monodes.com\/predaelli\/category\/ethics\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":12892,"url":"https:\/\/monodes.com\/predaelli\/2025\/03\/06\/how-to-download-all-pdf-files-linked-from-a-single-page-using-wget\/","url_meta":{"origin":8343,"position":3},"title":"How to download all PDF files linked from a single page using wget","author":"Paolo Redaelli","date":"2025-03-06","format":false,"excerpt":"You can use wget to download all PDFs from a webpage by using: wget -r -l1 -H -t1 -nd -N -np -A.pdf -erobots=off --wait=2 --random-wait --limit-rate=20k [URL] -r: Recursive download. -l1: Only one level deep (i.e., only files directly linked from this page). -H: Span hosts (follow links to other\u2026","rel":"","context":"In &quot;Tricks&quot;","block_context":{"text":"Tricks","link":"https:\/\/monodes.com\/predaelli\/category\/documentations\/tricks\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":13702,"url":"https:\/\/monodes.com\/predaelli\/2025\/07\/12\/pandoc-templates\/","url_meta":{"origin":8343,"position":4},"title":"Pandoc templates","author":"Paolo Redaelli","date":"2025-07-12","format":false,"excerpt":"I have been using pandoc recently; of course the default MarkDown to pdf style is rather neutral, I looked for some theming. LornaJane on her blog already wrote about Generating a nice-looking PDF with Pandoc. Of course I knew it may exist: pandoc-templates.org","rel":"","context":"In &quot;Senza categoria&quot;","block_context":{"text":"Senza categoria","link":"https:\/\/monodes.com\/predaelli\/category\/senza-categoria\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":14254,"url":"https:\/\/monodes.com\/predaelli\/2025\/11\/04\/abandonware-of-the-web-do-you-know-that-there-is-an-html-tables-api\/","url_meta":{"origin":8343,"position":5},"title":"Abandonware of the web: do you know that there is an HTML tables API?","author":"Paolo Redaelli","date":"2025-11-04","format":false,"excerpt":"Abandonware of the web: do you know that there is an HTML tables API? When people turn data into HTML tables using JavaScript, they either use the DOM methods (createElement() and the likes), but most of the time just append a huge string and use innerHTML, which always is a\u2026","rel":"","context":"In &quot;Documentations&quot;","block_context":{"text":"Documentations","link":"https:\/\/monodes.com\/predaelli\/category\/documentations\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/posts\/8343","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/comments?post=8343"}],"version-history":[{"count":0,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/posts\/8343\/revisions"}],"wp:attachment":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/media?parent=8343"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/categories?post=8343"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/tags?post=8343"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}