{"id":11656,"date":"2022-10-05T06:43:18","date_gmt":"2022-10-05T11:43:18","guid":{"rendered":"https:\/\/blog.pythonlibrary.org\/?post_type=book&#038;p=11656"},"modified":"2022-10-05T07:50:32","modified_gmt":"2022-10-05T12:50:32","slug":"reportlab-pdf-processing-with-python","status":"publish","type":"books","link":"https:\/\/blog.pythonlibrary.org\/books\/reportlab-pdf-processing-with-python\/","title":{"rendered":"ReportLab: PDF Processing with Python"},"content":{"rendered":"<p>ReportLab is the primary package that most Python developers use for creating PDFs programmatically. This book will take a deep dive into this package and teaches you how to use this versatile library.<\/p>\n<p><a href=\"https:\/\/leanpub.com\/reportlab\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-7091\" src=\"https:\/\/blog.pythonlibrary.org\/wp-content\/uploads\/2018\/01\/reportlab_python_thumb.png\" alt=\"\" width=\"180\" height=\"253\" \/><\/a><\/p>\n<p>Cover art by Therese Larsson. See more from her on <a href=\"http:\/\/www.sillybeastillustration.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Silly Beast Illustration<\/a> or <a href=\"https:\/\/www.behance.net\/sillybeast\" target=\"_blank\" rel=\"noopener noreferrer\">Behance<\/a>.<\/p>\n<p>You can purchase this book in Paperback or Kindle on <a href=\"https:\/\/amzn.to\/2JTos53\" target=\"_blank\" rel=\"noopener noreferrer\">Amazon<\/a> or as an eBook (PDF, epub and mobi) on <a href=\"https:\/\/leanpub.com\/reportlab\" target=\"_blank\" rel=\"noopener noreferrer\">Leanpub<\/a>.<\/p>\n<p>This book covers the following topics:<\/p>\n<ul>\n<li>Creating PDFs with ReportLab Canvas methods<\/li>\n<li>Using PLATYPUS in ReportLab for Dynamic Reports<\/li>\n<li>Turning Data into Reports with ReportLab<\/li>\n<li>Splitting \/ Joining PDFs with PyPDF2 and pdfrw<\/li>\n<li>Rotating Pages<\/li>\n<li>PDF Security<\/li>\n<li>Merging PDFs<\/li>\n<li>and much, much more!<\/li>\n<\/ul>\n<h3>Full Table of Contents<\/h3>\n<ul class=\"toc no-parts\">\n<li>Introduction\n<ul>\n<li>About the Author<\/li>\n<li>Conventions<\/li>\n<li>Setting up &amp; Activating a Virtual Environment<\/li>\n<li>Dependencies<\/li>\n<li>Installation<\/li>\n<li>Configuration<\/li>\n<li>Reader Feedback<\/li>\n<li>Errata<\/li>\n<li>Code Examples<\/li>\n<\/ul>\n<\/li>\n<li>Part I &#8211; The ReportLab Toolkit<\/li>\n<li>Chapter 1 &#8211; Getting Started with Reportlab\n<ul>\n<li>The Canvas Object<\/li>\n<li>Canvas Methods<\/li>\n<li>Using Colors in ReportLab<\/li>\n<li>Adding a Photo<\/li>\n<li>The textobject<\/li>\n<li>Create a Page Break<\/li>\n<li>Canvas Orientation (Portrait vs. Landscape)<\/li>\n<li>Other methods<\/li>\n<li>A Simple Sample Application<\/li>\n<li>Wrapping Up<\/li>\n<\/ul>\n<\/li>\n<li>Chapter 2 &#8211; ReportLab and Fonts\n<ul>\n<li>Unicode \/ UTF8 is the Default<\/li>\n<li>The Standard Fonts<\/li>\n<li>Other Type-1 Fonts<\/li>\n<li>TrueType Fonts<\/li>\n<li>Asian Fonts<\/li>\n<li>Switching Between Fonts<\/li>\n<li>Wrapping Up<\/li>\n<\/ul>\n<\/li>\n<li>Chapter 3 &#8211; Intro to Page Layout\n<ul>\n<li>The Basics of PLATYPUS<\/li>\n<li>Changing Fixed Elements Across Pages<\/li>\n<li>Flowable Methods<\/li>\n<li>Frame Basics<\/li>\n<li>Templates<\/li>\n<li>Flowable Orientation (Portrait vs. Landscape)<\/li>\n<li>Wrapping Up<\/li>\n<\/ul>\n<\/li>\n<li>Chapter 4 &#8211; Paragraphs\n<ul>\n<li>Paragraph Styles<\/li>\n<li>Paragraph Markup Tags<\/li>\n<li>The Outermost Markup Tags<\/li>\n<li>Using Intra-Paragraph Markup<\/li>\n<li>Working with Fonts<\/li>\n<li>Superscripts &amp; Subscripts<\/li>\n<li>Inserting Inline Images<\/li>\n<li>Numbering Paragraphs \/ Sections<\/li>\n<li>Bullets<\/li>\n<li>Wrapping Up<\/li>\n<\/ul>\n<\/li>\n<li>Chapter 5 &#8211; Tables\n<ul>\n<li>The Table\u00e2\u20ac\u2122s Methods<\/li>\n<li>Applying Style to Your Table<\/li>\n<li>Cell Formatting<\/li>\n<li>Changing Fonts in Tables<\/li>\n<li>Line Commands<\/li>\n<li>Cell Alignment<\/li>\n<li>Alternating Background Colors<\/li>\n<li>Putting Paragraphs in Your Cells<\/li>\n<li>Adding Images to Cells<\/li>\n<li>Spanning<\/li>\n<li>Wrapping Up<\/li>\n<\/ul>\n<\/li>\n<li>Chapter 6 &#8211; Other Flowables\n<ul>\n<li>Preformatted<\/li>\n<li>XPreformatted<\/li>\n<li>The Image Flowable<\/li>\n<li>The Spacer Flowable<\/li>\n<li>PageBreak<\/li>\n<li>CondPageBreak<\/li>\n<li>KeepTogether<\/li>\n<li>How to Add a Table of Contents<\/li>\n<li>SimpleIndex<\/li>\n<li>ListFlowable \/ ListItem<\/li>\n<li>Wrapping Up<\/li>\n<\/ul>\n<\/li>\n<li>Chapter 7 &#8211; Creating Your Own Flowables\n<ul>\n<li>Creating a Line Flowable<\/li>\n<li>Creating a Bordered Textbox + Line Flowable<\/li>\n<li>Modifying a Pre-Existing Flowable<\/li>\n<li>Wrapping Up<\/li>\n<\/ul>\n<\/li>\n<li>Chapter 8 &#8211; Intro to Graphics and Charts\n<ul>\n<li>What is a Drawing?<\/li>\n<li>ReportLab\u00e2\u20ac\u2122s Renderers<\/li>\n<li>The Coordinate System<\/li>\n<li>A Simple Drawing<\/li>\n<li>Supported Outputs<\/li>\n<li>Verifying Attributes<\/li>\n<li>Naming Shapes<\/li>\n<li>Charts and Graphs<\/li>\n<li>Labels<\/li>\n<li>Axes<\/li>\n<li>Bar Charts<\/li>\n<li>Line Charts<\/li>\n<li>Line Plots<\/li>\n<li>Pie Charts<\/li>\n<li>Adding Titles and Legends<\/li>\n<li>Odds and Ends<\/li>\n<li>Wrapping Up<\/li>\n<\/ul>\n<\/li>\n<li>Chapter 9 &#8211; Other Graphics\n<ul>\n<li>Shapes<\/li>\n<li>Widgets<\/li>\n<li>Bar Codes<\/li>\n<li>Wrapping Up<\/li>\n<\/ul>\n<\/li>\n<li>Chapter 10 &#8211; Creating Special Features in Your PDF\n<ul>\n<li>File Annotations<\/li>\n<li>Bookmarks<\/li>\n<li>Page Transitions<\/li>\n<li>Encryption<\/li>\n<li>Interactive Forms<\/li>\n<li>Wrapping Up<\/li>\n<\/ul>\n<\/li>\n<li>Part II &#8211; Tutorials and How-Tos<\/li>\n<li>Chapter 11 &#8211; Turning Data into PDFs\n<ul>\n<li>Getting Started<\/li>\n<li>Creating the Base Template Class<\/li>\n<li>Refactoring the EOB Class<\/li>\n<li>Creating a Multipage Document<\/li>\n<li>Using Real Data<\/li>\n<li>Consuming XML<\/li>\n<li>Wrapping Up<\/li>\n<\/ul>\n<\/li>\n<li>Chapter 12 &#8211; Custom Headers and Footers\n<ul>\n<li>A Naive Header<\/li>\n<li>Putting the Header on Every Page<\/li>\n<li>Adding a Logo<\/li>\n<li>Configurable Logos<\/li>\n<li>Adding Page Numbers<\/li>\n<li>Adding a Page Number of Total<\/li>\n<li>Headers + Footers<\/li>\n<li>Wrapping Up<\/li>\n<\/ul>\n<\/li>\n<li>Chapter 13 &#8211; Creating a PDF Library\n<ul>\n<li>Accepting Different Data Formats<\/li>\n<li>Multipage Data Files<\/li>\n<li>Custom Stylesheets<\/li>\n<li>Configuring Your Application<\/li>\n<li>Adding a Graphical User Interface<\/li>\n<li>Finishing the User Interface<\/li>\n<li>Wrapping Up<\/li>\n<\/ul>\n<\/li>\n<li>Chapter 14 &#8211; The PyPDF2 Package\n<ul>\n<li>Installation<\/li>\n<li>Extracting Metadata from PDFs<\/li>\n<li>Extracting Text from PDFs<\/li>\n<li>Splitting PDFs<\/li>\n<li>Merging Multiple PDFs Together<\/li>\n<li>Rotating Pages<\/li>\n<li>Overlaying \/ Watermarking Pages<\/li>\n<li>PDF Encryption<\/li>\n<li>Wrapping Up<\/li>\n<\/ul>\n<\/li>\n<li>Chapter 15 &#8211; The pdfrw Package\n<ul>\n<li>Installation<\/li>\n<li>Extracting Information from PDF<\/li>\n<li>Splitting<\/li>\n<li>Merging \/ Concatenating<\/li>\n<li>Rotating<\/li>\n<li>Overlaying \/ Watermarking Pages<\/li>\n<li>Scaling<\/li>\n<li>Combining pdfrw and ReportLab<\/li>\n<li>Wrapping Up<\/li>\n<\/ul>\n<\/li>\n<li>Chapter 16 &#8211; Extracting and Exporting Data from PDFs\n<ul>\n<li>Extracting Text with PDFMiner<\/li>\n<li>Exporting Text via pdf2txt.py<\/li>\n<li>Extracting Text with Slate<\/li>\n<li>Exporting Your Data<\/li>\n<li>Exporting to XML<\/li>\n<li>Exporting to JSON<\/li>\n<li>Exporting to CSV<\/li>\n<li>Extracting Images<\/li>\n<li>Wrapping Up<\/li>\n<\/ul>\n<\/li>\n<li>Chapter 17 &#8211; Filling in PDF Forms\n<ul>\n<li>Creating a Simple Form<\/li>\n<li>Merging Overlays<\/li>\n<li>Other Ways to Fill Forms<\/li>\n<li>Using the pdfforms Package<\/li>\n<li>Wrapping Up<\/li>\n<\/ul>\n<\/li>\n<li>Chapter 18 &#8211; Converting Markup to PDF\n<ul>\n<li>rst2pdf<\/li>\n<li>WeasyPrint<\/li>\n<li>Pandoc<\/li>\n<li>LaTeX<\/li>\n<li>Wrapping Up<\/li>\n<\/ul>\n<\/li>\n<li>Chapter 19 &#8211; The PyFPDF Package\n<ul>\n<li>Installation<\/li>\n<li>Basic Usage<\/li>\n<li>Working with Fonts<\/li>\n<li>Drawing<\/li>\n<li>Adding Images<\/li>\n<li>Multipage Documents<\/li>\n<li>Headers and Footers<\/li>\n<li>Tables<\/li>\n<li>Transform HTML to PDF<\/li>\n<li>Web2Py<\/li>\n<li>Templates<\/li>\n<li>Wrapping Up<\/li>\n<\/ul>\n<\/li>\n<li>Appendix A &#8211; Adding SVG Files in ReportLab\n<ul>\n<li>Dependencies<\/li>\n<li>Installation<\/li>\n<li>Usage<\/li>\n<li>Drawing on the Canvas<\/li>\n<li>Adding an SVG to a Flowable<\/li>\n<li>Scaling SVGs in ReportLab<\/li>\n<li>Using SVG Plots from matplotlib in ReportLab<\/li>\n<li>Using svg2pdf<\/li>\n<li>Wrapping Up<\/li>\n<\/ul>\n<\/li>\n<li>Appendix B &#8211; Getting System Fonts\n<ul>\n<li>The fontTools Package<\/li>\n<li>Getting the System\u00e2\u20ac\u2122s Fonts<\/li>\n<li>Wrapping Up<\/li>\n<\/ul>\n<\/li>\n<li>Appendix C &#8211; Creating a Color Demo\n<ul>\n<li>Getting the Colors<\/li>\n<li>Wrapping Up<\/li>\n<\/ul>\n<\/li>\n<li>Afterword and Thanks<\/li>\n<\/ul>\n","protected":false},"featured_media":7091,"template":"","meta":{"_acf_changed":false,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}}},"class_list":["post-11656","books","type-books","status-publish","has-post-thumbnail","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>ReportLab: PDF Processing with Python - Mouse Vs Python<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.pythonlibrary.org\/books\/reportlab-pdf-processing-with-python\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ReportLab: PDF Processing with Python - Mouse Vs Python\" \/>\n<meta property=\"og:description\" content=\"Buy ReportLab: PDF Processing in Python on\u00a0Amazon,\u00a0Leanpub\u00a0or\u00a0Gumroad\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.pythonlibrary.org\/books\/reportlab-pdf-processing-with-python\/\" \/>\n<meta property=\"og:site_name\" content=\"Mouse Vs Python\" \/>\n<meta property=\"article:modified_time\" content=\"2022-10-05T12:50:32+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.pythonlibrary.org\/wp-content\/uploads\/2018\/01\/reportlab_python_thumb.png\" \/>\n\t<meta property=\"og:image:width\" content=\"180\" \/>\n\t<meta property=\"og:image:height\" content=\"253\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@mousevspython\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blog.pythonlibrary.org\\\/books\\\/reportlab-pdf-processing-with-python\\\/\",\"url\":\"https:\\\/\\\/blog.pythonlibrary.org\\\/books\\\/reportlab-pdf-processing-with-python\\\/\",\"name\":\"ReportLab: PDF Processing with Python - Mouse Vs Python\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/papayawhip-oyster-325761.hostingersite.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blog.pythonlibrary.org\\\/books\\\/reportlab-pdf-processing-with-python\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.pythonlibrary.org\\\/books\\\/reportlab-pdf-processing-with-python\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blog.pythonlibrary.org\\\/wp-content\\\/uploads\\\/2018\\\/01\\\/reportlab_python_thumb.png\",\"datePublished\":\"2022-10-05T11:43:18+00:00\",\"dateModified\":\"2022-10-05T12:50:32+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blog.pythonlibrary.org\\\/books\\\/reportlab-pdf-processing-with-python\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blog.pythonlibrary.org\\\/books\\\/reportlab-pdf-processing-with-python\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/blog.pythonlibrary.org\\\/books\\\/reportlab-pdf-processing-with-python\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blog.pythonlibrary.org\\\/wp-content\\\/uploads\\\/2018\\\/01\\\/reportlab_python_thumb.png\",\"contentUrl\":\"https:\\\/\\\/blog.pythonlibrary.org\\\/wp-content\\\/uploads\\\/2018\\\/01\\\/reportlab_python_thumb.png\",\"width\":180,\"height\":253,\"caption\":\"ReportLab: PDF Processing with Python\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blog.pythonlibrary.org\\\/books\\\/reportlab-pdf-processing-with-python\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/papayawhip-oyster-325761.hostingersite.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ReportLab: PDF Processing with Python\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/papayawhip-oyster-325761.hostingersite.com\\\/#website\",\"url\":\"https:\\\/\\\/papayawhip-oyster-325761.hostingersite.com\\\/\",\"name\":\"Mouse Vs Python\",\"description\":\"Where You Can Learn All About Python Programming\",\"publisher\":{\"@id\":\"https:\\\/\\\/papayawhip-oyster-325761.hostingersite.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/papayawhip-oyster-325761.hostingersite.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/papayawhip-oyster-325761.hostingersite.com\\\/#organization\",\"name\":\"Mouse Vs Python\",\"url\":\"https:\\\/\\\/papayawhip-oyster-325761.hostingersite.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/papayawhip-oyster-325761.hostingersite.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/blog.pythonlibrary.org\\\/wp-content\\\/uploads\\\/2016\\\/03\\\/cropped-cropped-cropped-mvp-1.png\",\"contentUrl\":\"https:\\\/\\\/blog.pythonlibrary.org\\\/wp-content\\\/uploads\\\/2016\\\/03\\\/cropped-cropped-cropped-mvp-1.png\",\"width\":912,\"height\":274,\"caption\":\"Mouse Vs Python\"},\"image\":{\"@id\":\"https:\\\/\\\/papayawhip-oyster-325761.hostingersite.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/mousevspython\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/mousevspython\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCXIKTlRw8OHVQ_WlEMP_jSg\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"ReportLab: PDF Processing with Python - Mouse Vs Python","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.pythonlibrary.org\/books\/reportlab-pdf-processing-with-python\/","og_locale":"en_US","og_type":"article","og_title":"ReportLab: PDF Processing with Python - Mouse Vs Python","og_description":"Buy ReportLab: PDF Processing in Python on\u00a0Amazon,\u00a0Leanpub\u00a0or\u00a0Gumroad","og_url":"https:\/\/blog.pythonlibrary.org\/books\/reportlab-pdf-processing-with-python\/","og_site_name":"Mouse Vs Python","article_modified_time":"2022-10-05T12:50:32+00:00","og_image":[{"width":180,"height":253,"url":"https:\/\/blog.pythonlibrary.org\/wp-content\/uploads\/2018\/01\/reportlab_python_thumb.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_site":"@mousevspython","twitter_misc":{"Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blog.pythonlibrary.org\/books\/reportlab-pdf-processing-with-python\/","url":"https:\/\/blog.pythonlibrary.org\/books\/reportlab-pdf-processing-with-python\/","name":"ReportLab: PDF Processing with Python - Mouse Vs Python","isPartOf":{"@id":"https:\/\/papayawhip-oyster-325761.hostingersite.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.pythonlibrary.org\/books\/reportlab-pdf-processing-with-python\/#primaryimage"},"image":{"@id":"https:\/\/blog.pythonlibrary.org\/books\/reportlab-pdf-processing-with-python\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.pythonlibrary.org\/wp-content\/uploads\/2018\/01\/reportlab_python_thumb.png","datePublished":"2022-10-05T11:43:18+00:00","dateModified":"2022-10-05T12:50:32+00:00","breadcrumb":{"@id":"https:\/\/blog.pythonlibrary.org\/books\/reportlab-pdf-processing-with-python\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.pythonlibrary.org\/books\/reportlab-pdf-processing-with-python\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.pythonlibrary.org\/books\/reportlab-pdf-processing-with-python\/#primaryimage","url":"https:\/\/blog.pythonlibrary.org\/wp-content\/uploads\/2018\/01\/reportlab_python_thumb.png","contentUrl":"https:\/\/blog.pythonlibrary.org\/wp-content\/uploads\/2018\/01\/reportlab_python_thumb.png","width":180,"height":253,"caption":"ReportLab: PDF Processing with Python"},{"@type":"BreadcrumbList","@id":"https:\/\/blog.pythonlibrary.org\/books\/reportlab-pdf-processing-with-python\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/papayawhip-oyster-325761.hostingersite.com\/"},{"@type":"ListItem","position":2,"name":"ReportLab: PDF Processing with Python"}]},{"@type":"WebSite","@id":"https:\/\/papayawhip-oyster-325761.hostingersite.com\/#website","url":"https:\/\/papayawhip-oyster-325761.hostingersite.com\/","name":"Mouse Vs Python","description":"Where You Can Learn All About Python Programming","publisher":{"@id":"https:\/\/papayawhip-oyster-325761.hostingersite.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/papayawhip-oyster-325761.hostingersite.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/papayawhip-oyster-325761.hostingersite.com\/#organization","name":"Mouse Vs Python","url":"https:\/\/papayawhip-oyster-325761.hostingersite.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/papayawhip-oyster-325761.hostingersite.com\/#\/schema\/logo\/image\/","url":"https:\/\/blog.pythonlibrary.org\/wp-content\/uploads\/2016\/03\/cropped-cropped-cropped-mvp-1.png","contentUrl":"https:\/\/blog.pythonlibrary.org\/wp-content\/uploads\/2016\/03\/cropped-cropped-cropped-mvp-1.png","width":912,"height":274,"caption":"Mouse Vs Python"},"image":{"@id":"https:\/\/papayawhip-oyster-325761.hostingersite.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/mousevspython","https:\/\/www.linkedin.com\/company\/mousevspython","https:\/\/www.youtube.com\/channel\/UCXIKTlRw8OHVQ_WlEMP_jSg"]}]}},"_links":{"self":[{"href":"https:\/\/blog.pythonlibrary.org\/wp-json\/wp\/v2\/books\/11656","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.pythonlibrary.org\/wp-json\/wp\/v2\/books"}],"about":[{"href":"https:\/\/blog.pythonlibrary.org\/wp-json\/wp\/v2\/types\/books"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.pythonlibrary.org\/wp-json\/wp\/v2\/media\/7091"}],"wp:attachment":[{"href":"https:\/\/blog.pythonlibrary.org\/wp-json\/wp\/v2\/media?parent=11656"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}