{"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_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_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},"jetpack_post_was_ever_published":false,"_members_access_role":[],"_members_access_error":""},"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_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":12133,"url":"https:\/\/monodes.com\/predaelli\/2024\/12\/19\/is-html-a-programming-language-webbed-briefs\/","url_meta":{"origin":8343,"position":1},"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":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":2},"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":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":3},"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":[]},{"id":11939,"url":"https:\/\/monodes.com\/predaelli\/2024\/09\/28\/quarto\/","url_meta":{"origin":8343,"position":4},"title":"Quarto","author":"Paolo Redaelli","date":"2024-09-28","format":false,"excerpt":"Quarto\u00ae An open-source scientific and technical publishing system Author using Jupyter notebooks or with plain text markdown in your favorite editor. Create dynamic content with Python, R, Julia, and Observable. Publish reproducible, production quality articles, presentations, dashboards, websites, blogs, and books in HTML, PDF, MS Word, ePub, and more. Share\u2026","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":8667,"url":"https:\/\/monodes.com\/predaelli\/2021\/09\/08\/useful-tools\/","url_meta":{"origin":8343,"position":5},"title":"Useful tools","author":"Paolo Redaelli","date":"2021-09-08","format":false,"excerpt":"htmlq, like jq, but for HTML. Uses CSS selectors to extract bits content from HTML files. Mozilla's MDN has a good reference for CSS selector syntax. jq is a lightweight and flexible command-line JSON processor.","rel":"","context":"In &quot;Software Libero&quot;","block_context":{"text":"Software Libero","link":"https:\/\/monodes.com\/predaelli\/category\/software\/software-libero\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_likes_enabled":true,"jetpack_featured_media_url":"","_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}]}}