[{"data":1,"prerenderedAt":3924},["ShallowReactive",2],{"$f0kvBnnDHIzDLZEYMj0bX-xwEmr-gLLxPg_R8Q1Pofn4":3,"footer-learning-topics":1249,"tutorials":2290,"\u002Flearning\u002Ftutorials\u002F-blog-content":2690,"$fckgavYb0AcZK2OLpoJka5dPkPYWwprpnBwh6X_TGsA8":3826},{"data":4,"meta":1248},{"id":5,"createdAt":6,"updatedAt":7,"publishedAt":8,"stateful_cta":9,"documentId":43,"seo":44,"nav":86,"footer_developers":146,"footer_products":189,"api_tool_buckets":207},1,"2024-07-31T19:55:31.750Z","2026-07-13T21:19:43.933Z","2024-10-02T18:31:05.316Z",{"pro":10,"default":20,"premium":27,"starter":31,"enterprise":39},{"links":11,"title":18,"description":19},[12,15],{"to":13,"label":14},"\u002Fapilab\u002F","Experiment with API Lab",{"to":16,"label":17},"\u002Fpricing\u002F","Compare Plans","New Tools and Solutions!","We strive to bring you new and improved solutions to your most pressing PDF problems.  Let us know how we can help, and check back often to see what our latest updates can do for you.",{"links":21,"title":25,"description":26},[22],{"label":23,"action":24},"Get Started","signup","Generate a self-service API Key now!","Create your FREE API Key to start processing PDFs in seconds, only possible with pdfRest.",{"links":28,"title":18,"description":19},[29,30],{"to":13,"label":14},{"to":16,"label":17},{"links":32,"title":37,"description":38},[33,36],{"to":34,"label":35},"\u002Fselectplan\u002F","Upgrade Your Plan",{"to":16,"label":17},"Get ready to launch!","Your Starter plan is perfect for testing and prototyping.  When you're ready to launch PDF processing in your website, application, or workflow, remember to upgrade your plan for unlimited access.",{"links":40,"title":18,"description":19},[41,42],{"to":13,"label":14},{"to":16,"label":17},"r04g5q4cjgbscjtve160zt7q",{"id":45,"metaTitle":46,"metaDescription":47,"canonicalUrl":48,"structured_data":49},720,"pdfRest | Powerful PDF API for Developers, Programmatic PDF Processing","pdfRest is a REST API toolkit for developers to programmatically integrate powerful PDF processing solutions into any application or workflow, quickly and easily.",null,{"@graph":50,"@context":85},[51,75,79],{"@id":52,"url":53,"logo":54,"name":57,"@type":58,"sameAs":59,"knowsAbout":63,"description":71,"parentOrganization":72},"https:\u002F\u002Fpdfrest.com\u002F#organization","https:\u002F\u002Fpdfrest.com\u002F",{"url":55,"@type":56},"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Fpdf_Rest_logo_1500_500_dark_bg_b7059b68fc.png","ImageObject","pdfRest","Organization",[60,61,62],"https:\u002F\u002Fgithub.com\u002Fpdfrest","https:\u002F\u002Fhub.docker.com\u002Fr\u002Fpdfrest\u002Fpdf-api-toolkit","https:\u002F\u002Fpypi.org\u002Fproject\u002Fpdfrest\u002F",[64,65,66,67,68,69,70],"PDF processing","PDF conversion API","OCR","Document automation","REST API","PDF\u002FA","PDF\u002FX","pdfRest is a REST API toolkit that lets developers convert, merge, split, compress, OCR, and secure PDF files through simple API calls. Powered by Adobe PDF Library.",{"url":73,"name":74,"@type":58},"https:\u002F\u002Fwww.datalogics.com\u002F","Datalogics, Inc.",{"@id":76,"url":53,"name":57,"@type":77,"publisher":78},"https:\u002F\u002Fpdfrest.com\u002F#website","WebSite",{"@id":52},{"@id":80,"url":53,"name":46,"@type":81,"about":82,"isPartOf":83,"description":84},"https:\u002F\u002Fpdfrest.com\u002F#webpage","WebPage",{"@id":52},{"@id":76},"Integrate powerful PDF processing into any application. Deploy pdfRest in the cloud, self-host in a Docker container, or run on AWS Marketplace.","https:\u002F\u002Fschema.org",[87,91,95,99,126,138,142],{"id":88,"label":89,"description":48,"to":13,"icon":48,"external":48,"target":48,"children":48,"__component":90},133,"API Lab","header.link",{"id":92,"label":93,"description":48,"to":94,"icon":48,"external":48,"target":48,"children":48,"__component":90},134,"API Tools","\u002Fapitools\u002F",{"id":96,"label":97,"description":48,"to":98,"icon":48,"external":48,"target":48,"children":48,"__component":90},135,"Learning","\u002Flearning\u002F",{"id":100,"label":101,"description":48,"to":102,"icon":48,"external":48,"target":48,"children":103,"__component":90},136,"Products","\u002Fapi-toolkit\u002F",[104,120],{"to":102,"label":105,"children":106,"description":119},"pdfRest API Toolkit",[107,111,115],{"to":108,"label":109,"description":110},"\u002Fproducts\u002Fpdfrest-api-toolkit-cloud\u002F","Cloud","Get started fast with easy, reliable, secure integration",{"to":112,"label":113,"description":114},"\u002Fproducts\u002Fpdfrest-api-toolkit-container\u002F","Container","Achieve secure, reliable, and seamless on-premises hosting integration",{"to":116,"label":117,"description":118},"\u002Fproducts\u002Fpdfrest-api-toolkit-on-aws\u002F","On AWS","Take full control with configurable, private backend","Full-featured PDF processing power",{"to":121,"label":122,"target":123,"external":124,"description":125},"https:\u002F\u002Fpdfassistant.ai\u002F","pdfAssistant.ai","_blank",true,"No-Code PDF Automation",{"id":127,"label":128,"description":48,"to":16,"icon":48,"external":48,"target":48,"children":129,"__component":90},137,"Pricing",[130],{"to":16,"label":105,"children":131,"description":119},[132,134,136],{"to":133,"label":109,"exactHash":124,"description":110},"\u002Fpricing\u002F#cloud",{"to":135,"label":113,"exactHash":124,"description":118},"\u002Fpricing\u002F#container",{"to":137,"label":117,"exactHash":124,"description":118},"\u002Fpricing\u002F#on-aws",{"id":139,"label":140,"description":48,"to":141,"icon":48,"external":48,"target":123,"children":48,"__component":90},138,"Documentation","https:\u002F\u002Fdocs.pdfrest.com\u002F",{"id":143,"label":144,"description":48,"to":145,"icon":48,"external":48,"target":123,"children":48,"__component":90},139,"Support","\u002Fsupport\u002F",[147,157,167,184],{"id":148,"label":149,"description":48,"to":48,"icon":48,"external":48,"target":48,"children":150,"__component":90},140,"API Reference Guides",[151,154],{"to":152,"label":153,"target":123,"external":124},"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F","Cloud API",{"to":155,"label":156,"target":123,"external":124},"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-container\u002Fapi-reference-guide\u002F","Self-Hosted API",{"id":158,"label":159,"description":48,"to":48,"icon":48,"external":48,"target":48,"children":160,"__component":90},141,"Getting Started Guides",[161,163,165],{"to":162,"label":109,"target":123,"external":124},"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fgetting-started\u002F",{"to":164,"label":117,"target":123,"external":124},"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-on-aws\u002Fgetting-started\u002F",{"to":166,"label":113,"target":123,"external":124},"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-container\u002Fgetting-started\u002F",{"id":168,"label":169,"description":48,"to":48,"icon":48,"external":48,"target":48,"children":170,"__component":90},142,"Resources",[171,172,175,178,181],{"to":13,"label":89},{"to":173,"label":174,"target":123,"external":124},"https:\u002F\u002Fgithub.com\u002Fdatalogics\u002Fpdf-rest-api-samples","GitHub",{"to":176,"label":177,"target":123,"external":124},"https:\u002F\u002Fwww.postman.com\u002Fpdfrest\u002F","Postman",{"to":179,"label":180,"target":123,"external":124},"https:\u002F\u002Fstatus.pdfrest.com\u002F","Status",{"to":182,"label":183,"target":123,"external":124},"https:\u002F\u002Ftrust.datalogics.com\u002F","Trust Center",{"id":185,"label":144,"description":48,"to":48,"icon":48,"external":48,"target":48,"children":186,"__component":90},143,[187],{"to":145,"label":188,"target":123,"external":124},"Contact Us",[190,197],{"id":191,"label":105,"description":48,"to":48,"icon":48,"external":48,"target":48,"children":192,"__component":90},144,[193,194,195,196],{"to":108,"label":109},{"to":116,"label":117},{"to":112,"label":113},{"to":16,"label":128},{"id":198,"label":122,"description":48,"to":48,"icon":48,"external":48,"target":48,"children":199,"__component":90},166,[200,202,205],{"to":121,"label":201,"target":123,"external":124},"AI Assistant",{"to":203,"label":204,"target":123,"external":124},"https:\u002F\u002Fpdfassistant.ai\u002Fproducts\u002Fexternal-plugins-and-integrations\u002F","Plugins & Integrations",{"to":206,"label":128,"target":123,"external":124},"https:\u002F\u002Fpdfassistant.ai\u002Fpricing\u002F",[208,272,503,664,810,933,1054,1152],{"id":209,"name":210,"description":211,"createdAt":212,"updatedAt":213,"publishedAt":214,"rank":215,"documentId":216,"api_tools":217},8,"Analyze","Leverage advanced AI to evaluate, interpret, and transform document content, performing complex enhancements and analysis.","2025-09-29T19:12:05.140Z","2025-09-29T20:54:02.065Z","2025-09-29T20:54:02.056Z",0,"d1wcx0ovi8arijsk579giafy",[218,248],{"id":219,"name":220,"tool_page_desc":221,"new_tool":124,"pro_tool":124,"header_blurb":222,"tool_card_desc":223,"youtube_url":48,"why_section_title":224,"why_section_desc":225,"slug":226,"createdAt":227,"updatedAt":228,"publishedAt":229,"publish_date":230,"rank":48,"cloud_only":124,"documentId":231,"icon":232},71,"Summarize PDF","Summarize PDF is an AI-powered REST API Tool that leverages OpenAI technology to intelligently process and condense the text content of any PDF, Markdown, or Plain Text file. Designed for speed and accuracy, this tool extracts key information and generates high-quality summaries based on your precise specifications, instantly transforming large documents into actionable insights.\n## Key Benefits of Summarize PDF API\n- Instantly extract and process all text from a PDF, enabling OpenAI's models to intelligently identify and summarize the most critical information.\n- Precisely control the output by specifying a target word count and selecting from a variety of summary formats.\n- Limit the scope of the summarization by using the pages parameter to process only a specific page or a range of pages from the document.\n- Choose to receive the summarized content directly in the JSON response or as a separate downloadable file for easy integration into your application workflows.\n- Quickly transform lengthy reports, legal documents, or research papers into concise, readable summaries to accelerate comprehension and improve workflow efficiency.\n- Select markdown as the output format to ensure the summary is clean, structured, and ready for immediate use in web content, documentation, or publishing systems.","Generate concise summaries using AI","Generate concise summaries from PDF text using AI, with customizable length and format options.","Why is pdfRest the best API to summarize PDF text?","pdfRest offers the best solution for PDF text summarization because it delivers customizable AI-driven insights, guarantees precise content extraction, and offers developer-focused output controls.","summarize-pdf","2025-09-29T19:13:30.538Z","2026-07-10T19:39:18.978Z","2025-09-29T20:55:10.696Z","2024-08-29T05:00:00.000Z","r3chcd686h0x5q8dmope5h08",{"id":233,"name":234,"alternativeText":235,"caption":48,"width":236,"height":237,"formats":48,"hash":238,"ext":239,"mime":240,"size":241,"url":242,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":244,"updatedAt":245,"documentId":246,"publishedAt":247,"focalPoint":48},617,"summarize-pdf.svg","Summarize PDF API Tool",122,75,"summarize_pdf_d37a1a2a11",".svg","image\u002Fsvg+xml",11.41,"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Fsummarize_pdf_d37a1a2a11.svg","strapi-provider-upload-strapi-cloud","2025-09-29T20:19:27.277Z","2025-09-29T20:19:40.581Z","lxlqtu0w9bikyvr6rim6mb4r","2026-09-02T14:52:18.710Z",{"id":249,"name":250,"tool_page_desc":251,"new_tool":124,"pro_tool":124,"header_blurb":252,"tool_card_desc":253,"youtube_url":48,"why_section_title":254,"why_section_desc":255,"slug":256,"createdAt":257,"updatedAt":258,"publishedAt":259,"publish_date":260,"rank":48,"cloud_only":124,"documentId":261,"icon":262},72,"Translate PDF","Translate PDF is an AI-powered REST API Tool that leverages OpenAI technology to intelligently translate the language of the text found within any PDF, Markdown, or Plain Text file. Designed to maintain accuracy and context across languages, this tool extracts content and translates the text into your specified target language.\n\n## Key Benefits of Translate PDF API\n\n- Instantly convert technical documents, legal contracts, and reports into virtually any language supported by OpenAI's advanced models, enabling global accessibility.\n- Automatically detect and translate the entire text content of a PDF, ensuring minimal loss of context and preserving the document's original structure.\n- Restrict translation to a specific page or range of pages for efficient processing of very large or multi-section documents.\n- Easily process PDF, Markdown, or Plain Text files and receive the translated content as structured Markdown or raw Plain Text output.\n- Choose to receive the translated content directly within the JSON response or as a separate downloadable file for flexible, high-volume application workflows.","Translate language of PDF text with AI","Translate text content extracted from PDFs into any language using AI.","Why is pdfRest the best API to translate PDF text?","pdfRest offers the best solution for PDF text translation because it delivers fast, contextual language conversion, ensures reliable content extraction from complex documents, and offers seamless integration into global workflows.","translate-pdf","2025-10-22T03:17:29.590Z","2026-07-10T19:40:04.170Z","2025-10-22T21:59:58.416Z","2025-10-21T05:00:00.000Z","ym3uvqo78jjwcceqjnrtobgv",{"id":263,"name":264,"alternativeText":265,"caption":48,"width":236,"height":237,"formats":48,"hash":266,"ext":239,"mime":240,"size":267,"url":268,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":269,"updatedAt":270,"documentId":271,"publishedAt":247,"focalPoint":48},652,"translate-pdf.svg","Translate PDF API Tool","translate_pdf_680f9c11ea",12.18,"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Ftranslate_pdf_680f9c11ea.svg","2025-10-13T17:10:25.435Z","2025-10-22T02:46:53.879Z","hfaygimansou8gyewfqxt8dv",{"id":5,"name":273,"description":274,"createdAt":275,"updatedAt":276,"publishedAt":277,"rank":5,"documentId":278,"api_tools":279},"Convert","Convert files between formats and conform to specialized PDF standards","2024-08-13T18:39:14.954Z","2025-09-29T20:41:30.711Z","2024-08-13T18:39:16.447Z","tmnonktl8nl6p539bmwocdd7",[280,307,332,357,382,407,431,454,478],{"id":281,"name":282,"tool_page_desc":283,"new_tool":284,"pro_tool":124,"header_blurb":285,"tool_card_desc":286,"youtube_url":287,"why_section_title":288,"why_section_desc":289,"slug":290,"createdAt":291,"updatedAt":292,"publishedAt":293,"publish_date":294,"rank":295,"cloud_only":48,"documentId":296,"icon":297},130,"PDF to Word","PDF to Word is a REST API tool designed to seamlessly convert PDF documents into Microsoft Word format, facilitating easy editing and collaboration. As a reliable PDF to Word converter, it gives developers a fast, accurate way to automate the transformation of PDFs into editable Word documents at scale.\n## Key Benefits of PDF to Word API\n- Simplify document editing by converting PDFs to Word (.docx), allowing for easy text modifications, comments, and change tracking.\n- Preserve original formatting and layout to maintain the integrity of your documents during conversion.\n- Enhance collaboration by enabling multiple users to work on the same document in Word format, ideal for legal, marketing, and project management teams.\n- Integrate effortlessly into existing workflows with a flexible and intuitive REST API interface.\n- Achieve reliable and accurate conversion results with advanced technology, minimizing common issues like formatting errors and data loss.",false,"Convert PDF to editable Word doc","Convert PDF documents to Microsoft Word documents for easy editing","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002F0Mx5rEtVSrg","Why is pdfRest the best API to convert PDF to Word?","pdfRest offers the best solution for converting PDF files to Word documents, because it supports easy document editing, reliable results, and simple integration.","pdf-to-word","2024-08-13T19:32:36.780Z","2026-09-18T21:52:33.924Z","2026-09-18T21:52:36.076Z","2024-09-03T05:00:00.000Z",2,"a4f0zj0w5po6sdzy5jb71usx",{"id":298,"name":299,"alternativeText":300,"caption":48,"width":236,"height":237,"formats":48,"hash":301,"ext":239,"mime":240,"size":302,"url":303,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":304,"updatedAt":305,"documentId":306,"publishedAt":247,"focalPoint":48},59,"pdf-to-word.svg","PDF file getting converted to a Microsoft Word file","pdf_to_word_78b075de3f",9.49,"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Fpdf_to_word_78b075de3f.svg","2024-08-13T19:23:27.864Z","2024-08-15T14:52:17.742Z","slo9j8s6cts7dw3ogm09o9z7",{"id":308,"name":309,"tool_page_desc":310,"new_tool":284,"pro_tool":124,"header_blurb":311,"tool_card_desc":312,"youtube_url":313,"why_section_title":314,"why_section_desc":315,"slug":316,"createdAt":317,"updatedAt":318,"publishedAt":319,"publish_date":294,"rank":320,"cloud_only":48,"documentId":321,"icon":322},131,"PDF to Excel","PDF to Excel is a REST API tool that converts PDF documents to Microsoft Excel spreadsheets to support advanced data analysis. This Pro Tool empowers developers to reliably extract tabular data from PDFs and transform it into editable Excel formats, facilitating powerful data manipulation, reporting, and visualization.\n\n## Key Benefits of PDF to Excel API\n- Streamline data analysis by extracting valuable tabular data from PDF documents directly into Excel spreadsheets, ready for formulas, macros, and charting.\n- Ensure high-quality conversion, maintaining accurate formatting and data integrity from the original PDF document to avoid common problems like data loss or compatibility issues.\n- Facilitate easy integration through a flexible and intuitive REST API, allowing you to seamlessly embed programmatic PDF to Excel conversions into any development project or workflow.\n- Automate the extraction of critical business data from invoices, reports, or scanned documents, eliminating manual data entry and reducing errors.\n- Support sophisticated business intelligence by converting static PDF data into dynamic Excel formats, enabling deeper insights and robust reporting.\n- Leverage a powerful Pro Tool to handle complex PDF structures and deliver reliable Excel output, crucial for enterprise-level data processing.","Convert PDF to Excel spreadsheet","Convert PDF documents to Microsoft Excel spreadsheets to edit and analyze data","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002F60ydHSfzufM","Why is pdfRest the best API to convert PDF to Excel?","pdfRest offers the best solution for converting PDF documents to Excel spreadsheets, because it supports streamlined data analysis, high-quality conversion, and easy integration.","pdf-to-excel","2024-08-15T14:47:44.255Z","2026-09-18T21:52:48.323Z","2026-09-18T21:52:50.535Z",3,"wlr9iee95rhr5batrx3i4si0",{"id":323,"name":324,"alternativeText":325,"caption":48,"width":236,"height":237,"formats":48,"hash":326,"ext":239,"mime":240,"size":327,"url":328,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":329,"updatedAt":330,"documentId":331,"publishedAt":247,"focalPoint":48},60,"pdf-to-excel.svg","PDF file getting converted to a Microsoft Excel file","pdf_to_excel_a9a75e407e",8.98,"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Fpdf_to_excel_a9a75e407e.svg","2024-08-15T14:43:38.388Z","2024-08-15T14:51:01.713Z","eowt7jvwvyr946wgo8e4kp7o",{"id":333,"name":334,"tool_page_desc":335,"new_tool":284,"pro_tool":124,"header_blurb":336,"tool_card_desc":337,"youtube_url":338,"why_section_title":339,"why_section_desc":340,"slug":341,"createdAt":342,"updatedAt":343,"publishedAt":344,"publish_date":294,"rank":345,"cloud_only":48,"documentId":346,"icon":347},132,"PDF to PowerPoint","PDF to PowerPoint is a REST API tool that converts PDF documents into Microsoft PowerPoint files, enabling the creation of fully editable presentations. As a reliable PDF to PowerPoint converter, it transforms static PDF content into dynamic slides — making it ideal for enhancing presentation capabilities and streamlining document workflows. Developers looking for a fast PDF to PPT converter can automate the entire process with a single API call.\n\n## Key Benefits of PDF to PowerPoint API\n- Convert PDFs into editable PowerPoint presentations (.pptx) for easy modification of text, layouts, and multimedia integration.\n- Preserve original formatting and content, ensuring professional quality in converted slides.\n- Automate the PDF to PPT conversion process to seamlessly integrate into existing workflows, saving time and resources.\n- Utilize advanced conversion technology to ensure accurate and reliable transformation of PDFs into PowerPoint slides.\n- Empower users to create compelling presentations from existing PDFs, improving communication and engagement.\n- Reliably handle high-volume PDF to PPTX document conversion, supporting the needs of growing businesses and enterprises.","Convert PDF to PowerPoint","Convert PDF documents to adjustable Microsoft PowerPoint presentations","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002F-EBpzsWki_Q","Why is pdfRest the best API to convert PDF to PowerPoint?","pdfRest offers the best solution for converting PDF documents to PowerPoint presentations, because it supports streamlined presentation creation, simple integration, and accurate results.","pdf-to-powerpoint","2024-08-15T14:56:52.093Z","2026-09-18T21:53:06.219Z","2026-09-18T21:53:07.824Z",4,"sscxdrv60vjwg8r290iihszl",{"id":348,"name":349,"alternativeText":350,"caption":48,"width":236,"height":237,"formats":48,"hash":351,"ext":239,"mime":240,"size":352,"url":353,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":354,"updatedAt":355,"documentId":356,"publishedAt":247,"focalPoint":48},61,"pdf-to-ppt.svg","PDF file getting converted to a Microsoft PowerPoint file","pdf_to_ppt_9a564fb6ab",9.3,"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Fpdf_to_ppt_9a564fb6ab.svg","2024-08-15T14:54:07.383Z","2024-08-15T14:54:15.261Z","c2c8b9r6pdfnvvjfm2dwnljx",{"id":88,"name":358,"tool_page_desc":359,"new_tool":284,"pro_tool":284,"header_blurb":360,"tool_card_desc":361,"youtube_url":362,"why_section_title":363,"why_section_desc":364,"slug":365,"createdAt":366,"updatedAt":367,"publishedAt":368,"publish_date":294,"rank":369,"cloud_only":48,"documentId":370,"icon":371},"Convert to PDF","Convert to PDF is a REST API tool that accepts a wide range of file types as input and reliably converts each into a standardized PDF document. It's designed to provide developers with robust, high-quality document conversion capabilities, ensuring seamless integration and consistent, compliant PDF output for diverse applications.\n## Key Benefits of Convert to PDF API\n- Support robust format conversion for Word, Excel, PowerPoint, images (JPEG, TIF, BMP, PNG), Email (.eml), PostScript, HTML, Markdown, plain text, JSON, XML, and CSV.\n- Generate standardized PDF documents optimized with high-quality Adobe® PDF Library™ technology, ensuring consistent and reliable compliance with PDF ISO 32000 specifications.\n- Create tagged PDF output from supported Office and structured-text input to support accessible document workflows and downstream processing.\n- Fine-tune file size, image quality, and page presentation with controls for compression, downsampling, page size, margins, orientation, HTML web layouts, and Adobe PDF settings files for PostScript conversion.\n- Generate styled PDFs from structured text with format-specific options for fonts, colors, headings, tables, JSON and XML views, and Markdown images.\n- Streamline content-standardization workflows by converting diverse source files into a consistent PDF format for sharing, review, and downstream processing.","Convert from many file formats to PDF","Easily convert Word, Excel, PowerPoint, BMP, TIF, PNG, JPG, Email, HTML, PostScript, Markdown, plain text, JSON, XML, and CSV files into PDF documents.","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FL3s-VTvI6vs","Why is pdfRest the best API to convert files to PDF?","pdfRest's Convert to PDF API combines broad format support, reliable PDF output, and granular control over conversion results in a single REST API tool. It supports both traditional document conversion and PDF generation from structured content.","convert-to-pdf","2024-08-15T15:06:40.139Z","2026-09-18T21:53:40.811Z","2026-09-18T21:53:42.711Z",5,"huiyfjb1a34wtm4nlbivt0wb",{"id":372,"name":373,"alternativeText":374,"caption":48,"width":185,"height":375,"formats":48,"hash":376,"ext":239,"mime":240,"size":377,"url":378,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":379,"updatedAt":380,"documentId":381,"publishedAt":247,"focalPoint":48},62,"convert-to-pdf.svg","A file being converted to PDF",76,"convert_to_pdf_9b2c4de719",7.11,"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Fconvert_to_pdf_9b2c4de719.svg","2024-08-15T14:59:14.354Z","2024-08-15T14:59:34.643Z","ye3tiireuqsonvexan0kojen",{"id":92,"name":383,"tool_page_desc":384,"new_tool":284,"pro_tool":284,"header_blurb":385,"tool_card_desc":386,"youtube_url":387,"why_section_title":388,"why_section_desc":389,"slug":390,"createdAt":391,"updatedAt":392,"publishedAt":393,"publish_date":294,"rank":394,"cloud_only":48,"documentId":395,"icon":396},"Convert to PDF\u002FX","Convert to PDF\u002FX is a REST API tool designed to create print-ready PDFs using trusted Adobe technology. By converting to PDF\u002FX, developers can optimize PDFs for high-quality printing, ensuring compatibility with prepress print requirements.  \n## Key Benefits of Convert to PDF\u002FX API\n- Automate preflight workflows, eliminating the need for manual processing in Acrobat, Illustrator, or other software.\n- Standardize color profiles and embed fonts to ensure accurate color reproduction and prevent font substitution issues.\n- Guarantee consistent and reliable print quality compatible with any prepress pipeline.\n- Leverage PDF\u002FX-4 and PDF\u002FX-6 for advanced features tailored to modern printing requirements.\n- Ensure compatibility with older printing systems by flattening transparencies and adhering to PDF\u002FX-1a or PDF\u002FX-3.\n","Convert PDF to PDF\u002FX for print","Convert standard PDF files to several PDF\u002FX formats to meet prepress print requirements.","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FpP01klfXVd4","Why is pdfRest the best API to convert PDF to PDF\u002FX?","pdfRest offers the best solution for converting PDF documents to PDF\u002FX specifications, because it uses the most reliable conversion technology, supports robust versions, and offers preflight conditional processing.","convert-to-pdfx","2024-08-15T15:13:57.477Z","2026-09-18T21:53:55.656Z","2026-09-18T21:53:57.440Z",6,"gxytllvknnromirdpb1uuy1o",{"id":397,"name":398,"alternativeText":383,"caption":48,"width":399,"height":400,"formats":48,"hash":401,"ext":239,"mime":240,"size":402,"url":403,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":404,"updatedAt":405,"documentId":406,"publishedAt":247,"focalPoint":48},63,"convert-to-pdfx.svg",69,84,"convert_to_pdfx_8c2592340a",5.89,"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Fconvert_to_pdfx_8c2592340a.svg","2024-08-15T15:08:51.316Z","2024-08-15T15:09:07.442Z","ashigwsibqd0okq1un5m2b6s",{"id":96,"name":408,"tool_page_desc":409,"new_tool":284,"pro_tool":284,"header_blurb":410,"tool_card_desc":411,"youtube_url":412,"why_section_title":413,"why_section_desc":414,"slug":415,"createdAt":416,"updatedAt":417,"publishedAt":418,"publish_date":294,"rank":419,"cloud_only":48,"documentId":420,"icon":421},"Convert to PDF\u002FA","Convert to PDF\u002FA is a REST API tool designed to transform standard PDF files into PDF\u002FA formats, ensuring long-term preservation and regulatory compliance with archival standards. This is essential for businesses and developers looking to optimize PDF files for archive, maintaining document integrity and accessibility over time.\n## Key Benefits of Convert to PDF\u002FA API\n- Convert PDFs to PDF\u002FA to meet stringent archival compliance requirements, ensuring your documents adhere to international standards for long-term preservation.\n- Preserve document integrity by embedding fonts and standardizing colors, preventing data loss and maintaining the original appearance of your files for effective archiving.\n- Ensure long-term accessibility by converting documents into a format specifically designed for digital archiving, ideal for legal, financial, and governmental records.\n- Automate the conversion process to enhance efficiency and reduce manual intervention, perfect for high-volume document management and archival workflows.\n- Leverage high-quality Adobe conversion technology that reliably conforms to the ISO 19005-2 specification for PDF\u002FA.\n- Choose from PDF\u002FA-1b, PDF\u002FA-2b, PDF\u002FA-2u, PDF\u002FA-3b, and PDF\u002FA-3u to match your specific compliance requirements.\n","Convert PDF to PDF\u002FA for archival","Convert PDFs to standard PDF\u002FA formats to ensure compliance and support long-term preservation of documents.","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FiY6lrUe_F_E","Why is pdfRest the best API to convert PDF to PDF\u002FA?","pdfRest offers the best solution for converting PDF documents to PDF\u002FA specifications, because it supports top PDF\u002FA conformance, robust versions, and problemetic input files.","convert-to-pdfa","2024-08-15T15:23:18.767Z","2026-09-18T21:54:11.170Z","2026-09-18T21:54:12.958Z",7,"mgm5ociawaoqbymsete4ji84",{"id":422,"name":423,"alternativeText":408,"caption":48,"width":424,"height":400,"formats":48,"hash":425,"ext":239,"mime":240,"size":426,"url":427,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":428,"updatedAt":429,"documentId":430,"publishedAt":247,"focalPoint":48},64,"convert-to-pdfa.svg",70,"convert_to_pdfa_5dd041ead2",5.3,"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Fconvert_to_pdfa_5dd041ead2.svg","2024-08-15T15:16:54.979Z","2024-08-15T15:17:11.841Z","xm01vgrbliqyhegmbc64rgat",{"id":100,"name":432,"tool_page_desc":433,"new_tool":284,"pro_tool":284,"header_blurb":434,"tool_card_desc":435,"youtube_url":436,"why_section_title":437,"why_section_desc":438,"slug":439,"createdAt":440,"updatedAt":441,"publishedAt":442,"publish_date":294,"rank":209,"cloud_only":48,"documentId":443,"icon":444},"PDF to Images","PDF to Images is a REST API tool that accurately renders each page of a PDF document into a high-quality graphic image. Leveraging Adobe PDF rendering technology for unrivaled color management, this API empowers developers to automate the conversion process, making PDF content easily accessible for web display, digital previews, and streamlined publishing workflows.\n\n### Key Benefits of PDF to Images API\n\n- Convert PDF pages to images with pixel-perfect accuracy, preserving the original layout and aesthetic integrity for a consistent visual representation.\n- Generate high-quality thumbnails for document previews, search results, or digital asset management systems to improve user experience.\n- Support multiple image formats including JPEG, PNG, GIF, TIFF, and BMP, allowing you to choose the best format for your specific needs.\n- Control output image quality and resolution with customizable parameters like Resolution (DPI) and JPEG quality, giving you granular control over file size and visual fidelity.\n- Enhance security and data privacy by converting sensitive PDF content into flattened, uneditable images, and benefit from GDPR and HIPAA-compliant processing.\n- Streamline workflows by converting specific pages from a PDF using our one-to-many functionality to get a separate image file for each page with a single API call.","Render PDF pages to image formats","Convert PDFs to JPGs, BMPs, PNGs, GIFs, and TIFs, accurately preserving color fidelity.","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FTBh3eHFO9MQ","Why is pdfRest the best API to convert PDF to image files?","pdfRest offers the best solution for converting PDF documents to graphic image files, because it supports unrivaled color management, images for each PDF page, and intuitive design.","pdf-to-images","2024-08-15T15:29:14.854Z","2026-09-18T21:54:36.510Z","2026-09-18T21:54:38.221Z","jr6zly7tchk0iz4zi8s4rlak",{"id":445,"name":446,"alternativeText":447,"caption":48,"width":185,"height":375,"formats":48,"hash":448,"ext":239,"mime":240,"size":449,"url":450,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":451,"updatedAt":452,"documentId":453,"publishedAt":247,"focalPoint":48},65,"pdf-to-images.svg","A PDF file converted to an image","pdf_to_images_e05f4809dc",12.31,"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Fpdf_to_images_e05f4809dc.svg","2024-08-15T15:25:48.244Z","2024-08-15T15:25:57.531Z","r40074mrrb7xv02yxzhzhnl3",{"id":127,"name":455,"tool_page_desc":456,"new_tool":124,"pro_tool":48,"header_blurb":457,"tool_card_desc":458,"youtube_url":48,"why_section_title":459,"why_section_desc":460,"slug":461,"createdAt":462,"updatedAt":463,"publishedAt":464,"publish_date":465,"rank":466,"cloud_only":48,"documentId":467,"icon":468},"PDF to PostScript","Convert PDF to PostScript is a REST API tool that creates downloadable PostScript files from PDF documents. Developers can select the PostScript language level, pages to export, binary-output behavior, scaling, rotation, shrink-to-fit behavior, and whether printable annotations are included.\n\n## Key Benefits of PDF to PostScript API\n\n- Convert PDF documents into PostScript Level 2 or Level 3 files through a REST API for print, prepress, and legacy production systems that depend on PostScript output.\n- Export an entire PDF or only the pages a workflow needs, helping publishing and production teams prepare targeted PostScript deliverables without manually splitting source files.\n- Choose binary PostScript for compact output or text-safe, 7-bit PostScript for downstream systems, transfer paths, or production environments with compatibility constraints.\n- Adjust scale, rotation, and shrink-to-fit behavior at conversion time to prepare page content for a target output process while preserving the original PDF.\n- Include or omit printable annotations so the generated PostScript reflects the intended production view, whether notes and markups should be carried forward or excluded.\n- Pair with Convert to PDF to support PDF refrying: a PDF -> PostScript -> PDF roundtrip used in certain print and prepress workflows to produce PostScript-based delivery derivatives.\n","Convert PDF to PostScript for print production workflows","Create reliable PostScript output from PDF files for print, prepress, and legacy production systems that depend on PostScript.","Why is pdfRest the best API to convert PDF to PostScript?","pdfRest offers the best solution for converting PDF documents to PostScript, because it combines Adobe technology, production-ready output controls, and a scalable API workflow for print, prepress, and legacy systems.","pdf-to-postscript","2026-09-03T22:03:17.782Z","2026-09-18T21:54:53.661Z","2026-09-18T21:54:55.450Z","2026-09-04T05:00:00.000Z",9,"pbcdzy62zeuvhhzt8g1ubs81",{"id":469,"name":470,"alternativeText":471,"caption":48,"width":185,"height":237,"formats":48,"hash":472,"ext":239,"mime":240,"size":473,"url":474,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":475,"updatedAt":476,"documentId":477,"publishedAt":475,"focalPoint":48},718,"pdf-to-postscript.svg","PDF to PostScript API Tool","pdf_to_postscript_dd764fea4c",11.28,"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Fpdf_to_postscript_dd764fea4c.svg","2026-09-03T21:04:21.005Z","2026-09-03T21:04:36.851Z","sqjhdfebkpd6e4hncpr0bao9",{"id":479,"name":480,"tool_page_desc":481,"new_tool":124,"pro_tool":124,"header_blurb":482,"tool_card_desc":483,"youtube_url":48,"why_section_title":484,"why_section_desc":485,"slug":486,"createdAt":487,"updatedAt":488,"publishedAt":489,"publish_date":230,"rank":5,"cloud_only":48,"documentId":490,"icon":491},129,"Create ZUGFeRD PDF","Build complete ZUGFeRD and Factur-X e-invoicing workflows with one API Tool. Generate a professional invoice PDF from structured XML, preserve an existing branded PDF when its contents match the invoice data, regenerate it when they do not, and independently validate the finished hybrid invoice.\n## Key Benefits of Create ZUGFeRD PDF API\n\n- Generate complete ZUGFeRD or Factur-X hybrid invoices from CII XML, including a visual PDF, embedded XML attachment, required metadata, and PDF\u002FA-3 packaging.\n- Combine an existing invoice PDF with XML data and identify concrete discrepancies before completing the hybrid invoice for delivery, archival, or automated processing.\n- Regenerate the visual invoice from canonical XML whenever supplied PDF content conflicts with the XML or cannot be confidently confirmed by validation.\n- Validate existing ZUGFeRD and Factur-X PDFs without modifying them, checking XML business rules, PDF\u002FA-3 status, attachment relationships, metadata, and package structure.\n- Support MINIMUM, BASIC WL, BASIC, and EN 16931 profiles for ZUGFeRD 2.5.2 and Factur-X 1.09.2, helping meet current German and French e-invoicing needs.\n- Customize XML-generated invoices with logos, regular and bold fonts, language, regional formats, currency display, colors, decimal precision, and footer messaging.\n- Upload invoice files directly or reuse pdfRest resource IDs from prior operations to build efficient, fully automated e-invoicing workflows at any scale.","Create & validate ZUGFeRD \u002F Factur-X","Create and validate ZUGFeRD and Factur-X e-invoices from XML or PDF files with embedded CII data and PDF\u002FA-3 conformance.","Why is pdfRest the best API for creating and validating ZUGFeRD and Factur-X invoices?","pdfRest offers the best ZUGFeRD and Factur-X solution because it provides one API workflow to create compliant hybrid invoices, preserve or regenerate PDF visuals from canonical CII XML, and validate the completed PDF\u002FA-3 package end to end.","create-zugferd-pdf","2026-09-17T22:16:25.187Z","2026-09-18T21:49:10.411Z","2026-09-18T21:49:12.227Z","fq5lkw4282h9m15mefvekyct",{"id":492,"name":493,"alternativeText":494,"caption":495,"width":496,"height":237,"formats":48,"hash":497,"ext":239,"mime":240,"size":498,"url":499,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":500,"updatedAt":501,"documentId":502,"publishedAt":500,"focalPoint":48},719,"create-zugferd-pdf.svg","Create ZUGFeRD PDF API Tool","",68,"create_zugferd_pdf_c820e83b06",12.06,"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Fcreate_zugferd_pdf_c820e83b06.svg","2026-09-17T21:39:06.559Z","2026-09-17T21:39:31.101Z","x1mb3q9x8n1wyd3u4k4ksl9z",{"id":295,"name":504,"description":505,"createdAt":506,"updatedAt":507,"publishedAt":508,"rank":295,"documentId":509,"api_tools":510},"Optimize","Enhance PDFs for their intended usage with tools that target specific improvements","2024-08-13T18:39:31.653Z","2025-09-29T20:41:41.021Z","2024-08-13T18:39:33.336Z","nkqykatf69qbewfjcszxzcmy",[511,534,556,577,597,620,641],{"id":209,"name":512,"tool_page_desc":513,"new_tool":284,"pro_tool":284,"header_blurb":514,"tool_card_desc":515,"youtube_url":516,"why_section_title":517,"why_section_desc":518,"slug":519,"createdAt":520,"updatedAt":521,"publishedAt":522,"publish_date":294,"rank":48,"cloud_only":48,"documentId":523,"icon":524},"Compress PDF","Compress PDF is a REST API tool designed to significantly reduce PDF file sizes while maintaining the integrity of the document's content. Developers can automate the compression process, ensuring efficient file size reduction without compromising quality or altering the original layout.\n## Key Benefits of Compress PDF API\n- Maximize file size reduction to optimize storage and improve file transfer speeds, making large PDFs more manageable.\n- Preserve document quality by maintaining text clarity and image fidelity, ensuring compressed files remain professional and readable.\n- Enhance email deliverability by reducing PDF sizes to meet email attachment limits, facilitating seamless communication.\n- Streamline document management by integrating compressed PDFs into existing workflows, reducing storage costs and improving accessibility.\n- Support compliance and archiving by compressing PDFs for long-term storage without losing critical information or metadata.\n- Meet regulatory compliance and document submission limits, ensuring that documents adhere to industry standards and legal requirements.","Reduce file size, preserve quality","Minimize PDF file sizes while preserving content quality to speed up document transfers and reduce storage costs.","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002Fe_dOeGPaG34","Why is pdfRest the best API to compress PDF file size?","pdfRest offers the best solution for compressing PDF documents, because it supports unmatched file size reduction, a simple interface, and gold-standard technology.","compress-pdf","2024-08-15T15:35:48.591Z","2026-07-10T19:44:46.607Z","2024-08-15T15:36:17.475Z","m9un0zvkqqs2lskskm5xbop6",{"id":525,"name":526,"alternativeText":512,"caption":48,"width":527,"height":375,"formats":48,"hash":528,"ext":239,"mime":240,"size":529,"url":530,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":531,"updatedAt":532,"documentId":533,"publishedAt":247,"focalPoint":48},66,"compress-pdf.svg",110,"compress_pdf_afacc9bd77",7.48,"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Fcompress_pdf_afacc9bd77.svg","2024-08-15T15:31:48.881Z","2024-08-15T15:32:06.178Z","u1o60almx8mpbn35gcls0tor",{"id":466,"name":535,"tool_page_desc":536,"new_tool":284,"pro_tool":284,"header_blurb":537,"tool_card_desc":538,"youtube_url":48,"why_section_title":539,"why_section_desc":540,"slug":541,"createdAt":542,"updatedAt":543,"publishedAt":544,"publish_date":294,"rank":48,"cloud_only":48,"documentId":545,"icon":546},"Linearize PDF","Linearize PDF is a REST API tool that optimizes a PDF file for quick online viewing, often called 'Fast Web View', significantly improving user experience when documents are streamed over a network connection. Developers can use this tool to ensure PDFs are web-optimized, allowing content to load progressively in web browsers without waiting for the entire file to download.\n## Key Benefits of Linearize PDF API\n- Optimize for Fast Web View by restructuring PDF content, enabling pages to display quickly in web viewers even before the entire document is loaded.\n- Improve user experience by providing instant access to PDF content online, reducing wait times and enhancing engagement with your documents.\n- Ensure reliable PDF linearization using the same underlying technology that powers Adobe® Acrobat™, guaranteeing proper optimization from the start.\n- Streamline application with a simple process that requires minimal input, allowing you to easily prepare documents for the best possible online viewing experience.\n- Facilitate easy web app integration as a REST API tool, making it ideally suited for optimizing PDFs intended to be served over any network connection, regardless of your tech stack.\n- Reduce bandwidth usage and server load by enabling efficient, byte-serving delivery of PDF content for online viewing.","Optimize for fast web viewing","Apply linearization to PDFs to support a quick online viewing experience with Fast Web View.","Why is pdfRest the best API to linearize PDF?","pdfRest offers the best solution for linearizing PDF documents, because it supports Fast Web View, simple application, and easy integration.","linearize-pdf","2024-08-15T15:41:29.665Z","2026-07-10T19:45:12.986Z","2024-08-15T15:41:31.843Z","t0uoic69wkk6yuud1tub0gqd",{"id":547,"name":548,"alternativeText":535,"caption":48,"width":348,"height":549,"formats":48,"hash":550,"ext":239,"mime":240,"size":551,"url":552,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":553,"updatedAt":554,"documentId":555,"publishedAt":247,"focalPoint":48},67,"linearize.svg",90,"linearize_586cd2c3a6",5.27,"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Flinearize_586cd2c3a6.svg","2024-08-15T15:36:47.868Z","2024-08-15T15:37:10.641Z","u1zpcivoj3og13n61bkclmyu",{"id":557,"name":558,"tool_page_desc":559,"new_tool":284,"pro_tool":284,"header_blurb":560,"tool_card_desc":561,"youtube_url":48,"why_section_title":562,"why_section_desc":563,"slug":564,"createdAt":565,"updatedAt":566,"publishedAt":567,"publish_date":294,"rank":48,"cloud_only":48,"documentId":568,"icon":569},10,"Flatten Transparencies","Flatten Transparencies is a REST API tool that renders and replaces all transparent objects in a PDF with opaque colors. This process increases RIP speed in a prepress workflow and supports conversion to other file formats.  \n## Key Benefits of Flatten Transparencies API\n- Automate transparency flattening to streamline prepress workflows, reducing the need for manual adjustments.\n- Convert transparent objects to opaque colors to increase the speed of raster image processing (RIP), optimizing for print.\n- Flatten transparencies to ensure your PDFs are compatible with a wide range of printing systems and file formats.\n- Eliminate transparency issues and guarantee consistent visual document appearance across printing environments.\n- Ensure compatibility with older printing systems that do not support transparency for reliable print-ready PDFs.","Optimize for print and compatibility","Flatten all transparent objects in a PDF to increase RIP speed in a prepress workflow and support conversion to other file formats.","Why use our version of Flatten Transparencies?","pdfRest is the best API to flatten PDF transparencies because it offers unmatched color accuracy, maximum compatibility, and reliable printing, all powered by Adobe's industry-leading technology.","flatten-transparencies","2024-08-15T15:47:27.619Z","2026-07-10T19:45:42.226Z","2024-08-15T15:47:31.348Z","ng1iuah17kwp3ojabadgq7nr",{"id":496,"name":570,"alternativeText":558,"caption":48,"width":281,"height":375,"formats":48,"hash":571,"ext":239,"mime":240,"size":572,"url":573,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":574,"updatedAt":575,"documentId":576,"publishedAt":247,"focalPoint":48},"flatten-transparencies.svg","flatten_transparencies_a85de628b2",3.07,"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Fflatten_transparencies_a85de628b2.svg","2024-08-15T15:42:37.863Z","2024-08-15T15:42:42.649Z","p30iwcgolky9ywhenno1ek71",{"id":578,"name":579,"tool_page_desc":580,"new_tool":284,"pro_tool":284,"header_blurb":581,"tool_card_desc":582,"youtube_url":48,"why_section_title":583,"why_section_desc":584,"slug":585,"createdAt":586,"updatedAt":587,"publishedAt":588,"publish_date":294,"rank":48,"cloud_only":48,"documentId":589,"icon":590},12,"Flatten Layers","Flatten Layers is a REST API Tool that collapses all PDF content spread across multiple document layers into one layer of page content. This tool is designed to help developers simplify PDF documents, enhance compatibility, and optimize files for reliable printing and distribution by consolidating complex layered structures.\n## Key Benefits of Flatten Layers API\n- Reduce file complexity by consolidating content from multiple PDF layers into a single, unified page content layer, simplifying document structure for downstream workflows.\n- Prepare PDFs for print reliably by optimizing document content and reducing potential rendering issues associated with layered files, ensuring consistent output.\n- Streamline integration with existing systems by providing a simplified PDF structure that is more universally compatible with various viewers and processing tools.\n- Ensure consistent content display by eliminating the variable visibility of layers, making all content permanently visible for archiving and sharing.\n- Leverage tried-and-true Adobe® technology, which has supported enterprise print operations for decades, guaranteeing reliable optimization of PDF documents.\n- Automate the process of flattening PDF layers, allowing you to achieve optimized files for distribution without needing to delve into the nuances of the PDF file format.","Collapse multiple layers into one","Collapse all content from separate PDF layers onto a single layer of page content.","Why is pdfRest the best API to flatten PDF layers?","pdfRest offers the best solution for flattening PDF layers, because it reduces file complexity, prepares PDFs for print, and streamlines integration.","flatten-layers","2024-08-15T15:58:45.651Z","2026-07-10T19:46:17.474Z","2024-08-15T15:58:47.165Z","lbnvreecu8vz84adatcd4mn8",{"id":424,"name":591,"alternativeText":579,"caption":48,"width":479,"height":237,"formats":48,"hash":592,"ext":239,"mime":240,"size":302,"url":593,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":594,"updatedAt":595,"documentId":596,"publishedAt":247,"focalPoint":48},"flatten-layers.svg","flatten_layers_b3faeefdc7","https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Fflatten_layers_b3faeefdc7.svg","2024-08-15T15:52:23.596Z","2024-08-15T15:52:34.368Z","fawqvb0l1mmihshvsnipgwx8",{"id":598,"name":599,"tool_page_desc":600,"new_tool":284,"pro_tool":284,"header_blurb":601,"tool_card_desc":602,"youtube_url":603,"why_section_title":604,"why_section_desc":605,"slug":606,"createdAt":607,"updatedAt":608,"publishedAt":609,"publish_date":610,"rank":48,"cloud_only":48,"documentId":611,"icon":612},13,"Convert PDF Colors","Convert PDF Colors is a REST API tool offering precise control over the color scheme of any PDF document. Adjust the colors of text and images across the entire file using custom ICC profiles or choose from a library of print, screen, web, and grayscale presets.\n\n## Key Benefits of Convert PDF Colors API\n- Convert PDF from RGB to CMYK to achieve consistent color output for print, ensuring accurate colors across substrates.\n- Convert PDF from CMYK to RGB to optimize colors for web display, ensuring accurate representation across screens.\n- Convert color PDF to black and white to prepare for printing on B&W printers and to reduce file size for document archival.\n- Achieve accurate color reproduction through custom ICC profiles and pre-defined color spaces.\n- Maintain color fidelity for digital publications, such as eBooks and online magazines or newsletters.\n","Change a PDF's Color Profile","Change a PDF's color profile to optimize for print, screen, grayscale, or custom needs.","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FQ0RdR20pZuw","Why is pdfRest the best API to convert PDF Colors?","pdfRest offers the best solution for converting PDF colors, because it offers unmatched control, flexible color space transformations, and efficient preset profiles.","convert-pdf-colors","2024-08-15T16:02:17.972Z","2026-07-10T19:44:21.681Z","2024-08-15T16:08:59.950Z","2024-09-02T05:00:00.000Z","avlqefgbhfhkc269xjadqa4v",{"id":219,"name":613,"alternativeText":599,"caption":48,"width":185,"height":375,"formats":48,"hash":614,"ext":239,"mime":240,"size":615,"url":616,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":617,"updatedAt":618,"documentId":619,"publishedAt":247,"focalPoint":48},"convert-pdf-colors.svg","convert_pdf_colors_ec3097ec4d",2.4,"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Fconvert_pdf_colors_ec3097ec4d.svg","2024-08-15T16:01:18.268Z","2024-08-15T16:01:38.455Z","lt8xaq9ltwf761uc6ldbi6dz",{"id":621,"name":622,"tool_page_desc":623,"new_tool":284,"pro_tool":284,"header_blurb":624,"tool_card_desc":625,"youtube_url":48,"why_section_title":626,"why_section_desc":627,"slug":628,"createdAt":629,"updatedAt":630,"publishedAt":631,"publish_date":294,"rank":48,"cloud_only":48,"documentId":632,"icon":633},11,"Flatten Annotations","Flatten Annotations is a REST API tool that collapses annotation appearances into page content and makes them no longer editable. It's designed to provide developers with precise control over document finalization, ensuring PDF annotations display consistently across all viewers and platforms while safeguarding against unintended modifications.\n## Key Benefits of Flatten Annotations API\n- Maximize compatibility by converting diverse PDF annotation types into standard page content, ensuring universal display across all PDF viewers and processing tools.\n- Lock in feedback by preserving highlights, comments, and shapes directly into the document's content layer, preventing further editing or accidental changes to critical review notes.\n- Remove hidden comments and associated metadata from annotations, effectively sanitizing the PDF to ensure only visible content remains, enhancing document security and privacy.\n- Streamline document workflows by creating definitive versions of PDFs with finalized annotations, ideal for archiving, distribution, or legal purposes.\n- Enhance document integrity by making all annotation appearances permanent, crucial for audit trails and compliance requirements.\n- Automate the preparation of PDFs for consistent viewing and printing, eliminating rendering inconsistencies often associated with dynamic annotations.","Collapse annotations into page content","Flatten all annotations in a PDF to collapse their appearances into page content and make them uneditable.","Why is pdfRest the best API to flatten PDF annotations?","pdfRest offers the best solution for flattening PDF annotations, because it maximizes compatibility, locks in feedback, and removes hidden comments.","flatten-annotations","2024-08-15T15:51:16.262Z","2026-07-10T19:47:03.359Z","2024-08-15T15:51:18.393Z","d52bv2j55eom32tfy8kt8j96",{"id":399,"name":634,"alternativeText":622,"caption":48,"width":308,"height":298,"formats":48,"hash":635,"ext":239,"mime":240,"size":636,"url":637,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":638,"updatedAt":639,"documentId":640,"publishedAt":247,"focalPoint":48},"flatten-annotations.svg","flatten_annotations_3fb78bfe4a",3.94,"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Fflatten_annotations_3fb78bfe4a.svg","2024-08-15T15:48:27.679Z","2024-08-15T15:48:31.189Z","rxzqs31gaxrv2skv65v5pe1u",{"id":642,"name":643,"tool_page_desc":644,"new_tool":284,"pro_tool":48,"header_blurb":645,"tool_card_desc":646,"youtube_url":48,"why_section_title":647,"why_section_desc":648,"slug":649,"createdAt":650,"updatedAt":651,"publishedAt":652,"publish_date":653,"rank":48,"cloud_only":48,"documentId":654,"icon":655},31,"Rasterize PDF","Rasterize PDF is a REST API tool that converts each page of a PDF into a rasterized image, a process fundamental to computer graphics, where vector content and text are translated into individual pixels on a 2D plane. The result is a PDF document where all pages are flattened for consistent rendering and printing across every device and platform.\n## Key Benefits of Rasterize PDF API\n- Ensure your PDF files display consistently across all platforms and devices by flattening complex elements into raster images.\n- Rasterization removes dependencies on fonts and other error-prone vector elements, ensuring all content is printed as intended.\n- Protect sensitive information by preventing text extraction and editing, as the content is converted into images.\n- Simplify document storage by creating a uniform format that is less susceptible to rendering issues over time.\n- Maintain the visual integrity of your documents across applications, providing a reliable solution for both digital and print media.\n","Flatten PDF pages to images","Convert each page of a PDF into a rasterized image for consistent rendering and printing.","Why is pdfRest the best API for PDF rasterization?","pdfRest offers the best solution for rasterizing PDF files, because it effectively simplifies printing, ensures consistent rendering, and supports document security.","rasterize-pdf","2025-01-22T21:59:58.706Z","2026-07-10T19:43:48.162Z","2025-01-24T20:50:15.285Z","2024-08-28T05:00:00.000Z","dvnc330jxfwehq9qnkebwqm7",{"id":656,"name":657,"alternativeText":643,"caption":48,"width":445,"height":658,"formats":48,"hash":659,"ext":239,"mime":240,"size":660,"url":661,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":662,"updatedAt":662,"documentId":663,"publishedAt":247,"focalPoint":48},270,"rasterize-pdf.svg",82,"rasterize_pdf_f334fd5734",4.79,"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Frasterize_pdf_f334fd5734.svg","2025-01-22T22:01:13.748Z","yq24filwmrn8k0xv2si6mum4",{"id":394,"name":665,"description":666,"createdAt":667,"updatedAt":668,"publishedAt":669,"rank":320,"documentId":670,"api_tools":671},"Secure","Protect your documents and data with this suite of tools to enhance security","2024-08-13T18:40:42.072Z","2025-09-29T20:41:52.950Z","2024-08-13T18:40:43.271Z","zeflmr4447tbe0fht5vd2rpi",[672,695,718,741,766,788],{"id":673,"name":674,"tool_page_desc":675,"new_tool":284,"pro_tool":284,"header_blurb":676,"tool_card_desc":677,"youtube_url":678,"why_section_title":679,"why_section_desc":680,"slug":681,"createdAt":682,"updatedAt":683,"publishedAt":684,"publish_date":294,"rank":295,"cloud_only":48,"documentId":685,"icon":686},23,"Watermark PDF","The Watermark PDF API is a powerful tool for adding either a text-based or image-based watermark to a PDF. This API offers a high degree of customization, giving you precise control over the watermark's appearance, including font, size, color, opacity, rotation, and positioning. It's an effective way to communicate a document's status, enforce intellectual property rights, or apply branding.\n\n### Key Benefits of Watermark PDF API\n\n* Add text or image watermarks with full control over their style and placement, including the ability to use a PDF as the source for an image watermark.\n* Control the watermark's appearance with extensive customization options, including an extensive font list, adjustable text size, and both RGB and CMYK color support.\n* Customize positioning and rotation using x and y offsets and a rotation parameter to place your watermark exactly where you need it on the page.\n* Optionally place watermarks behind page content, allowing for subtle security or branding that doesn't obstruct the document's main text and images.\n* Apply watermarks to specific pages or ranges within a document, giving you granular control over which pages receive the watermark.\n* Automate document security and branding by adding \"Confidential\" or \"Draft\" labels, copyright notices, or company logos at scale.","Apply a text or image watermark to PDF","Apply a watermark to all pages of a PDF using either text or an image.","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPuutAS2GWBg","Why is pdfRest the best API to watermark PDF?","pdfRest offers the best solution for watermarking PDF documents, because it supports both text and images, full customization, and an extensive font list.","watermark-pdf","2024-08-15T17:08:26.262Z","2026-07-10T21:35:13.859Z","2024-08-15T17:15:38.047Z","ggaguunbgs7zd97q3jzn8rpb",{"id":687,"name":688,"alternativeText":674,"caption":48,"width":298,"height":237,"formats":48,"hash":689,"ext":239,"mime":240,"size":690,"url":691,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":692,"updatedAt":693,"documentId":694,"publishedAt":247,"focalPoint":48},81,"watermarked-pdf.svg","watermarked_pdf_b261147f0a",6.15,"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Fwatermarked_pdf_b261147f0a.svg","2024-08-15T17:04:59.298Z","2024-08-15T17:08:04.390Z","sbbdvq5o7olh057k1k8m5qda",{"id":696,"name":697,"tool_page_desc":698,"new_tool":284,"pro_tool":284,"header_blurb":699,"tool_card_desc":700,"youtube_url":701,"why_section_title":702,"why_section_desc":703,"slug":704,"createdAt":705,"updatedAt":706,"publishedAt":707,"publish_date":294,"rank":295,"cloud_only":48,"documentId":708,"icon":709},24,"Encrypt PDF","Encrypt PDF is a REST API tool that securely encrypts and protects all of the content within a PDF document, requiring the viewer to enter a password to access the contents of a document. This tool empowers developers to implement robust PDF security workflows, safeguarding sensitive information and controlling document access programmatically.\n## Key Benefits of Encrypt PDF API\n- Automate security workflows by seamlessly integrating password protection into your document lifecycle, ensuring sensitive information is always secure.\n- Apply industry-leading encryption with AES 256-bit encryption technology, providing robust security that is virtually impenetrable from brute-force attacks.\n- Manage PDF access by easily setting or changing passwords for documents, or even completely removing existing encryption when authorized.\n- Convert various document types into encrypted PDFs for secure archiving, maintaining confidentiality and compliance standards.\n- Create secure document workflows by chaining API requests to encrypt PDFs after conversion or other transformations, enhancing overall data protection.\n- Leverage Adobe® PDF Library™ technology for reliable and secure encryption, trusted by professionals worldwide for robust document security.","Add a required password to open a PDF","Secure PDFs with impenetrable encryption and require a password for viewers to open encrypted documents.","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FDU0wNxyHXDE","Why is pdfRest the best API to encrypt PDF with password?","pdfRest offers the best solution for encrypting PDF documents with a password, because it supports automated security workflows, removing and changing passwords, and secure AES 256-bit encryption technology.","encrypt-pdf","2024-08-15T17:19:17.502Z","2026-07-10T21:35:34.953Z","2024-08-15T17:21:09.781Z","wxulzpesdvjxbvkofjdyawod",{"id":658,"name":710,"alternativeText":711,"caption":48,"width":397,"height":658,"formats":48,"hash":712,"ext":239,"mime":240,"size":713,"url":714,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":715,"updatedAt":716,"documentId":717,"publishedAt":247,"focalPoint":48},"encrypt-pdf.svg","Encrypt PDF icon showing a PDF document with a padlock in front of it.","encrypt_pdf_ffb93383d4",4.47,"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Fencrypt_pdf_ffb93383d4.svg","2024-08-15T17:17:02.629Z","2024-08-15T17:17:46.553Z","zaonbfjm3tvd5y9r2knq1kaz",{"id":719,"name":720,"tool_page_desc":721,"new_tool":284,"pro_tool":284,"header_blurb":722,"tool_card_desc":723,"youtube_url":724,"why_section_title":725,"why_section_desc":726,"slug":727,"createdAt":728,"updatedAt":729,"publishedAt":730,"publish_date":294,"rank":295,"cloud_only":48,"documentId":731,"icon":732},25,"Restrict PDF","Restrict PDF is a REST API tool that acts as a powerful security measure, applying usage restrictions to a document to limit how viewers can interact with the content. Developers can use a permissions password to forbid actions like printing, copying text, or editing, ensuring sensitive or confidential information remains secure. With the flexibility to add, modify, or remove restrictions, this tool simplifies document security workflows for legal, financial, and other privacy-sensitive applications.\n\n### Key Benefits of Restrict PDF API\n\n- Secure sensitive documents by preventing unauthorized actions like printing, editing content, or adding annotations, ensuring confidentiality and integrity.\n- Control user permissions for a document by applying a permissions password to a new or existing file, even one that is already secured with an open password.\n- Automate security workflows for confidential documents, such as legal contracts or internal reports, to streamline secure distribution to clients or partners.\n- Support advanced restriction settings, including the ability to differentiate between high- and low-resolution printing, providing granular control over document usage.\n- Remove existing restrictions using the dedicated \u002Funrestricted-pdf endpoint, allowing you to easily update security settings as your document's purpose or audience changes.\n- Ensure best-practice security with a tool powered by the Adobe PDF Library, offering top-quality security features and advanced restriction modification.","Limit what viewers can do with a PDF","Set restrictions on a PDF to limit how users can interact with the document, such as printing, editing, or extracting text and images.","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FFrKGEI0hSEs","Why is pdfRest the best API to apply restrictions to PDF?","pdfRest offers the best solution for restricting PDF documents with a permissions password, because it supports advanced restriction modification, top quality security, and flexible restriction options.","restrict-pdf","2024-08-15T17:23:57.456Z","2026-07-10T21:36:04.906Z","2024-08-15T17:26:16.673Z","tvk1jhgf95ki7zec9zn2nmae",{"id":733,"name":734,"alternativeText":720,"caption":48,"width":424,"height":400,"formats":48,"hash":735,"ext":239,"mime":240,"size":736,"url":737,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":738,"updatedAt":739,"documentId":740,"publishedAt":247,"focalPoint":48},83,"restrict-pdf.svg","restrict_pdf_444762b050",4.37,"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Frestrict_pdf_444762b050.svg","2024-08-15T17:22:21.890Z","2024-08-15T17:22:34.852Z","ykrmuyqt8rqbf6mao9zu5cmo",{"id":742,"name":743,"tool_page_desc":744,"new_tool":284,"pro_tool":124,"header_blurb":745,"tool_card_desc":746,"youtube_url":48,"why_section_title":747,"why_section_desc":748,"slug":749,"createdAt":750,"updatedAt":751,"publishedAt":752,"publish_date":753,"rank":48,"cloud_only":48,"documentId":754,"icon":755},36,"Sign PDF","Sign PDF is a REST API tool for programmatically applying digital signatures to PDF documents using PFX or certificate credentials to embed cryptographically secure signatures. These digital signatures inherently include electronic signature elements, allowing for customized visual appearances with typed text or image files for hand-drawn signatures or logos.\n### Key Benefits of Sign PDF API\n- Programmatically apply signatures to accelerate document processing.\n- Embed cryptographically secure digital signatures using your credentials, enhancing document integrity.\n- Add visual signatures from typed text or image files (e.g., hand-drawn, logos) with customizable appearances.\n- Apply accepted electronic and digital signature formats to meet industry requirements.\n- Programmatically add consistent, professional visual signatures for strong brand identity.\n- Integrate PDF signing capabilities effortlessly into applications using a flexible REST API.","Apply digital signatures","Apply digital signatures to PDFs, securing document authenticity and integrity.","Why is pdfRest the best API to digitally sign PDFs?","pdfRest offers the best API for digitally signing PDFs, because it applies robust, cryptographically-backed digital signatures, enables flexible electronic signature appearances, and empowers critical high-volume, compliance-driven use cases.","sign-pdf","2025-07-18T14:28:15.145Z","2026-07-10T21:34:24.963Z","2025-07-18T21:23:24.704Z","2023-07-11T05:00:00.000Z","fum794n7do1p6893xcg28m1v",{"id":756,"name":757,"alternativeText":758,"caption":48,"width":759,"height":375,"formats":48,"hash":760,"ext":239,"mime":240,"size":761,"url":762,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":763,"updatedAt":764,"documentId":765,"publishedAt":247,"focalPoint":48},424,"sign-pdf.svg","Sign PDF API Tool",79,"sign_pdf_3ffd97fd2e",7.56,"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Fsign_pdf_3ffd97fd2e.svg","2025-07-18T15:22:16.194Z","2025-07-18T15:22:27.233Z","o4u8tky2zammruoqmpctd8t6",{"id":767,"name":768,"tool_page_desc":769,"new_tool":284,"pro_tool":124,"header_blurb":770,"tool_card_desc":771,"youtube_url":48,"why_section_title":772,"why_section_desc":773,"slug":774,"createdAt":775,"updatedAt":776,"publishedAt":777,"publish_date":778,"rank":48,"cloud_only":48,"documentId":779,"icon":780},37,"Redact PDF","Redact PDF is a REST API tool designed to securely remove sensitive information from PDF documents, ensuring privacy and compliance with data protection regulations. This automated PDF redaction solution is ideal for businesses looking to safeguard confidential data and optimize document workflows.\n## Key Benefits of Redact PDF API\n- Redact PDF documents by targeting specific text or using custom regular expressions to detect and sanitize PII, financial data, and other sensitive content.\n- Use built-in redaction presets to instantly identify and redact common patterns like phone numbers, email addresses, and URLs.\n- Comply with data protection laws such as GDPR, HIPAA, and CCPA by securely redacting personal and regulated data.\n- Redact PDF files automatically with custom rules or text matches to remove sensitive information at scale.\n- Automate the redaction and sanitization process to enhance workflow efficiency and reduce manual intervention, perfect for high-volume document processing.\n- Enhance data security by ensuring that redacted and sanitized information is permanently removed, safeguarding against unauthorized access and data breaches.","Securely remove sensitive data","Securely remove sensitive data from PDFs to protect privacy, ensure compliance, and prevent unauthorized information disclosure.","Why is pdfRest the best API to redact PDF text?","pdfRest offers the best solution for redacting PDF documents, because it combines trusted Adobe technology, flexible automation options, and advanced data sanitization for compliance.","redact-pdf-api","2025-04-23T18:39:53.179Z","2026-07-10T21:34:49.080Z","2025-08-27T20:16:49.335Z","2023-08-09T05:00:00.000Z","r06b2atyfz0w4lfz3j6kziu5",{"id":781,"name":782,"alternativeText":768,"caption":48,"width":348,"height":375,"formats":48,"hash":783,"ext":239,"mime":240,"size":784,"url":785,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":786,"updatedAt":786,"documentId":787,"publishedAt":247,"focalPoint":48},357,"redact-pdf.svg","redact_pdf_6dd37af9bd",4.36,"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Fredact_pdf_6dd37af9bd.svg","2025-04-23T19:10:30.691Z","yqm2nlyhxhl3lwx2z1jty2kx",{"id":789,"name":790,"tool_page_desc":791,"new_tool":124,"pro_tool":284,"header_blurb":792,"tool_card_desc":793,"youtube_url":48,"why_section_title":794,"why_section_desc":795,"slug":796,"createdAt":227,"updatedAt":797,"publishedAt":798,"publish_date":799,"rank":320,"cloud_only":284,"documentId":800,"icon":801},74,"TDM Reserve PDF","TDM Reserve PDF is a REST API tool that applies machine-readable TDMRep metadata to your documents to formally reserve your rights against unauthorized automated processing. Designed to support the W3C TDM Reservation Protocol, this tool enables content owners to clearly state their Text and Data Mining (TDM) policy, ensuring compliance with the EU CDSM Directive Article 4 and providing a standardized signal to AI crawlers and scrapers.\n## Key Benefits of TDM Reserve PDF API\n- Apply machine-readable \"opt-out\" signals to your PDF files to protect your intellectual property from unauthorized AI model training and automated data mining.\n- Ensure your digital assets comply with the EU Copyright in the Digital Single Market (CDSM) Directive by asserting TDM reservation rights as required by Article 4.\n- Use the policy parameter to embed a URL or custom string that directs scrapers and crawlers to your specific terms of use and mining restrictions.\n- Leverage the standardized W3C TDM Reservation Protocol (TDMRep) to ensure your document's protection is recognizable by modern, compliant web technologies.\n- Add a critical layer of security to your publishing pipeline by automatically injecting reservation metadata into every PDF before it is distributed or hosted online.\n- Protect your content with a simple, single-call API integration that eliminates the need for manual metadata editing or complex PDF internal restructuring.","Protect PDFs from AI mining","Protect PDFs from AI text and data mining by applying standardized TDM reservation metadata.","Why is pdfRest the best API to apply TDM reservations?","pdfRest offers the best solution for TDM reservations because it guarantees EU CDSM compliance, reliably injects machine-readable metadata, and provides straightforward, developer-focused policy controls.","tdm-reserve-pdf","2026-07-10T21:36:27.235Z","2026-04-24T19:36:26.165Z","2026-04-24T05:00:00.000Z","jt8jle4hq2ut9i3vp32pxd37",{"id":802,"name":803,"alternativeText":790,"caption":48,"width":399,"height":400,"formats":48,"hash":804,"ext":239,"mime":240,"size":805,"url":806,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":807,"updatedAt":808,"documentId":809,"publishedAt":247,"focalPoint":48},692,"tdm-reservation.svg","tdm_reservation_589def3185",6.5,"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Ftdm_reservation_589def3185.svg","2026-04-23T22:07:23.048Z","2026-04-23T22:07:33.861Z","yq84fc8cbpz69ec1kuob2i1z",{"id":369,"name":811,"description":812,"createdAt":813,"updatedAt":814,"publishedAt":815,"rank":345,"documentId":816,"api_tools":817},"Extract","Extract text, data, images, and document details to collect information and drive conditional logic","2024-08-13T18:40:26.128Z","2025-09-29T20:42:02.887Z","2024-08-13T18:40:27.423Z","ddvn9rnnkkfe8n73trswzl87",[818,842,865,888,909],{"id":819,"name":820,"tool_page_desc":821,"new_tool":284,"pro_tool":124,"header_blurb":822,"tool_card_desc":823,"youtube_url":824,"why_section_title":825,"why_section_desc":826,"slug":827,"createdAt":828,"updatedAt":829,"publishedAt":830,"publish_date":610,"rank":48,"cloud_only":48,"documentId":831,"icon":832},20,"OCR PDF","OCR PDF is an advanced API tool designed to convert scanned documents and images within PDFs into searchable and extractable text using state-of-the-art Optical Character Recognition (OCR) technology. By leveraging OCR PDF, developers can transform static PDF documents into dynamic, searchable text PDFs, significantly enhancing document management processes.\n## Key Benefits of OCR PDF API\n- Accurately recognize and extract text from scanned PDF files, turning static image-based content into fully searchable and selectable text.\n- Integrate OCR tools directly into your development workflow with a flexible REST API that works across all major programming languages and operating systems.\n- Use OCR as a pre-processing step before text extraction, enabling reliable data retrieval from any PDF regardless of how it was created.\n- Convert scanned documents to editable formats like Word for easy editing, formatting, and repurposing of content.\n- Handle large volumes of image-based PDFs efficiently with batch-ready processing designed for enterprise document management.","Get searchable, extractable text from PDF images","Unlock searchable and extractable PDF text by applying OCR to embedded images.","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FCdxZMACFEXI?si=J4QbxZpH1CrDSbig","Why is pdfRest the best API to OCR PDF Documents?","pdfRest offers the best solution for applying OCR to PDF documents, because it generates searchable PDF files, supports image-based text extraction, and integrates easily with all projects.","ocr-pdf","2024-08-15T16:45:56.517Z","2026-07-10T21:37:18.967Z","2024-08-15T16:45:58.693Z","n2v85fbuwy3jijswma3d8gqd",{"id":833,"name":834,"alternativeText":820,"caption":48,"width":372,"height":400,"formats":835,"hash":836,"ext":239,"mime":240,"size":837,"url":838,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":839,"updatedAt":840,"documentId":841,"publishedAt":247,"focalPoint":48},78,"ocr-pdf.svg",{},"ocr_pdf_029bb8a80c",8.49,"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Focr_pdf_029bb8a80c.svg","2024-08-15T16:40:55.146Z","2025-11-07T15:58:51.720Z","tnze0l8y1o92slargd4oxm5u",{"id":843,"name":844,"tool_page_desc":845,"new_tool":284,"pro_tool":284,"header_blurb":846,"tool_card_desc":847,"youtube_url":848,"why_section_title":849,"why_section_desc":850,"slug":851,"createdAt":852,"updatedAt":853,"publishedAt":854,"publish_date":294,"rank":48,"cloud_only":48,"documentId":855,"icon":856},21,"Extract Text","Extract Text is a REST API tool designed to efficiently extract text from PDF files, with options to include detailed style and positional information. Used as a powerful PDF to text converter, it gives developers and businesses a reliable online tool for streamlining data extraction and copying text content into applications, databases, and AI-driven workflows.\n## Key Benefits of Extract Text API\n- Extract text from PDFs with precision, capturing all content for further analysis or integration into databases and other systems.\n- Include optional style information, such as font type, size, and color, to preserve the original document's appearance in the extracted text.\n- Utilize positional data to maintain text layout and structure, essential for applications requiring exact text placement, such as digital archiving and document conversion.\n- Automate text extraction workflows to enhance efficiency and reduce manual data entry, perfect for high-volume document processing.\n- Enhance data accessibility by converting static PDF content into dynamic, usable data for business intelligence, compliance, and reporting purposes.\n- Supply large language models (LLM) with rich content from PDF archives, enabling advanced AI applications like natural language processing and sentiment analysis. Transform static documents into valuable data sources for AI-driven insights and decision-making.","Extract all text from PDFs","Extract all text from a PDF, optionally including style and position information.","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FX9REVAvOkQw","Why is pdfRest the best API to extract text from PDF?","pdfRest offers the best solution for extracting text from PDF documents, because it preserves positional data, includes text style information, and taps into data.","extract-text","2024-08-15T16:50:46.004Z","2026-07-10T21:37:41.113Z","2024-08-15T16:50:48.433Z","t50vz6ahj0hy3s5x5xs9u7zr",{"id":759,"name":857,"alternativeText":844,"caption":48,"width":858,"height":237,"formats":48,"hash":859,"ext":239,"mime":240,"size":860,"url":861,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":862,"updatedAt":863,"documentId":864,"publishedAt":247,"focalPoint":48},"extract-text.svg",125,"extract_text_9bb8fa32f1",8.15,"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Fextract_text_9bb8fa32f1.svg","2024-08-15T16:47:10.900Z","2024-08-15T16:47:32.142Z","e9ohhvg32e02gdslo6885xz0",{"id":866,"name":867,"tool_page_desc":868,"new_tool":284,"pro_tool":284,"header_blurb":869,"tool_card_desc":870,"youtube_url":871,"why_section_title":872,"why_section_desc":873,"slug":874,"createdAt":875,"updatedAt":876,"publishedAt":877,"publish_date":294,"rank":48,"cloud_only":48,"documentId":878,"icon":879},22,"Query PDF","Query PDF is a REST API tool that provides a programmatic way to retrieve a wide range of insights about a PDF document. It allows developers to check for conditional properties, metadata, and content details such as forms, fonts, security settings, and digital signatures. This tool is essential for conditional processing, enabling you to automate workflows and trigger subsequent actions based on a file’s unique characteristics.\n\n### Key Benefits of Query PDF API\n\n- Perform over 25 different queries in a single API call, including checks for document metadata, embedded fonts, and JavaScript, for a comprehensive overview of a PDF's properties.\n- Validate PDF\u002FA conformance with the industry-standard veraPDF validation engine, returning a simple true or false value for easy programmatic checks without complex reporting.\n- Automate workflows with conditional processing, saving time and resources by using file properties to determine if you need to apply OCR, convert to PDF\u002FA, or perform other operations.\n- Seamlessly audit page boundaries (MediaBox, CropBox, BleedBox, TrimBox, ArtBox) before making precise document dimension adjustments with the Set Page Boxes API.\n- Identify accessibility features by checking for the presence of structure tags, ensuring your documents meet compliance standards.\n- Retrieve and leverage custom metadata, returned as a JSON list of key:value pairs, enabling you to extract unique data properties added by other applications.\n- Extract key document information, including whether a file contains signatures, passwords, or forms (Acroforms or XFA), to drive secure and specialized workflows.","Get info and check for conditions","Get the facts to power your workflow - return detailed info about a PDF and its content to drive conditional processing.","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FV9gQT1lyCds","Why is pdfRest the best API to get info from PDF?","pdfRest offers the industry’s most efficient API for extracting PDF metadata and document properties, empowering you to drive conditional processing, validate industry-standard PDF\u002FA compliance, and run over 25 distinct queries in a single, lightning-fast call.","query-pdf","2024-08-15T17:03:12.991Z","2026-07-10T21:38:06.763Z","2024-08-15T17:03:14.852Z","ovui67x1sxfg3scjkhic67wj",{"id":880,"name":881,"alternativeText":867,"caption":48,"width":397,"height":687,"formats":48,"hash":882,"ext":239,"mime":240,"size":883,"url":884,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":885,"updatedAt":886,"documentId":887,"publishedAt":247,"focalPoint":48},80,"query-pdf.svg","query_pdf_e08ca961f2",5.51,"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Fquery_pdf_e08ca961f2.svg","2024-08-15T16:54:12.083Z","2024-08-15T16:54:22.255Z","hkf3hd3s4hbxjn5uvkhsflws",{"id":889,"name":890,"tool_page_desc":891,"new_tool":284,"pro_tool":284,"header_blurb":892,"tool_card_desc":893,"youtube_url":48,"why_section_title":894,"why_section_desc":895,"slug":896,"createdAt":897,"updatedAt":898,"publishedAt":899,"publish_date":230,"rank":48,"cloud_only":48,"documentId":900,"icon":901},30,"Extract Images","Extract Images is a REST API tool designed to efficiently extract all images from PDF documents. Developers can automate the retrieval of embedded graphics, ensuring quick and accurate extraction without altering the original PDF content.  \n## Key Benefits of Extract Images API\n- Automate image extraction to streamline workflows, eliminating the need for manual extraction in software like Acrobat.\n- Preserve image quality to ensure that extracted images maintain their original resolution and color accuracy.\n- Extract images in their native formats, such as JPEG, PNG, or TIFF, providing flexibility for further processing or analysis.\n- Enhance digital asset management by easily integrating extracted images into DAM systems.\n- Leverage extracted images to streamline content repurposing for marketing materials, presentations, and other creative projects.  ","Extract all images from PDFs","Extract images embedded in PDF documents to individual image files, preserving color, resolution, and format.","Why is pdfRest the best API to extract images from PDF?","pdfRest is the best API for extracting images from PDFs because it offers high-quality preservation, supports multiple formats, and integrates seamlessly into automated workflows.","extract-images","2024-11-19T15:46:02.001Z","2026-07-10T21:36:56.499Z","2024-12-17T17:25:39.699Z","wajlqvlo0fbqloqcmnr41mt3",{"id":902,"name":903,"alternativeText":48,"caption":48,"width":92,"height":375,"formats":48,"hash":904,"ext":239,"mime":240,"size":905,"url":906,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":907,"updatedAt":907,"documentId":908,"publishedAt":247,"focalPoint":48},215,"extract-images.svg","extract_images_f989d8b5f1",8.03,"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Fextract_images_f989d8b5f1.svg","2024-11-19T15:41:33.964Z","i49wmqbj6ktux4xysh7p2hc9",{"id":910,"name":911,"tool_page_desc":912,"new_tool":284,"pro_tool":284,"header_blurb":913,"tool_card_desc":914,"youtube_url":48,"why_section_title":915,"why_section_desc":916,"slug":917,"createdAt":918,"updatedAt":919,"publishedAt":920,"publish_date":921,"rank":48,"cloud_only":48,"documentId":922,"icon":923},35,"PDF to Markdown","PDF to Markdown is a REST API tool that converts PDF documents into clean, structured Markdown format, facilitating content repurposing and easy text manipulation. It empowers developers to accurately extract human-readable content while preserving document hierarchy, making PDFs easily consumable for content repurposing, data analysis, and LLM training.\n\n## Key Benefits of PDF to Markdown API\n- Convert complex PDFs into lightweight, plain-text Markdown, ideal for web content, documentation systems, or blog posts.\n- Extract structured content from PDFs, accurately preserving headings, lists, tables, and other formatting elements in an easily parseable format.\n- Simplify PDF content for easier management and version control in text-based systems like Git.\n- Enable advanced data processing, LLM training, and analysis by providing clean, semantic text extracted from PDFs for AI, NLP, or search indexing.\n- Support accessibility initiatives by transforming inaccessible PDF content into universally readable Markdown.\n- Automate large-scale PDF to Markdown conversions, streamlining workflows for content migration or dynamic publishing.","Extract Structured Content from PDFs","Transforms PDF documents into clean, structured Markdown, making content easily extractable for repurposing, analysis, and LLM training.","Why is pdfRest the best API to convert PDF to Markdown?","pdfRest offers the best solution for PDF to Markdown conversion, because it delivers accurate content extraction, preserves structural integrity, and enables flexible content repurposing for modern applications.","pdf-to-markdown-api","2025-07-09T20:42:56.960Z","2026-08-05T15:03:15.720Z","2025-07-11T21:53:55.683Z","2025-07-11T05:00:00.000Z","bx8g2gmotxivn9aoky69h6i0",{"id":924,"name":925,"alternativeText":926,"caption":48,"width":185,"height":375,"formats":48,"hash":927,"ext":239,"mime":240,"size":928,"url":929,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":930,"updatedAt":931,"documentId":932,"publishedAt":247,"focalPoint":48},414,"pdf-to-markdown.svg","PDF to Markdown API Tool","pdf_to_markdown_4fcfb1f15e",10.41,"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Fpdf_to_markdown_4fcfb1f15e.svg","2025-07-09T21:17:57.306Z","2025-07-10T21:24:18.613Z","ms9hfna1itl2y0rxkklzka2b",{"id":320,"name":934,"description":935,"createdAt":936,"updatedAt":937,"publishedAt":938,"rank":369,"documentId":939,"api_tools":940},"Modify","Apply changes to PDF content with this suite of modification tools","2024-08-13T18:39:58.837Z","2025-09-29T20:42:10.221Z","2024-08-13T18:40:00.335Z","l00w5wlfgz8uh23fptajvkl0",[941,964,987,1010,1032],{"id":858,"name":942,"tool_page_desc":943,"new_tool":284,"pro_tool":284,"header_blurb":944,"tool_card_desc":945,"youtube_url":946,"why_section_title":947,"why_section_desc":948,"slug":949,"createdAt":950,"updatedAt":951,"publishedAt":952,"publish_date":294,"rank":295,"cloud_only":48,"documentId":953,"icon":954},"Add to PDF","Add to PDF is a REST API tool designed to add new content to PDF documents, including text, images, lines, rectangles, tables, and file attachments. Developers can use it to enhance existing PDFs without disrupting underlying content, or pair it with Create Blank PDF to generate new PDFs from scratch for invoices, reports, statements, forms, and other data-driven documents.\n## Key Benefits of Add to PDF API\n- Automate PDF content creation and enhancement workflows, eliminating the need for manual editing in Acrobat, Illustrator, or other software.\n- Pair with Create Blank PDF to generate new documents from application data, including invoices, reports, statements, forms, and other structured PDFs.\n- Place text, images, lines, rectangles, and tables with coordinate-level control, making it easier to align inserted content with exact page layouts.\n- Build structured PDF tables with headers, footers, merged cells, styling, image cells, and multi-page overflow support for data-driven documents.\n- Customize text insertion for both LTR and RTL languages with font, size, color, rotation, opacity, maximum width, wrapping, and placement controls.\n- Add optional structure tags for newly inserted text, images, shapes, and tables to support more structured generated or enhanced PDF output.\n- Attach source files, XML data, spreadsheets, or supporting documents directly within a PDF for e-invoicing, archival, and compliance workflows.","Insert tables, text, images, shapes, attachments","Insert tables, text, images, and shapes into a PDF with precise positioning while preserving the original content, and attach files, including XML and other formats.","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FXABYfB9b1_0","Why is pdfRest the best API to add content to PDF?","pdfRest offers a flexible API for adding text, images, shapes, tables, and attachments to PDF documents. It supports precise positioning, variable data workflows, structured table insertion, optional tags for newly added content, and PDF Generation workflows when paired with Create Blank PDF.","add-to-pdf","2024-08-15T16:18:30.403Z","2026-09-18T16:28:52.626Z","2026-09-18T16:28:54.474Z","ysclnvjn2upu6nv6daetg4hz",{"id":249,"name":955,"alternativeText":956,"caption":48,"width":957,"height":237,"formats":48,"hash":958,"ext":239,"mime":240,"size":959,"url":960,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":961,"updatedAt":962,"documentId":963,"publishedAt":247,"focalPoint":48},"add-to-pdf.svg","Add to PDF Logo",121,"add_to_pdf_9917f410ab",5.62,"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Fadd_to_pdf_9917f410ab.svg","2024-08-15T16:11:15.697Z","2024-08-15T16:11:39.908Z","fonwbccct3f9dvnn7ibyhcx1",{"id":965,"name":966,"tool_page_desc":967,"new_tool":284,"pro_tool":284,"header_blurb":968,"tool_card_desc":969,"youtube_url":48,"why_section_title":970,"why_section_desc":971,"slug":972,"createdAt":973,"updatedAt":974,"publishedAt":975,"publish_date":294,"rank":320,"cloud_only":48,"documentId":976,"icon":977},15,"Merge PDFs","Merge PDFs is a REST API tool that joins together any number of full PDF files or specified pages from separate documents into a consolidated PDF. It's designed to provide developers with precise control over document assembly, enabling the programmatic merging of PDF files to create organized, streamlined, and optimized consolidated documents for various applications.\n## Key Benefits of Merge PDFs API\n- Produce optimized output by ensuring merged PDF files are free of unnecessary \"bloat,\" resulting in smaller file sizes and faster user experiences for transfers and viewing.\n- Assemble your perfect document with flexible page range selection, allowing you to choose specific pages or ranges from multiple input PDFs and arrange them in any desired order.\n- Support sophisticated document compilation workflows, such as extracting specific chapters from different reports or combining legal documents with precise page control.\n- Level up with chainable API calls, allowing you to merge various file types (e.g., Word, Excel, images, HTML) into a single PDF by first converting them and then seamlessly merging their outputs without re-uploading.\n- Expedite report compilation and other document assembly tasks by automating the process of combining diverse PDF content into a single, cohesive file.\n- Enhance document management by creating consolidated PDFs that are easier to store, distribute, and access, improving overall organizational efficiency.","Combine whole PDFs or page ranges","Combine multiple PDF documents or pages into one consolidated PDF.\n\n","Why is pdfRest the best API to merge PDF files?","pdfRest offers the best solution for merging multiple PDF documents together, because it produces optimized output, supports flexible page ranges, and can be combined with conversion to merge files of other formats.","merge-pdfs","2024-08-15T16:22:46.662Z","2026-07-10T21:40:04.065Z","2024-08-15T16:22:56.699Z","ke8rhxnq4lsb5t4tlsk1pl1c",{"id":978,"name":979,"alternativeText":966,"caption":48,"width":980,"height":375,"formats":48,"hash":981,"ext":239,"mime":240,"size":982,"url":983,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":984,"updatedAt":985,"documentId":986,"publishedAt":247,"focalPoint":48},73,"merge-pdfs.svg",147,"merge_pdfs_028d9c9ff5",7.81,"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Fmerge_pdfs_028d9c9ff5.svg","2024-08-15T16:19:24.527Z","2024-08-15T16:19:39.411Z","z554wdjfbc4krjnvydptaplq",{"id":988,"name":989,"tool_page_desc":990,"new_tool":284,"pro_tool":284,"header_blurb":991,"tool_card_desc":992,"youtube_url":993,"why_section_title":994,"why_section_desc":995,"slug":996,"createdAt":997,"updatedAt":998,"publishedAt":999,"publish_date":294,"rank":345,"cloud_only":48,"documentId":1000,"icon":1001},16,"Split PDF","Split PDF is a REST API tool that gives developers precise control over document content by separating a single PDF file into multiple new documents. Use it to split PDF files by page range, extract specific sections, or automate document workflows at scale. This versatile tool is ideal for breaking down large documents into smaller, more manageable files for easier distribution, archiving, or processing. Whether you need to extract specific pages, delete unwanted content, or reorder pages, the Split PDF API provides the flexibility to meet your workflow needs.\n\n### Key Benefits of Split PDF API\n\n- Split PDFs with flexible page ranges, allowing you to specify individual pages, page ranges (e.g., 1-10), or even keywords like even or odd for precise control.\n- Extract or delete pages from a document by defining a page range for a single output file — one of the most useful PDF tools for managing and sanitizing document content.\n- Reorder or duplicate pages by listing page numbers in your desired sequence, enabling you to rearrange or repeat content as needed.\n- Create multiple new documents with a single API call by defining each output file, providing an efficient way to handle complex splitting tasks.\n- Optimize new files by automatically removing unused content from the original document, ensuring the output files are as small and efficient as possible.\n- Automate document management workflows for tasks like archiving large reports, isolating legal contracts, or separating chapters of a book for publishing.","Split a PDF into multiple output files","Split a single PDF document into one or more PDF documents with exactly the pages you need.","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FGOxSDafBb3Q","Why is pdfRest the best API to split PDF?","pdfRest offers the best solution for splitting a PDF input into multiple PDF outputs, because it supports flexible page ranges, optimized content, and deleting or exporting pages.","split-pdf","2024-08-15T16:24:51.290Z","2026-07-10T21:40:27.334Z","2024-08-15T16:27:17.095Z","cpoqkgryfsnab76sdlnv15v9",{"id":789,"name":1002,"alternativeText":989,"caption":48,"width":1003,"height":375,"formats":48,"hash":1004,"ext":239,"mime":240,"size":1005,"url":1006,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":1007,"updatedAt":1008,"documentId":1009,"publishedAt":247,"focalPoint":48},"split-pdf.svg",155,"split_pdf_378760c4c6",7.76,"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Fsplit_pdf_378760c4c6.svg","2024-08-15T16:23:25.518Z","2024-08-15T16:23:41.859Z","hrt65mecnhczujhjlfbg0l58",{"id":1011,"name":1012,"tool_page_desc":1013,"new_tool":284,"pro_tool":284,"header_blurb":1014,"tool_card_desc":1015,"youtube_url":48,"why_section_title":1016,"why_section_desc":1017,"slug":1018,"createdAt":1019,"updatedAt":1020,"publishedAt":1021,"publish_date":1022,"rank":369,"cloud_only":48,"documentId":1023,"icon":1024},33,"Set Page Boxes","Set Page Boxes is a REST API tool that allows precise control over PDF page boundaries, enabling developers to set or edit the MediaBox (page size), CropBox (visible content area for cropping PDF and removing white space), BleedBox (extra margin for professional printing with bleed), TrimBox (final printed page dimensions), and ArtBox (boundary of the artwork or content).\n\n## Key Benefits of Set Page Boxes API\n- Offers granular control over PDF page dimensions by allowing users to set or modify the MediaBox, CropBox, BleedBox, TrimBox, and ArtBox.\n- Crop PDF files by setting the CropBox to focus on essential content and remove unwanted white space for cleaner viewing and printing.\n- Control the overall dimensions of your PDF by setting the MediaBox, allowing you to resize PDF pages.\n- Configure the BleedBox to extend content beyond the TrimBox, ensuring accurate trimming and eliminating white edges in professionally printed documents.\n- Set the TrimBox to specify the intended final dimensions of the printed page after it has been cut.\n- Use the ArtBox to define the precise boundaries of the artwork or meaningful visual elements on the page, crucial for design and prepress workflows.","Set PDF page boundary boxes","Set or edit PDF page boundary box values for MediaBox, CropBox, BleedBox, TrimBox, and ArtBox.","Why is pdfRest the best API to set PDF page boundary boxes?","pdfRest provides the best API to set PDF page boundary boxes because it offers precise control over all five box types (MediaBox, CropBox, BleedBox, TrimBox, ArtBox), leverages advanced PDF technology for accuracy, and enables seamless integration for automated workflows.","set-page-boxes","2025-05-27T19:54:27.197Z","2026-07-10T21:40:57.166Z","2025-05-28T21:12:41.077Z","2025-11-21T06:00:00.000Z","cavyxet54k196c49ftemgysr",{"id":1025,"name":1026,"alternativeText":1012,"caption":48,"width":323,"height":237,"formats":48,"hash":1027,"ext":239,"mime":240,"size":1028,"url":1029,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":1030,"updatedAt":1030,"documentId":1031,"publishedAt":247,"focalPoint":48},399,"set-page-boxes.svg","set_page_boxes_399944da86",7.69,"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Fset_page_boxes_399944da86.svg","2025-05-27T18:29:39.917Z","i1ypu8muxiyb6coxov8tt6zq",{"id":1033,"name":1034,"tool_page_desc":1035,"new_tool":284,"pro_tool":284,"header_blurb":1036,"tool_card_desc":1037,"youtube_url":48,"why_section_title":1038,"why_section_desc":1039,"slug":1040,"createdAt":950,"updatedAt":1041,"publishedAt":1042,"publish_date":230,"rank":5,"cloud_only":48,"documentId":1043,"icon":1044},119,"Create Blank PDF","Create Blank PDF is a REST API tool designed to generate new, empty PDF documents with precise page size and page count specifications. As a simple yet vital utility, it serves as the foundational first step in workflows where developers need to programmatically generate PDFs by filling this blank slate text, images, and other content.\n\n## Key Benefits of Create Blank PDF API\n\n- Facilitate dynamic PDF generation workflows by creating a blank document ready to be programmatically filled with content via the Add to PDF tool.\n- Precisely define the dimensions and orientation of the new document using standard sizes (e.g., Letter, A4) or custom measurements.\n- Avoid template storage and management by generating a simple blank canvas instantly, eliminating the need to upload and process static template files.\n- Simplify complex document creation workflows by separating the blank file generation from the content placement step.\n- Ensure document consistency by defining a standard template size and orientation for all subsequently generated content.","Create a blank PDF with custom page specifications","Generate new, empty PDF documents with precise control over page size, orientation, and page count, serving as a clean foundation for content generation workflows.","Why is pdfRest the best API to create blank PDF documents?","pdfRest offers the best solution for creating blank PDF documents because it provides precise control over document dimensions, ensures seamless compatibility with subsequent modification steps, and accelerates programmatic content generation.","create-blank-pdf","2026-09-04T05:31:02.130Z","2026-09-04T05:31:03.826Z","iuzct8ivuzipwsqssi7mxhei",{"id":1045,"name":1046,"alternativeText":1047,"caption":48,"width":399,"height":400,"formats":48,"hash":1048,"ext":239,"mime":240,"size":1049,"url":1050,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":1051,"updatedAt":1052,"documentId":1053,"publishedAt":247,"focalPoint":48},679,"create-blank-pdf.svg","Create Blank PDF API Tool","create_blank_pdf_bc88149c38",4.58,"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Fcreate_blank_pdf_bc88149c38.svg","2025-11-21T20:02:16.110Z","2025-11-21T20:02:30.029Z","ejg018im1qtfv6zbpdoccabs",{"id":345,"name":1055,"description":1056,"createdAt":1057,"updatedAt":1058,"publishedAt":1059,"rank":394,"documentId":1060,"api_tools":1061},"Forms","Process all PDF forms, including static and dynamic XFA and AcroForms","2024-08-13T18:40:13.083Z","2025-09-29T20:42:18.033Z","2024-08-13T18:40:14.259Z","vc2pcm39zmox1fvotebqr946",[1062,1084,1106,1129],{"id":1063,"name":1064,"tool_page_desc":1065,"new_tool":284,"pro_tool":124,"header_blurb":1066,"tool_card_desc":1067,"youtube_url":1068,"why_section_title":1069,"why_section_desc":1070,"slug":1071,"createdAt":1072,"updatedAt":1073,"publishedAt":1074,"publish_date":294,"rank":48,"cloud_only":48,"documentId":1075,"icon":1076},17,"Flatten Forms","Flatten Forms is a REST API tool designed to lock and preserve PDF form field values, converting Acroform and XFA files into standard, non-editable PDF documents. This ensures maximum compatibility across all PDF viewers and platforms, making it an essential tool for businesses and developers looking to streamline document workflows and enhance data security.\n## Key Benefits of Flatten Forms API\n- Lock form fields to prevent unauthorized edits, ensuring the integrity and authenticity of your documents.\n- Convert interactive forms into static PDFs, eliminating compatibility issues with different PDF readers and ensuring access for all users.\n- Seamlessly process Static XFA, Dynamic XFA, and Acroforms, making it ideal for diverse document management needs.\n- Automate the flattening process to enhance efficiency and reduce manual intervention, perfect for high-volume document processing.\n- Preserve the visual appearance and data integrity of forms, making them suitable for legal, compliance, print, and archival purposes.","Lock data and maximize compatibility","Preserve and lock PDF form field values, make forms no longer editable, and convert Acroform and XFA files into standard PDF files.","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002F--WcisYKttU","Why is pdfRest the best API to flatten PDF forms?","pdfRest offers the best solution for flattening PDF forms, because it preserves form field values, supports XFA and Acroforms, and maximizes compatibility.","flatten-forms","2024-08-15T16:30:45.372Z","2026-07-10T21:50:47.187Z","2024-08-15T16:30:47.642Z","w6fcdt29smep2qmsij1ls6pa",{"id":237,"name":1077,"alternativeText":1064,"caption":48,"width":281,"height":397,"formats":48,"hash":1078,"ext":239,"mime":240,"size":1079,"url":1080,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":1081,"updatedAt":1082,"documentId":1083,"publishedAt":247,"focalPoint":48},"flatten-forms.svg","flatten_forms_994c0d2c6a",15.23,"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Fflatten_forms_994c0d2c6a.svg","2024-08-15T16:28:31.980Z","2024-08-15T16:28:39.138Z","exy8ggo4l4nl5ju77d65udcw",{"id":1085,"name":1086,"tool_page_desc":1087,"new_tool":284,"pro_tool":124,"header_blurb":1088,"tool_card_desc":1089,"youtube_url":1090,"why_section_title":1091,"why_section_desc":1092,"slug":1093,"createdAt":1094,"updatedAt":1095,"publishedAt":1096,"publish_date":294,"rank":48,"cloud_only":48,"documentId":1097,"icon":1098},18,"Import Form Data","Import Form Data is a REST API tool designed to support programmatic PDF form filling by importing data from external data files into Acroforms, static XFA, and dynamic XFA.\n## Key Benefits of Import Form Data API\n- Built upon the foundation of Adobe's PDF forms technology, ensuring robust and reliable form filling capabilities.\n- Offers unmatched support for dynamic XFA files, in addition to static XFA and Acroforms, providing unparalleled flexibility for complex forms.\n- Seamlessly imports data from external files to automatically populate PDF form fields, eliminating manual data entry.\n- Facilitates the programmatic filling of PDF forms, minimizing errors associated with manual input and ensuring data accuracy.\n- Easily integrates with existing applications and workflows to automate document generation and data management processes.","Import data from external file into PDF form fields","Import values into PDF form fields from an external data file for both XFA forms and Acroforms.","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FD-V-vMqkd-c","Why is pdfRest the best API to fill PDF forms with data?","pdfRest offers the best solution for importing data into PDF forms, because it supports automated form filling, comprehensive XFA forms and Acroform compatibility, and robust data protection for professional results.","import-form-data","2024-08-15T16:35:38.553Z","2026-08-05T14:54:20.653Z","2024-08-15T16:35:40.609Z","nnfp9h2wzgk9vwqtnxfefvnw",{"id":375,"name":1099,"alternativeText":1086,"caption":48,"width":236,"height":375,"formats":48,"hash":1100,"ext":239,"mime":240,"size":1101,"url":1102,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":1103,"updatedAt":1104,"documentId":1105,"publishedAt":247,"focalPoint":48},"import-form-data.svg","import_form_data_381722dd2e",7.41,"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Fimport_form_data_381722dd2e.svg","2024-08-15T16:31:46.212Z","2024-08-15T16:31:54.236Z","b4itrtuvfqc8zpbtvfhlyopk",{"id":1107,"name":1108,"tool_page_desc":1109,"new_tool":284,"pro_tool":124,"header_blurb":1110,"tool_card_desc":1111,"youtube_url":1112,"why_section_title":1113,"why_section_desc":1114,"slug":1115,"createdAt":1116,"updatedAt":1117,"publishedAt":1118,"publish_date":294,"rank":48,"cloud_only":48,"documentId":1119,"icon":1120},19,"Export Form Data","Export Form Data is a REST API tool that extracts values from PDF form fields and exports them to external data files for Acroforms, static XFA, and dynamic XFA.\n## Key Benefits of Export Form Data API\n- Efficiently extract data from filled PDF forms, regardless of their complexity or underlying technology, into easily manageable external data files.\n- Reliably exports data from Acroforms, static XFA, and dynamic XFA forms for complete coverage of PDF form types.\n- Enables seamless integration of extracted form data into databases and other services for streamlined data management and analysis.\n- Built with the robust foundation of Adobe's PDF forms technology, ensuring accurate and dependable data extraction.\n- Included in the enterprise-grade PDF Forms Pro toolkit, designed for demanding PDF forms processing and complex automated workflows.\n\n","Export data from PDF form fields to external file","Export values from PDF form fields to an external data file for both XFA forms and Acroforms.","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FFCWVHfkmn4s","Why is pdfRest the best API to export PDF form data?","pdfRest offers the best solution for exporting data from filled PDF forms, because it supports data aggregation, XFA forms and Acroforms, and professional results.","export-form-data","2024-08-15T16:39:42.481Z","2026-08-05T14:55:29.369Z","2024-08-15T16:39:47.970Z","pzhwjkrmhd4khcemmebl81cv",{"id":1121,"name":1122,"alternativeText":1108,"caption":48,"width":236,"height":375,"formats":48,"hash":1123,"ext":239,"mime":240,"size":1124,"url":1125,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":1126,"updatedAt":1127,"documentId":1128,"publishedAt":247,"focalPoint":48},77,"export-form-data.svg","export_form_data_6a7b74f8fc",7.47,"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Fexport_form_data_6a7b74f8fc.svg","2024-08-15T16:36:13.475Z","2024-08-15T16:36:20.869Z","rr1czsbfllqg9w2eelckeyv2",{"id":1130,"name":1131,"tool_page_desc":1132,"new_tool":284,"pro_tool":124,"header_blurb":1133,"tool_card_desc":1134,"youtube_url":1135,"why_section_title":1136,"why_section_desc":1137,"slug":1138,"createdAt":1139,"updatedAt":1140,"publishedAt":1141,"publish_date":230,"rank":48,"cloud_only":48,"documentId":1142,"icon":1143},29,"XFA to Acroforms","XFA to Acroforms is a REST API tool designed to convert PDF forms from Static XFA or Dynamic XFA to Acroforms using the highest-quality Adobe technology. By converting to Acroforms, developers can ensure PDF forms are highly compatible with forms processing tools and workflows.\n## Key Benefits of XFA to Acroforms API\n- Converting XFA to Acroforms can help streamline workflows by ensuring compatibility with downstream processes.\n- Support Legacy System Modernization by migrating to Acroforms and future-proofing against declining XFA support.\n- While \"XFA form cannot be edited\" errors are common, Acroforms offer a more consistent and user-friendly experience.\n- Acroforms often adhere more closely to PDF standards, ensuring better compliance with industry regulations.\n- Acroforms offer better accessibility features, making them easier to use for individuals with disabilities.\n- Acroforms are generally easier to manage and edit compared to XFA forms, reducing maintenance efforts.","Convert XFA forms to widely supported Acroforms","Convert PDF forms from Static XFA or Dynamic XFA to Acroforms for expanded compatibility with forms processing tools and workflows.","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FKGflmj30DA4","Why is pdfRest the best API to Convert XFA to Acroforms?","pdfRest offers the best solution for converting XFA forms to Acroforms, because it preserves form fidelity, offers instant online validation, and removes compatibility issues associated with the XFA format.  ","xfa-to-acroforms","2024-09-17T15:30:07.362Z","2026-07-10T21:41:24.447Z","2024-09-17T15:33:23.322Z","gjb3owl3eqetep5zgm7racf9",{"id":1144,"name":1145,"alternativeText":1131,"caption":48,"width":96,"height":375,"formats":48,"hash":1146,"ext":239,"mime":240,"size":1147,"url":1148,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":1149,"updatedAt":1150,"documentId":1151,"publishedAt":247,"focalPoint":48},96,"xfa-to-acroforms.svg","xfa_to_acroforms_ca251cf707",15.27,"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Fxfa_to_acroforms_ca251cf707.svg","2024-09-17T16:05:54.557Z","2024-09-17T16:06:06.162Z","ddqfkoqq3ay4dwv9eyyk0lfr",{"id":419,"name":1153,"description":1154,"createdAt":1155,"updatedAt":1156,"publishedAt":1157,"rank":419,"documentId":1158,"api_tools":1159},"Simplify","Build simple, streamlined workflows with these flexible utility tools","2024-08-13T18:40:55.809Z","2025-09-29T20:42:31.285Z","2024-08-13T18:40:57.148Z","ebzkwrxnvvcxdp9p0i5vfoxi",[1160,1181,1202,1225],{"id":1161,"name":1162,"tool_page_desc":1163,"new_tool":284,"pro_tool":284,"header_blurb":1164,"tool_card_desc":1165,"youtube_url":48,"why_section_title":1166,"why_section_desc":1167,"slug":1168,"createdAt":1169,"updatedAt":1170,"publishedAt":1171,"publish_date":294,"rank":48,"cloud_only":48,"documentId":1172,"icon":1173},26,"Upload Files","The Upload Files API is a flexible tool that simplifies how developers get files onto the pdfRest server for processing. While it is an optional step, this tool is ideal for pre-processing by enabling you to upload one or more files from your local storage or directly from a public URL. By using the Upload Files API, you can replace more complex multipart\u002Fform-data requests with simpler single-part JSON payloads for subsequent processing calls.\n\n### Key Benefits of Upload Files API\n\n* Streamline API requests by pre-uploading files and using a simple resource ID in subsequent calls, avoiding the need for complex multipart\u002Fform-data payloads.\n* Upload multiple files at once from local storage or public URLs, providing an efficient way to transfer and manage a batch of files in a single request.\n* Conveniently upload files from a public URL, a feature unique to this tool that simplifies workflows by directly fetching files from an external source.\n* Maintain data security and privacy with robust GDPR and HIPAA compliance, ensuring your files are encrypted and processed securely.\n* Simplify file management with an intuitive JSON response that associates each uploaded file's original name with a unique resource ID for easy tracking.\n* Support for flexible upload methods, including single-part binary payloads for individual files and multipart\u002Fform-data for multiple files.","Upload files with flexible options","Upload multiple files at once from local storage or public URL for convenient transfers prior to processing.","Why does pdfRest API offer the most convenient file uploads?","pdfRest offers the best solution for uploading files for processing, because it supports multiple files at once, upload from URL, and intuitive responses for easy resource tracking.","upload-files","2024-08-15T17:28:33.279Z","2025-09-17T21:38:25.843Z","2024-08-15T17:28:52.675Z","pud8sq3owma6mh11lnbhpuhn",{"id":400,"name":1174,"alternativeText":1162,"caption":48,"width":372,"height":237,"formats":48,"hash":1175,"ext":239,"mime":240,"size":1176,"url":1177,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":1178,"updatedAt":1179,"documentId":1180,"publishedAt":247,"focalPoint":48},"upload-files.svg","upload_files_5b876cd91c",4.01,"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Fupload_files_5b876cd91c.svg","2024-08-15T17:27:12.595Z","2024-08-15T17:27:21.424Z","ytvm7mhlr56k59ehjzg5uxap",{"id":1182,"name":1183,"tool_page_desc":1184,"new_tool":284,"pro_tool":284,"header_blurb":1185,"tool_card_desc":1186,"youtube_url":48,"why_section_title":1187,"why_section_desc":1188,"slug":1189,"createdAt":1190,"updatedAt":1191,"publishedAt":1192,"publish_date":294,"rank":48,"cloud_only":48,"documentId":1193,"icon":1194},27,"Zip Files","Zip Files is a REST API tool designed to streamline file management by compressing and extracting files. It allows developers to compress multiple uploaded or processed files into a single Zip archive for convenient download or extract files from .zip archives, including those protected by passwords.  \n## Key Benefits of Zip Files API\n- Simplify the handling of multiple files by compressing them into a single Zip archive, making storage and transfer more efficient.\n- Unlock protected .zip archives using a password, ensuring you can access and manage secured files without hassle.\n- Integrate zipping and unzipping operations into automated workflows, reducing the need for manual file handling.\n- Package multiple files into a single archive for easy distribution, whether for sharing with clients or archiving project files.\n- Seamlessly incorporate the Zip and Unzip Files tool into existing systems, supporting a wide range of use cases.","Zip processed files for easy downloads","Compress multiple files into a single Zip for easy download, or extract files from a .zip archive to access and process them individually.","Why is pdfRest the best API to Zip files?","pdfRest offers the best solution for zipping files together, because it supports convenience, all file types, and easy development.","zip-files","2024-08-15T17:31:52.169Z","2025-09-10T19:45:28.046Z","2024-08-15T17:31:54.117Z","dnkaxk3gi1e16vvgola3c053",{"id":1195,"name":1196,"alternativeText":1183,"caption":48,"width":298,"height":237,"formats":48,"hash":1197,"ext":239,"mime":240,"size":713,"url":1198,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":1199,"updatedAt":1200,"documentId":1201,"publishedAt":247,"focalPoint":48},85,"zip-files.svg","zip_files_d581f52e92","https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Fzip_files_d581f52e92.svg","2024-08-15T17:32:20.904Z","2024-08-15T17:32:30.183Z","tzwrt7ryn6ztfztlxvk3ki2f",{"id":1203,"name":1204,"tool_page_desc":1205,"new_tool":284,"pro_tool":284,"header_blurb":1206,"tool_card_desc":1207,"youtube_url":48,"why_section_title":1208,"why_section_desc":1209,"slug":1210,"createdAt":1211,"updatedAt":1212,"publishedAt":1213,"publish_date":610,"rank":48,"cloud_only":124,"documentId":1214,"icon":1215},28,"API Polling","API Polling is a REST API tool that supports asynchronous monitoring for the status of requests sent to any pdfRest endpoint. It's designed to give developers granular control over long-running PDF processing tasks, ensuring workflow flexibility and preventing front-end timeouts for even the most complex operations.\n## Key Benefits of API Polling\n- Avoid timeouts by getting an instant requestId response, especially for complex PDF conversions or advanced document optimizations.\n- Enhance workflow flexibility by designing robust asynchronous workflows, initiating multiple PDF processing tasks concurrently without waiting for each to complete.\n- Gain granular status monitoring using the requestId to check the progress of any pdfRest API call at your own pace, enabling efficient application management.\n- Enjoy universal compatibility by seamlessly integrating API polling with all pdfRest tools, simplifying development and promoting consistent code reusability across your projects.\n- Optimize efficient resource management by allowing your application to move on to other tasks while waiting for PDF job completion.\n- Ensure reliable asynchronous processing for time-consuming PDF automation workflows without blocking your main application thread.","Poll for request statuses","Asynchronously poll for status of requests sent to any pdfRest endpoint for flexible workflow control that avoids timeouts","Why pdfRest for API Polling?","pdfRest offers the best solution for polling request statuses, because it prevents timeouts, offers workflow flexibility, and is universally supported across the toolkit.","api-polling","2024-08-15T17:35:48.465Z","2026-08-05T03:00:33.495Z","2024-08-15T17:36:40.731Z","rmfpfeem8uzb37t0cdg0gooo",{"id":1216,"name":1217,"alternativeText":1204,"caption":48,"width":1218,"height":1195,"formats":48,"hash":1219,"ext":239,"mime":240,"size":1220,"url":1221,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":1222,"updatedAt":1223,"documentId":1224,"publishedAt":247,"focalPoint":48},86,"api-polling.svg",93,"api_polling_122863dce8",7.64,"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Fapi_polling_122863dce8.svg","2024-08-15T17:33:13.922Z","2024-10-21T16:53:49.385Z","fe1uamh2xt9ko2d8112ygnef",{"id":424,"name":1226,"tool_page_desc":1227,"new_tool":284,"pro_tool":284,"header_blurb":1228,"tool_card_desc":1229,"youtube_url":48,"why_section_title":1230,"why_section_desc":1231,"slug":1232,"createdAt":1233,"updatedAt":1234,"publishedAt":1235,"publish_date":1236,"rank":48,"cloud_only":48,"documentId":1237,"icon":1238},"Delete Files","Delete Files is a REST API tool that gives developers full control over their file lifecycle by enabling the immediate, permanent deletion of uploaded or generated files. While all files are automatically removed after a brief retention period, this tool serves as an optional helper for users who need to explicitly and securely delete sensitive data at any time, ensuring compliance and enhancing privacy.\n\n### Key Benefits of Delete Files API\n\n- Permanently delete files before the default file retention period, ensuring sensitive data is removed instantly and with no copies archived.\n- Streamline security and compliance workflows for tasks involving confidential data, such as PII redaction, encryption, or watermarking.\n- Exercise granular control over file management by deleting individual files using a specific resource ID.\n- Automate file cleanup at scale with the option to perform batch deletions, removing multiple files with a single API call.\n- Enhance data privacy with a secure deletion process that verifies file ownership via your API key, safeguarding your files from unauthorized access.\n- Simplify your integration with a straightforward, easy-to-use tool that fits seamlessly into your existing PDF processing workflows.","Delete files on-demand","Immediately and permanently delete uploaded or generated files to take full control of the data lifecycle.","Why does pdfRest offer the best API for deleting files?","pdfRest offers the best solution for deleting files, because it enables on-demand deletion, supports individual and batch operations, and offers enterprise-grade security.","delete-files","2025-09-17T21:16:49.822Z","2026-04-24T14:55:51.210Z","2025-09-19T22:00:08.254Z","2025-09-17T05:00:00.000Z","gyveemixg5f8cs5p81c8c0fs",{"id":1239,"name":1240,"alternativeText":1241,"caption":48,"width":422,"height":880,"formats":48,"hash":1242,"ext":239,"mime":240,"size":1243,"url":1244,"previewUrl":48,"provider":243,"provider_metadata":48,"createdAt":1245,"updatedAt":1246,"documentId":1247,"publishedAt":247,"focalPoint":48},582,"delete-files.svg","Delete Files API Tool","delete_files_63f748cd95",4.69,"https:\u002F\u002Fenergized-actor-82099f85fb.media.strapiapp.com\u002Fdelete_files_63f748cd95.svg","2025-09-17T19:50:52.993Z","2025-09-17T19:52:24.246Z","l191zdc6fx0jb8ti6dvq0xd0",{},[1250,1327,1365,1451,1509,1575,1628,1682,1715,1753,1823,1867,1948,2038,2112,2198,2248],{"id":1251,"uuid":1252,"title":1253,"slug":1254,"html":1255,"comment_id":1256,"feature_image":48,"featured":284,"visibility":1257,"created_at":1258,"updated_at":1259,"published_at":1260,"custom_excerpt":48,"codeinjection_head":1261,"codeinjection_foot":48,"custom_template":48,"canonical_url":1262,"authors":1263,"tags":1269,"primary_author":1321,"primary_tag":1322,"url":1323,"excerpt":1324,"reading_time":5,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":1325,"meta_description":1326,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65ae9a86656af204db4b12db","04d85677-8f8a-4ca5-a399-6433fcc459e4","Artificial Intelligence (AI)","artificial-intelligence-ai-hub","\u003Ch2>Harness the Power of AI and PDF Processing for Enhanced Document Workflows\u003C\u002Fh2>\n\u003Cp>pdfRest empowers you to enhance document workflows using the combined strength of our robust PDF processing tools and our \u003Cstrong>new\u003C\u002Fstrong> integrated \u003Cstrong>AI-powered APIs\u003C\u002Fstrong>. You can integrate extracted document content with external services like ChatGPT and OpenAI LLMs, or leverage our direct, dedicated solutions, starting with the \u003Cstrong>\u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fsummarize-pdf\u002F\">Summarize PDF API Tool\u003C\u002Fa>\u003C\u002Fstrong>.\u003C\u002Fp>\n\u003Ch2>Key Benefits of AI &amp; PDF Solutions:\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Cstrong>Accelerated document workflows:\u003C\u002Fstrong> Automate critical tasks like text summarization directly within the pdfRest platform.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Enhanced data insights:\u003C\u002Fstrong> Extract valuable information and metadata from PDF documents for deeper analysis and decision-making, whether using our integrated AI or external LLMs.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Competitive advantage:\u003C\u002Fstrong> Leverage the combined power of direct, integrated AI and reliable PDF processing to differentiate your business.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2>Two Paths for AI-Driven PDF Workflows:\u003C\u002Fh2>\n\u003Col>\n\u003Cli>\n    \u003Cstrong>Path 1: Utilize Integrated pdfRest AI Tools\u003C\u002Fstrong>\n    \u003Cp>For immediate, structured results, use our growing library of integrated AI solutions. For example, the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fsummarize-pdf\u002F\">Summarize PDF API Tool\u003C\u002Fa> processes your document and returns a customizable summary in a single, streamlined API call, eliminating the need to manage external LLM context windows or complex integration steps.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n    \u003Cstrong>Path 2: Integrate with External LLMs (e.g., OpenAI\u002FChatGPT)\u003C\u002Fstrong>\n    \u003Cp>For advanced, custom tasks (like sentiment analysis or specific content generation), you can leverage external LLMs. First, use pdfRest's \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fextract-text\u002F\">Extract Text\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Focr-pdf\u002F\">OCR PDF\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fpdf-to-markdown-api\u002F\">PDF to Markdown\u003C\u002Fa>, and \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fquery-pdf\u002F\">Query PDF\u003C\u002Fa> APIs to reliably extract text and metadata from PDF documents. Then, feed this extracted content into your chosen external AI tool.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>By integrating AI with PDF workflows using pdfRest, either through our direct AI-powered tools or through deep external integration, you can unlock new possibilities and achieve greater efficiency and effectiveness.\u003C\u002Fp>","651dbd942d4014c9499b20f4","public","2023-10-04T19:31:32.000+00:00","2026-09-04T17:53:52.000+00:00","2023-10-04T19:33:00.000+00:00","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"CollectionPage\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fartificial-intelligence-ai\u002F#collection\",\n      \"name\": \"Artificial Intelligence (AI)\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fartificial-intelligence-ai\u002F\",\n      \"isPartOf\": {\n        \"@type\": \"WebSite\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"mainEntity\": {\n        \"@type\": \"ItemList\",\n        \"itemListElement\": [\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 1,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fsecure-proprietary-pdf-reports-from-ai-scraping-and-data-mining\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 2,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fautomate-eu-cdsm-article-4-compliance-for-digital-pdf-publications\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 3,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fautomate-multi-language-knowledge-base-creation-from-product-manuals\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 4,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fstreamline-global-e-discovery-by-translating-foreign-legal-documents\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 5,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fbuild-a-scalable-ai-driven-document-analysis-platform\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 6,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Foptimize-legal-discovery-with-ai-summaries-of-contracts-pleadings\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 7,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fextract-structured-pdf-data-for-optimized-llm-training-with-markdown\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 8,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Faccess-pdf-processing-power-with-ai-magic\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 9,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fconvert-pdf-to-text-to-unlock-trapped-data\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 10,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fdiscover-sentiment-insights-from-pdf-documents-with-pdfrest-and-chatgpt\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 11,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fgenerating-summaries-of-pdf-documents-using-chatgpt\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 12,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Ftranslate-pdf-text-to-new-language-with-chatgpt\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 13,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fintegrate-pdfrest-with-chatgpt-to-generate-pdf-info-summary\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 14,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-choose-the-right-pdf-summary-format-style\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 15,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-markdown-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 16,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-markdown-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 17,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-markdown-with-java-code\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 18,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-markdown-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 19,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-markdown-with-php-code\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 20,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-markdown-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 21,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-summarize-pdf-text-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 22,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-summarize-pdf-text-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 23,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-summarize-pdf-text-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 24,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-summarize-pdf-text-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 25,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-summarize-pdf-text-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 26,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-summarize-pdf-text-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 27,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-translate-pdf-text-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 28,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-translate-pdf-text-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 29,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-translate-pdf-text-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 30,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-translate-pdf-text-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 31,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-translate-pdf-text-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 32,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-translate-pdf-text-with-python\u002F\"\n          }\n        ]\n      },\n      \"description\": \"Integrate PDF workflows with AI Tools, such as ChatGPT LLM from OpenAI. Leverage the combined power of AI and robust PDF processing capabilities.\",\n      \"keywords\": \"AI, Analysis, ChatGPT, OpenAI, Sentiment, Summarize PDF, Summary, Translate PDF, Translation, pdfAssistant\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Artificial Intelligence (AI)\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fartificial-intelligence-ai\u002F\"\n        }\n      ]\n    }\n  ]\n}","https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fartificial-intelligence-ai\u002F",[1264],{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},"65ae9a7f656af204db4b0d8e","Dana Liang","dana","https:\u002F\u002Fcms.pdfrest.com\u002Fauthor\u002Fdana\u002F",[1270,1274,1278,1285,1289,1293,1297,1301,1305,1309,1313,1317],{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},"65ae9a81656af204db4b0f41","content-hub","https:\u002F\u002Fcms.pdfrest.com\u002Ftag\u002Fcontent-hub\u002F",{"id":1275,"name":1276,"slug":1276,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1277},"65ae9a81656af204db4b0f44","artificial-intelligence-ai","https:\u002F\u002Fcms.pdfrest.com\u002Ftag\u002Fartificial-intelligence-ai\u002F",{"id":1279,"name":1280,"slug":1281,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":1283,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0ef3","#AI","hash-ai","internal","popular","https:\u002F\u002Fcms.pdfrest.com\u002F404\u002F",{"id":1286,"name":1287,"slug":1288,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0ef4","#ChatGPT","hash-chatgpt",{"id":1290,"name":1291,"slug":1292,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0ef5","#OpenAI","hash-openai",{"id":1294,"name":1295,"slug":1296,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0f78","#Summary","hash-summary",{"id":1298,"name":1299,"slug":1300,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0f79","#Translation","hash-translation",{"id":1302,"name":1303,"slug":1304,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0f8a","#Sentiment","hash-sentiment",{"id":1306,"name":1307,"slug":1308,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0f8b","#Analysis","hash-analysis",{"id":1310,"name":1311,"slug":1312,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65b41f64533c9f26b9435dc0","#pdfAssistant","hash-pdfassistant",{"id":1314,"name":1315,"slug":1316,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"68daf08c533c9f26b943a62d","#Summarize PDF","hash-summarize-pdf",{"id":1318,"name":1319,"slug":1320,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"68f1062e533c9f26b943a789","#Translate PDF","hash-translate-pdf",{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},"https:\u002F\u002Fcms.pdfrest.com\u002Fartificial-intelligence-ai-hub\u002F","Harness the Power of AI and PDF Processing for Enhanced Document Workflows\n\n\npdfRest empowers you to enhance document workflows using the combined strength of our robust PDF processing tools and our new integrated AI-powered APIs. You can integrate extracted document content with external services like ChatGPT and OpenAI LLMs, or leverage our direct, dedicated solutions, starting with the Summarize PDF API Tool.\n\n\n\nKey Benefits of AI & PDF Solutions:\n\n\n * Accelerated document workflows: Automate","PDF AI Workflows for Developers, Artificial Intelligence for PDF | pdfRest","Integrate PDF workflows with AI Tools, such as ChatGPT LLM from OpenAI. Leverage the combined power of AI and robust PDF processing capabilities.",{"id":1328,"uuid":1329,"title":1330,"slug":1331,"html":1332,"comment_id":1333,"feature_image":48,"featured":284,"visibility":1257,"created_at":1334,"updated_at":1335,"published_at":1336,"custom_excerpt":48,"codeinjection_head":1337,"codeinjection_foot":48,"custom_template":48,"canonical_url":1338,"authors":1339,"tags":1341,"primary_author":1359,"primary_tag":1360,"url":1361,"excerpt":1362,"reading_time":5,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":1363,"meta_description":1364,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65ae9a86656af204db4b12e1","273b6649-e046-4bd3-aa99-d597d5ed9ca0","Check & Validate PDF","check","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Ensure PDF Quality and Compliance with pdfRest Validation Tools\u003C\u002Fh2>\n\n\u003Cp>pdfRest empowers you to examine and validate PDF documents, exposing issues that can affect compatibility throughout document workflows. Early detection of potential problems helps teams route documents appropriately before they reach a downstream system or reviewer.\u003C\u002Fp>\n\n\u003Ch2>Proactive PDF Quality Control\u003C\u002Fh2>\n\n\u003Cp>By checking PDFs early, you can catch issues and make more informed processing decisions across a range of workflows. With pdfRest, you can:\u003C\u002Fp>\n\n\u003Cul>\n  \u003Cli>\u003Cstrong>Identify potential errors:\u003C\u002Fstrong> Catch issues such as corrupted data or formatting inconsistencies before they disrupt workflows.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Check conformance:\u003C\u002Fstrong> Inspect PDF\u002FA, PDF\u002FX, PDF\u002FUA, and other relevant document characteristics.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Support records workflows:\u003C\u002Fstrong> Review document properties and conformance information before routing a file for retention or follow-up.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Inspect document features:\u003C\u002Fstrong> Check elements such as fonts, images, metadata, forms, language, and tagging before printing or distribution.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Ch2>Powerful Validation Tools at Your Fingertips\u003C\u002Fh2>\n\n\u003Cp>Leverage pdfRest's \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fquery-pdf\u002F\">Query PDF API Tool\u003C\u002Fa> for in-depth PDF analysis:\u003C\u002Fp>\n\n\u003Cul>\n  \u003Cli>\u003Cstrong>Conditional Data Check:\u003C\u002Fstrong> Verify specific information within PDFs using conditional queries.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Standard Conformance:\u003C\u002Fstrong> Query document characteristics relevant to PDF\u002FA, PDF\u002FX, PDF\u002FUA, and other standards.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Metadata Analysis:\u003C\u002Fstrong> Gain detailed insights into document metadata, forms, fonts, images, language, tagging, and more.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Ch2>Validate Hybrid Electronic Invoices\u003C\u002Fh2>\n\n\u003Cp>The \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fvalidate-zugferd-pdf\u002F\">Validate ZUGFeRD PDF API Tool\u003C\u002Fa> checks an existing ZUGFeRD or Factur-X hybrid invoice and its PDF\u002FA conformance without modifying the submitted document. Use it as an intake check for supplier invoices or as a verification step after creating an invoice with the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fcreate-zugferd-pdf\u002F\">Create ZUGFeRD PDF API Tool\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Cp>By using pdfRest's validation capabilities, applications can make a clear routing decision based on the document returned by a workflow rather than treating every uploaded PDF as ready for the same next step.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","651f0fed2d4014c9499b2180","2023-10-05T19:35:09.000+00:00","2026-09-18T20:05:09.000+00:00","2023-10-05T19:35:39.000+00:00","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"CollectionPage\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fcheck-validate-pdf\u002F#collection\",\n      \"name\": \"Check & Validate PDF\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fcheck-validate-pdf\u002F\",\n      \"isPartOf\": {\n        \"@type\": \"WebSite\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"mainEntity\": {\n        \"@type\": \"ItemList\",\n        \"itemListElement\": [\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 1,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fdiscover-how-pdfrest-outperforms-free-open-source-pdf-tools\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 2,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fparse-pdf-files-to-streamline-data-extraction\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 3,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fadd-page-numbers-to-pdf-documents\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 4,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fdetect-and-repair-non-conformant-pdf-a-documents\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 5,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fintegrate-pdfrest-with-chatgpt-to-generate-pdf-info-summary\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 6,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-check-pdf-conditions-and-metadata-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 7,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-check-pdf-conditions-and-metadata-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 8,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-check-pdf-conditions-and-metadata-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 9,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-check-pdf-conditions-and-metadata-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 10,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-check-pdf-conditions-and-metadata-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 11,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-check-pdf-conditions-and-metadata-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 12,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-validate-pdf-a-conformance-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 13,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-validate-pdf-a-conformance-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 14,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-validate-pdf-a-conformance-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 15,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-validate-pdf-a-conformance-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 16,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-validate-pdf-a-conformance-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 17,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-validate-pdf-a-conformance-with-python\u002F\"\n          }\n        ]\n      },\n      \"description\": \"Check PDFs to uncover errors and optimize content. Validate PDF\u002FA, PDF\u002FX, & PDF\u002FUA conformance, gain insights, and safeguard PDF performance with powerful API tools.\",\n      \"keywords\": \"PDF Info, Query PDF, Validate\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Check & Validate PDF\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fcheck-validate-pdf\u002F\"\n        }\n      ]\n    }\n  ]\n}","https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fcheck-validate-pdf\u002F",[1340],{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},[1342,1343,1347,1351,1355],{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":1344,"name":1345,"slug":1345,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1346},"65ae9a81656af204db4b0f4b","check-validate-pdf","https:\u002F\u002Fcms.pdfrest.com\u002Ftag\u002Fcheck-validate-pdf\u002F",{"id":1348,"name":1349,"slug":1350,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0ef7","#PDF Info","hash-pdf-info",{"id":1352,"name":1353,"slug":1354,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0ef6","#Query PDF","hash-query-pdf",{"id":1356,"name":1357,"slug":1358,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"66461892533c9f26b94377d5","#Validate","hash-validate",{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},"https:\u002F\u002Fcms.pdfrest.com\u002Fcheck\u002F","\n\n\n\n\nEnsure PDF Quality and Compliance with pdfRest Validation Tools\n\n\n\npdfRest empowers you to examine and validate PDF documents, exposing issues that can affect compatibility throughout document workflows. Early detection of potential problems helps teams route documents appropriately before they reach a downstream system or reviewer.\n\n\n\n\nProactive PDF Quality Control\n\n\n\nBy checking PDFs early, you can catch issues and make more informed processing decisions across a range of workflows. With ","Check & Validate PDF Quality, Conditions, & Compliance, PDF\u002FA, PDF\u002FX, PDF\u002FUA | pdfRest","Check PDFs to uncover errors and optimize content. Validate PDF\u002FA, PDF\u002FX, & PDF\u002FUA conformance, gain insights, and safeguard PDF performance with powerful API tools.",{"id":1366,"uuid":1367,"title":1368,"slug":1369,"html":1370,"comment_id":1371,"feature_image":48,"featured":284,"visibility":1257,"created_at":1372,"updated_at":1373,"published_at":1374,"custom_excerpt":48,"codeinjection_head":1375,"codeinjection_foot":48,"custom_template":48,"canonical_url":1376,"authors":1377,"tags":1379,"primary_author":1445,"primary_tag":1446,"url":1447,"excerpt":1448,"reading_time":5,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":1449,"meta_description":1450,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65ae9a86656af204db4b12dc","9594629c-408a-4690-a2f2-8b37e8ed4ee3","Converting to PDF","converting-to-pdf-hub","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Convert Many File Formats to PDF with pdfRest\u003C\u002Fh2>\n\n\u003Cp>pdfRest empowers you to convert a wide range of file formats into universally compatible PDF documents. Whether you're working with Microsoft Office documents, images, emails, HTML webpages, structured content, or other common file types, pdfRest streamlines conversion for efficient sharing and consistent rendering across platforms.\u003C\u002Fp>\n\n\u003Ch2>Supported Conversion Formats\u003C\u002Fh2>\n\n\u003Cp>pdfRest's robust \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fconvert-to-pdf\u002F\">Convert to PDF API Tool\u003C\u002Fa> offers comprehensive support for a wide range of file types:\u003C\u002Fp>\n\n\u003Cul>\n  \u003Cli>\u003Cstrong>Microsoft Office:\u003C\u002Fstrong> Word (DOCX), Excel (XLSX), PowerPoint (PPTX)\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Images:\u003C\u002Fstrong> JPG, PNG, BMP, TIFF\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Email:\u003C\u002Fstrong> EML\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Web Content:\u003C\u002Fstrong> HTML, URL\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Structured Content:\u003C\u002Fstrong> Markdown, plain text, JSON, XML, CSV\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Vector Graphics:\u003C\u002Fstrong> PostScript (PS), Encapsulated PostScript (EPS)\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Electronic Invoices:\u003C\u002Fstrong> ZUGFeRD and Factur-X hybrid PDF\u002FA-3 invoices\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Ch2>Create Hybrid Electronic Invoices\u003C\u002Fh2>\n\n\u003Cp>The \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fcreate-zugferd-pdf\u002F\">Create ZUGFeRD PDF API Tool\u003C\u002Fa> combines canonical invoice XML with a visual invoice PDF to produce a ZUGFeRD or Factur-X hybrid PDF\u002FA-3 invoice. This lets billing, procurement, and accounts-payable workflows deliver one invoice that can be read as a PDF and processed from its embedded structured data.\u003C\u002Fp>\n\n\u003Cp>When the visual PDF agrees with the invoice XML, pdfRest preserves it. Applications can also enable a fallback replacement PDF when a match cannot be confirmed, while retaining control of the PDF presentation used for that replacement.\u003C\u002Fp>\n\n\u003Ch2>Customized PDF Conversion Settings\u003C\u002Fh2>\n\n\u003Cp>Enhance your conversion process with pdfRest's flexible configuration options. Tailor settings to optimize PDF output and align each result with the needs of your application or document workflow.\u003C\u002Fp>\n\n\u003Cp>Explore the Convert to PDF API Tool and its related conversion capabilities to standardize source documents, structured content, and electronic invoices through a consistent API workflow.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","651dbe3d2d4014c9499b2106","2023-10-04T19:34:21.000+00:00","2026-09-18T20:05:08.000+00:00","2023-10-04T19:35:20.000+00:00","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"CollectionPage\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fconverting-to-pdf\u002F#collection\",\n      \"name\": \"Converting to PDF\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fconverting-to-pdf\u002F\",\n      \"isPartOf\": {\n        \"@type\": \"WebSite\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"mainEntity\": {\n        \"@type\": \"ItemList\",\n        \"itemListElement\": [\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 1,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fconvert-email-to-pdf-for-legal-and-compliance-archives\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 2,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fextract-structured-pdf-data-for-optimized-llm-training-with-markdown\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 3,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fdiscover-how-pdfrest-outperforms-free-open-source-pdf-tools\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 4,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Faccess-pdf-processing-power-with-ai-magic\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 5,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fconvert-pdf-to-text-to-unlock-trapped-data\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 6,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fexpedite-litigation-workflows-with-pdf-and-word-conversions\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 7,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fconvert-pdf-files-to-editable-microsoft-office-documents\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 8,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fconvert-html-newsletter-to-pdf-to-preserve-content\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 9,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fconvert-documents-into-encrypted-pdfs-for-archiving\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 10,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Frender-pdf-pages-to-graphic-file-formats-with-accurate-color-preservation\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 11,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Foptimize-pdf-documents-for-long-term-preservation\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 12,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Foptimize-word-excel-and-powerpoint-files-for-long-term-preservation\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 13,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Foptimize-pdfs-for-email-attachment\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 14,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fmerge-multiple-types-of-files-together\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 15,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-automate-pdf-to-markdown-conversions-for-content-repurposing-and-llm-training\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 16,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-bmp-to-pdf-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 17,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-bmp-to-pdf-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 18,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-bmp-to-pdf-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 19,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-bmp-to-pdf-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 20,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-bmp-to-pdf-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 21,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-csv-to-pdf-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 22,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-csv-to-pdf-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 23,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-csv-to-pdf-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 24,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-csv-to-pdf-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 25,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-csv-to-pdf-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 26,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-csv-to-pdf-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 27,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-html-to-pdf-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 28,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-html-to-pdf-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 29,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-html-to-pdf-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 30,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-html-to-pdf-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 31,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-html-to-pdf-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 32,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-html-to-pdf-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 33,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-jpg-to-pdf-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 34,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-jpg-to-pdf-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 35,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-jpg-to-pdf-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 36,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-jpg-to-pdf-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 37,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-jpg-to-pdf-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 38,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-jpg-to-pdf-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 39,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-json-to-pdf-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 40,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-json-to-pdf-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 41,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-json-to-pdf-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 42,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-json-to-pdf-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 43,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-json-to-pdf-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 44,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-json-to-pdf-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 45,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-markdown-to-pdf-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 46,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-markdown-to-pdf-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 47,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-markdown-to-pdf-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 48,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-markdown-to-pdf-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 49,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-markdown-to-pdf-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 50,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-markdown-to-pdf-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 51,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-excel-to-pdf-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 52,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-excel-to-pdf-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 53,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-excel-to-pdf-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 54,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-excel-to-pdf-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 55,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-excel-to-pdf-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 56,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-excel-to-pdf-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 57,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-powerpoint-to-pdf-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 58,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-powerpoint-to-pdf-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 59,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-powerpoint-to-pdf-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 60,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-powerpoint-to-pdf-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 61,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-powerpoint-to-pdf-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 62,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-powerpoint-to-pdf-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 63,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-word-to-pdf-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 64,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-word-to-pdf-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 65,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-word-to-pdf-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 66,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-word-to-pdf-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 67,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-word-to-pdf-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 68,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-word-to-pdf-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 69,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-forms-from-xfa-to-acroforms-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 70,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-forms-from-xfa-to-acroforms-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 71,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-forms-from-xfa-to-acroforms-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 72,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-forms-from-xfa-to-acroforms-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 73,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-forms-from-xfa-to-acroforms-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 74,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-forms-from-xfa-to-acroforms-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 75,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-markdown-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 76,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-markdown-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 77,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-markdown-with-java-code\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 78,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-markdown-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 79,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-markdown-with-php-code\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 80,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-markdown-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 81,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-png-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 82,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-png-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 83,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-png-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 84,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-png-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 85,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-png-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 86,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-tiff-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 87,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-tiff-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 88,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-tiff-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 89,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-tiff-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 90,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-tiff-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 91,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-tiff-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 92,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-plain-text-to-pdf-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 93,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-plain-text-to-pdf-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 94,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-plain-text-to-pdf-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 95,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-plain-text-to-pdf-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 96,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-plain-text-to-pdf-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 97,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-plain-text-to-pdf-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 98,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-png-to-pdf-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 99,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-png-to-pdf-in-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 100,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-png-to-pdf-in-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 101,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-png-to-pdf-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 102,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-png-to-pdf-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 103,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-tiff-to-pdf-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 104,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-tiff-to-pdf-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 105,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-tiff-to-pdf-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 106,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-tiff-to-pdf-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 107,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-tiff-to-pdf-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 108,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-xml-to-pdf-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 109,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-xml-to-pdf-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 110,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-xml-to-pdf-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 111,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-xml-to-pdf-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 112,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-xml-to-pdf-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 113,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-xml-to-pdf-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 114,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-programmatically-convert-excel-to-pdf\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 115,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-programmatically-convert-html-to-pdf\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 116,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-programmatically-convert-pdf-to-excel-spreadsheets\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 117,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-programmatically-convert-pdf-to-markdown-for-ai-and-data-analysis-guide\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 118,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-programmatically-convert-pdf-to-powerpoint-presentations\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 119,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-programmatically-convert-pdf-to-word-documents\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 120,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-programmatically-convert-word-documents-to-pdf\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 121,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-programmatically-generate-pdf-invoice-files\u002F\"\n          }\n        ]\n      },\n      \"description\": \"Convert Word, Excel, PowerPoint, images, HTML, and more to PDF for seamless sharing and compatibility. Customize output and automate workflows.\",\n      \"keywords\": \"CSV, Conversion, Convert, Convert to PDF, Email, HTML, JSON, Markdown, Newsletter, Plain Text, URL, XML\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Converting to PDF\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fconverting-to-pdf\u002F\"\n        }\n      ]\n    }\n  ]\n}","https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fconverting-to-pdf\u002F",[1378],{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},[1380,1381,1385,1389,1393,1397,1401,1405,1409,1413,1417,1421,1425,1429,1433,1437,1441],{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":1382,"name":1383,"slug":1383,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1384},"65ae9a81656af204db4b0f45","converting-to-pdf","https:\u002F\u002Fcms.pdfrest.com\u002Ftag\u002Fconverting-to-pdf\u002F",{"id":1386,"name":1387,"slug":1388,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":1283,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e14","#Conversion","hash-conversion",{"id":1390,"name":1391,"slug":1392,"description":1283,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e0e","#Convert","hash-convert",{"id":1394,"name":1395,"slug":1396,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e1c","#Convert to PDF","hash-convert-to-pdf",{"id":1398,"name":1399,"slug":1400,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e17","#Email","hash-email",{"id":1402,"name":1403,"slug":1404,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e21","#HTML","hash-html",{"id":1406,"name":1407,"slug":1408,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e95","#Newsletter","hash-newsletter",{"id":1410,"name":1411,"slug":1412,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e96","#URL","hash-url",{"id":1414,"name":1415,"slug":1416,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"6a9202f2533c9f26b943ac56","#Markdown","hash-markdown",{"id":1418,"name":1419,"slug":1420,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"6a999117d1b70dd2e2978a84","#CSV","hash-csv",{"id":1422,"name":1423,"slug":1424,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"6a999118d1b70dd2e2978a86","#JSON","hash-json",{"id":1426,"name":1427,"slug":1428,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"6a999118d1b70dd2e2978a88","#XML","hash-xml",{"id":1430,"name":1431,"slug":1432,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"6a999118d1b70dd2e2978a8a","#Plain Text","hash-plain-text",{"id":1434,"name":1435,"slug":1436,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"6aa957d2d1b70dd2e2978ede","#ZUGFeRD","hash-zugferd",{"id":1438,"name":1439,"slug":1440,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"6aa957d2d1b70dd2e2978edf","#Factur-X","hash-factur-x",{"id":1442,"name":1443,"slug":1444,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"6aad98f6d1b70dd2e2978fc9","#Create ZUGFeRD PDF","hash-create-zugferd-pdf",{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},"https:\u002F\u002Fcms.pdfrest.com\u002Fconverting-to-pdf-hub\u002F","\n\n\n\n\nConvert Many File Formats to PDF with pdfRest\n\n\n\npdfRest empowers you to convert a wide range of file formats into universally compatible PDF documents. Whether you're working with Microsoft Office documents, images, emails, HTML webpages, structured content, or other common file types, pdfRest streamlines conversion for efficient sharing and consistent rendering across platforms.\n\n\n\n\nSupported Conversion Formats\n\n\n\npdfRest's robust Convert to PDF API Tool offers comprehensive support for a","API for Converting to PDF from Office, Images, HTML | pdfRest","Convert Word, Excel, PowerPoint, images, HTML, and more to PDF for seamless sharing and compatibility. Customize output and automate workflows.",{"id":1452,"uuid":1453,"title":1454,"slug":1455,"html":1456,"comment_id":1457,"feature_image":48,"featured":284,"visibility":1257,"created_at":1458,"updated_at":1459,"published_at":1460,"custom_excerpt":48,"codeinjection_head":1461,"codeinjection_foot":48,"custom_template":48,"canonical_url":1462,"authors":1463,"tags":1465,"primary_author":1503,"primary_tag":1504,"url":1505,"excerpt":1506,"reading_time":5,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":1507,"meta_description":1508,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65ae9a86656af204db4b12e2","427335e2-522e-47eb-a7ba-ccbe39653e98","Extract from PDF","extract-from-pdf-hub","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Unlock the Power of PDF Data with pdfRest Extraction Tools\u003C\u002Fh2>\n\u003Cp>pdfRest empowers you to extract a wealth of information from your PDF documents. Go beyond static files and unlock the true potential of your data. Our extraction tools transform your PDFs into a dynamic source of data, enriching your data landscape and enabling powerful analysis.\u003C\u002Fp>\n\n\u003Ch2>Extract, Export, and Leverage PDF Content Seamlessly\u003C\u002Fh2>\n\u003Cp>pdfRest simplifies the process of extracting valuable data from your PDFs, making it readily available for further processing and analysis. Easily integrate extracted data with various applications, including:\u003C\u002Fp>\n\n\u003Cul>\n  \u003Cli>\u003Cstrong>AI Tools:\u003C\u002Fstrong> Leverage data extracted from PDFs to power AI-driven tasks, such as sentiment analysis or document classification.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Content Management Systems (CMS):\u003C\u002Fstrong> Populate your CMS with extracted data, ensuring consistency and streamlined content management.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Data Processing & Analysis Tools:\u003C\u002Fstrong> Integrate extracted data with your existing data analysis tools for deeper insights and informed decision-making.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>And More!\u003C\u002Fstrong> The possibilities are endless. Leverage extracted PDF data across various applications to enhance your workflows.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Ch2>Powerful PDF Extraction Tools\u003C\u002Fh2>\n\n\u003Cp>Unlock the full potential of your PDF content and data with pdfRest's API Tools:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>\u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fpdf-to-markdown\u002F'>PDF to Markdown\u003C\u002Fa>\u003C\u002Fstrong>: Extract PDF content in structured Markdown format, preserving headers, lists, tables, and bold styling.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Focr-pdf\u002F'>OCR PDF\u003C\u002Fa>\u003C\u002Fstrong>: Convert scanned PDFs and PDF images into searchable and extractable text.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fextract-text\u002F'>Extract Text\u003C\u002Fa>\u003C\u002Fstrong>: Extract all text content from PDFs, including formatting and positional information.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>\u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fextract-images\u002F'>Extract Images\u003C\u002Fa>\u003C\u002Fstrong>: Extract all images from PDFs and save them as high-quality image files.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fquery-pdf\u002F'>Query PDF\u003C\u002Fa>\u003C\u002Fstrong>: Extract conditional information and metadata from your PDFs.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fsplit-pdf\u002F'>Split PDF\u003C\u002Fa>\u003C\u002Fstrong>: Extract individual PDF pages or page ranges into separate documents.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Start extracting valuable data from your PDFs today! Explore pdfRest's powerful tools and unlock a world of possibilities.\u003C\u002Fp>\n\n\u003C!--kg-card-end: html-->\n","651f101b2d4014c9499b218f","2023-10-05T19:35:55.000+00:00","2026-09-04T17:53:47.000+00:00","2023-10-05T19:36:24.000+00:00","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"CollectionPage\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fextract-from-pdf\u002F#collection\",\n      \"name\": \"Extract from PDF\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fextract-from-pdf\u002F\",\n      \"isPartOf\": {\n        \"@type\": \"WebSite\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"mainEntity\": {\n        \"@type\": \"ItemList\",\n        \"itemListElement\": [\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 1,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fpersonalize-pdf-templates-with-dynamic-content\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 2,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fgenerate-dynamic-pdf-reports-with-structured-tables\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 3,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fcreate-tagged-pdfs-from-scratch-with-application-data\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 4,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fsecure-proprietary-pdf-reports-from-ai-scraping-and-data-mining\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 5,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fautomate-eu-cdsm-article-4-compliance-for-digital-pdf-publications\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 6,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fextract-structured-pdf-data-for-optimized-llm-training-with-markdown\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 7,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Ftransform-pdf-files-to-markdown-for-dynamic-web-content-seo\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 8,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fdiscover-how-pdfrest-outperforms-free-open-source-pdf-tools\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 9,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fprotect-data-privacy-in-financial-services-with-pdf-redaction-solution\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 10,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fensure-patient-privacy-in-healthcare-research-with-pdf-redaction-solution\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 11,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fstreamline-digital-marketing-with-effortless-pdf-image-extraction\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 12,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fparse-pdf-files-to-streamline-data-extraction\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 13,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fadd-page-numbers-to-pdf-documents\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 14,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fautomate-pdf-text-insertion-for-variable-data-printing\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 15,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fextract-text-from-pdf-using-ocr\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 16,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fcreate-searchable-pdf-files-with-ocr\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 17,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fconvert-pdf-to-text-to-unlock-trapped-data\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 18,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fdiscover-sentiment-insights-from-pdf-documents-with-pdfrest-and-chatgpt\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 19,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fgenerating-summaries-of-pdf-documents-using-chatgpt\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 20,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Ftranslate-pdf-text-to-new-language-with-chatgpt\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 21,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fintegrate-pdfrest-with-chatgpt-to-generate-pdf-info-summary\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 22,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fextract-pages-from-a-pdf-to-isolate-key-data\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 23,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-pdf-files-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 24,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-pdf-files-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 25,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-pdf-files-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 26,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-a-pdf-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 27,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-pdf-files-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 28,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-automate-pdf-to-markdown-conversions-for-content-repurposing-and-llm-training\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 29,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-markdown-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 30,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-markdown-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 31,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-markdown-with-java-code\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 32,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-markdown-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 33,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-markdown-with-php-code\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 34,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-markdown-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 35,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-export-pdf-form-data-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 36,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-export-pdf-form-data-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 37,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-images-from-pdf-files-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 38,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-images-from-pdf-files-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 39,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-images-from-pdf-files-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 40,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-images-from-pdf-files-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 41,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-images-from-pdf-files-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 42,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-images-from-pdf-files-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 43,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-pages-from-pdf-files-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 44,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-pages-from-pdf-files-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 45,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-pages-from-pdf-files-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 46,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-pages-from-pdf-files-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 47,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-pages-from-pdf-files-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 48,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-pages-from-pdf-files-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 49,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-pdf-text-with-dot-net-c-sharp\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 50,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-pdf-text-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 51,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-pdf-text-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 52,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-pdf-text-with-javascript\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 53,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-pdf-text-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 54,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-pdf-text-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 55,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-import-data-to-pdf-forms-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 56,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-import-data-to-pdf-forms-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 57,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-programmatically-convert-pdf-to-markdown-for-ai-and-data-analysis-guide\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 58,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-programmatically-extract-text-from-pdf\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 59,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-programmatically-fill-pdf-forms\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 60,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-programmatically-generate-pdf-invoice-files\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 61,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-programmatically-ocr-pdfs-to-create-searchable-documents\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 62,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-redact-pdf-text-in-net-with-c-code\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 63,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-redact-pdf-text-with-curl-code\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 64,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-redact-pdf-text-with-java-code\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 65,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-redact-pdf-text-with-javascript-code-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 66,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-redact-pdf-text-with-php-code\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 67,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-redact-pdf-text-with-python-code\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 68,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-use-ocr-to-extract-text-from-pdf-images-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 69,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-use-ocr-to-extract-text-from-pdf-images-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 70,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-use-ocr-to-extract-text-from-pdf-images-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 71,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-use-ocr-to-extract-text-from-pdf-images-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 72,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-use-ocr-to-extract-text-from-pdf-images-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 73,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-use-ocr-to-extract-text-from-pdf-images-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 74,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-use-ocr-to-make-pdf-image-text-searchable-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 75,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-use-ocr-to-make-pdf-image-text-searchable-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 76,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-use-ocr-to-make-pdf-image-text-searchable-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 77,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-use-ocr-to-make-pdf-image-text-searchable-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 78,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-use-ocr-to-make-pdf-image-text-searchable-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 79,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-use-ocr-to-make-pdf-image-text-searchable-with-python\u002F\"\n          }\n        ]\n      },\n      \"description\": \"Extract text, OCR text, data, and pages from PDF for AI, analysis and more. Automate workflows with powerful API tools to unlock PDF info and integrate services.\",\n      \"keywords\": \"Data, Extract, Extract Images, Extract Text, OCR, OCR PDF, PDF to Markdown, Text\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Extract from PDF\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fextract-from-pdf\u002F\"\n        }\n      ]\n    }\n  ]\n}","https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fextract-from-pdf\u002F",[1464],{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},[1466,1467,1471,1475,1479,1483,1487,1491,1495,1499],{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":1468,"name":1469,"slug":1469,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1470},"65ae9a81656af204db4b0f4c","extract-from-pdf","https:\u002F\u002Fcms.pdfrest.com\u002Ftag\u002Fextract-from-pdf\u002F",{"id":1472,"name":1473,"slug":1474,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e31","#Data","hash-data",{"id":1476,"name":1477,"slug":1478,"description":1283,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":1283,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e29","#Extract Text","hash-extract-text",{"id":1480,"name":1481,"slug":1482,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0ef8","#Text","hash-text",{"id":1484,"name":1485,"slug":1486,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0f60","#Extract","hash-extract",{"id":1488,"name":1489,"slug":1490,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"66a1389f533c9f26b9437ef3","#OCR PDF","hash-ocr-pdf",{"id":1492,"name":1493,"slug":1494,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"66a2bcdf533c9f26b9437f77","#OCR","hash-ocr",{"id":1496,"name":1497,"slug":1498,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"673e471b533c9f26b9438f16","#Extract Images","hash-extract-images",{"id":1500,"name":1501,"slug":1502,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"6870353c533c9f26b9439c92","#PDF to Markdown","hash-pdf-to-markdown",{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},"https:\u002F\u002Fcms.pdfrest.com\u002Fextract-from-pdf-hub\u002F","\n\n\n\n\nUnlock the Power of PDF Data with pdfRest Extraction Tools\n\n\npdfRest empowers you to extract a wealth of information from your PDF documents. Go beyond static files and unlock the true potential of your data. Our extraction tools transform your PDFs into a dynamic source of data, enriching your data landscape and enabling powerful analysis.\n\n\n\n\nExtract, Export, and Leverage PDF Content Seamlessly\n\n\npdfRest simplifies the process of extracting valuable data from your PDFs, making it readily ","Export & Extract from PDF - Data, Metadata, Pages, OCR  | pdfRest","Extract text, OCR text, data, and pages from PDF for AI, analysis and more. Automate workflows with powerful API tools to unlock PDF info and integrate services.",{"id":1510,"uuid":1511,"title":1512,"slug":1513,"html":1514,"comment_id":1515,"feature_image":48,"featured":284,"visibility":1257,"created_at":1516,"updated_at":1517,"published_at":1518,"custom_excerpt":48,"codeinjection_head":1519,"codeinjection_foot":48,"custom_template":48,"canonical_url":1520,"authors":1521,"tags":1523,"primary_author":1569,"primary_tag":1570,"url":1571,"excerpt":1572,"reading_time":5,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":1573,"meta_description":1574,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65ae9a86656af204db4b12de","90292082-ab82-4e26-a48f-fa051040c845","Graphic Image Formats","graphic-image-formats-hub","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Convert Between PDF Files and Graphic Image Formats\u003C\u002Fh2>\n\n\u003Cp>pdfRest's versatile API tools allow you to convert between PDFs and a variety of common image file types, including BMP, JPG, PNG, GIF, and TIFF. Convert each page of a PDF to a separate image file, or convert an image file to a PDF.\u003C\u002Fp>\n\n\u003Ch2>Image Conversion Benefits with pdfRest\u003C\u002Fh2>\n\n\u003Cul>\n  \u003Cli>\u003Cstrong>Flexible Conversion Options:\u003C\u002Fstrong> Convert PDFs to images or vice versa to suit your specific requirements.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>High-Quality Output:\u003C\u002Fstrong> Preserve the integrity of your visual content with accurate and high-quality conversions powered by Adobe technology.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Simplified Workflows:\u003C\u002Fstrong> Streamline your document processing tasks with a user-friendly API.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Versatility:\u003C\u002Fstrong> Use converted images or PDFs in various applications, from presentations and print to web design and document archiving.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Ch2>Key PDF & Image Conversion Features\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Cstrong>\u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fconvert-to-pdf\u002F'>Convert to PDF\u003C\u002Fa>:\u003C\u002Fstrong> Transform images from BMP, JPG, PNG, EPS, and TIFF into high-quality PDF documents for easy sharing, print, and archiving.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fpdf-to-images\u002F'>PDF to Images\u003C\u002Fa>:\u003C\u002Fstrong> Convert PDFs into various image formats, including BMP, JPG, PNG, GIF, and TIFF, preserving the integrity of your visual content.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Cp>Discover the power of pdfRest's PDF to Image and Image to PDF APIs and transform your documents effortlessly!\u003C\u002Fp>\n\n\u003C!--kg-card-end: html-->\n","651f0efa2d4014c9499b214d","2023-10-05T19:31:06.000+00:00","2026-09-04T17:53:50.000+00:00","2023-10-05T19:31:49.000+00:00","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"CollectionPage\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fgraphic-image-formats\u002F#collection\",\n      \"name\": \"Graphic Image Formats\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fgraphic-image-formats\u002F\",\n      \"isPartOf\": {\n        \"@type\": \"WebSite\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"mainEntity\": {\n        \"@type\": \"ItemList\",\n        \"itemListElement\": [\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 1,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fdiscover-how-pdfrest-outperforms-free-open-source-pdf-tools\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 2,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Faccess-pdf-processing-power-with-ai-magic\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 3,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fcreate-pdf-thumbnail-images\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 4,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Frender-pdf-pages-to-graphic-file-formats-with-accurate-color-preservation\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 5,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fmerge-multiple-types-of-files-together\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 6,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Foptimize-pdfs-for-fast-web-viewing\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 7,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-bmp-to-pdf-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 8,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-bmp-to-pdf-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 9,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-jpg-to-pdf-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 10,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-jpg-to-pdf-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 11,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-jpg-to-pdf-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 12,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-jpg-to-pdf-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 13,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-jpg-to-pdf-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 14,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-jpg-to-pdf-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 15,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-bmp-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 16,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-bmp-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 17,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-bmp-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 18,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-bmp-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 19,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-bmp-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 20,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-bmp-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 21,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-jpg-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 22,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-jpg-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 23,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-jpg-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 24,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-jpg-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 25,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-jpg-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 26,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-jpg-image-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 27,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-png-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 28,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-png-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 29,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-png-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 30,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-png-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 31,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-png-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 32,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-png-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 33,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-tiff-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 34,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-tiff-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 35,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-tiff-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 36,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-tiff-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 37,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-tiff-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 38,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-tiff-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 39,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-tiff-to-pdf-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 40,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-tiff-to-pdf-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 41,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-images-from-pdf-files-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 42,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-images-from-pdf-files-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 43,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-images-from-pdf-files-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 44,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-images-from-pdf-files-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 45,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-images-from-pdf-files-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 46,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-images-from-pdf-files-with-python\u002F\"\n          }\n        ]\n      },\n      \"description\": \"Convert between PDF and common graphic image file formats, such as PNG, JPG, BMP, TIFF, EPS, and GIF. Transform your documents into images and vice versa.\",\n      \"keywords\": \"BMP, EPS, GIF, JPG, PDF Viewer, PDF to Images, PNG, Rendering, TIFF, Thumbnail\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Graphic Image Formats\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fgraphic-image-formats\u002F\"\n        }\n      ]\n    }\n  ]\n}","https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fgraphic-image-formats\u002F",[1522],{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},[1524,1525,1529,1533,1537,1541,1545,1549,1553,1557,1561,1565],{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":1526,"name":1527,"slug":1527,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1528},"65ae9a81656af204db4b0f48","graphic-image-formats","https:\u002F\u002Fcms.pdfrest.com\u002Ftag\u002Fgraphic-image-formats\u002F",{"id":1530,"name":1531,"slug":1532,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e23","#BMP","hash-bmp",{"id":1534,"name":1535,"slug":1536,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e2f","#GIF","hash-gif",{"id":1538,"name":1539,"slug":1540,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e30","#PDF to Images","hash-pdf-to-images",{"id":1542,"name":1543,"slug":1544,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e1f","#JPG","hash-jpg",{"id":1546,"name":1547,"slug":1548,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e22","#PNG","hash-png",{"id":1550,"name":1551,"slug":1552,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e2e","#Rendering","hash-rendering",{"id":1554,"name":1555,"slug":1556,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e20","#TIFF","hash-tiff",{"id":1558,"name":1559,"slug":1560,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e25","#PDF Viewer","hash-pdf-viewer",{"id":1562,"name":1563,"slug":1564,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0f64","#Thumbnail","hash-thumbnail",{"id":1566,"name":1567,"slug":1568,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e1e","#EPS","hash-eps",{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},"https:\u002F\u002Fcms.pdfrest.com\u002Fgraphic-image-formats-hub\u002F","\n\n\n\n\nConvert Between PDF Files and Graphic Image Formats\n\n\n\npdfRest's versatile API tools allow you to convert between PDFs and a variety of common image file types, including BMP, JPG, PNG, GIF, and TIFF. Convert each page of a PDF to a separate image file, or convert an image file to a PDF.\n\n\n\n\nImage Conversion Benefits with pdfRest\n\n\n\n * Flexible Conversion Options: Convert PDFs to images or vice versa to suit your specific requirements.\n * High-Quality Output: Preserve the integrity of your ","Convert Between PDF & Graphic Image Formats, PNG, JPG, BMP, TIFF | pdfRest","Convert between PDF and common graphic image file formats, such as PNG, JPG, BMP, TIFF, EPS, and GIF. Transform your documents into images and vice versa.",{"id":1576,"uuid":1577,"title":1578,"slug":1579,"html":1580,"comment_id":1581,"feature_image":48,"featured":284,"visibility":1257,"created_at":1582,"updated_at":1459,"published_at":1583,"custom_excerpt":48,"codeinjection_head":1584,"codeinjection_foot":48,"custom_template":48,"canonical_url":1585,"authors":1586,"tags":1588,"primary_author":1622,"primary_tag":1623,"url":1624,"excerpt":1625,"reading_time":5,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":1626,"meta_description":1627,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65ae9a86656af204db4b12e3","998145c8-4df5-4a5b-a440-6edd1ce078f3","Merge & Split PDF","merge-2","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Merge & Split PDF Files with Precision\u003C\u002Fh2>\n\n\u003Cp>pdfRest's powerful \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fmerge-pdfs\u002F'>Merge PDFs\u003C\u002Fa> and \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fsplit-pdf\u002F'>Split PDF\u003C\u002Fa> API tools enable you to merge, split, extract pages, delete pages, and restructure your PDF documents with ease. Gain granular control over your content and create customized versions of your files.\u003C\u002Fp>\n\n\n\u003Ch2>Key Merge & Split PDF Features\u003C\u002Fh2>\n\n\u003Cul>\n  \u003Cli>\u003Cstrong>Split PDF:\u003C\u002Fstrong> Split all pages of a PDF into separate documents, or choose custom pages or page ranges to split out.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Extract Pages:\u003C\u002Fstrong> Extract specific pages from a PDF document to create standalone files.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Merge PDFs:\u003C\u002Fstrong> Combine multiple PDFs into a single document, preserving the original content and formatting.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Reorder Pages:\u003C\u002Fstrong> Rearrange the order of pages within a PDF to suit your needs.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Remove Pages:\u003C\u002Fstrong> Delete unwanted pages from a PDF document.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Cp>Optimize your PDF workflows and enhance your document management capabilities with pdfRest's merging and splitting tools.\u003C\u002Fp>\n\n\u003C!--kg-card-end: html-->\n","651f10592d4014c9499b21a1","2023-10-05T19:36:57.000+00:00","2023-10-05T19:37:45.000+00:00","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"CollectionPage\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fmerge-split-pdf\u002F#collection\",\n      \"name\": \"Merge & Split PDF\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fmerge-split-pdf\u002F\",\n      \"isPartOf\": {\n        \"@type\": \"WebSite\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"mainEntity\": {\n        \"@type\": \"ItemList\",\n        \"itemListElement\": [\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 1,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fgenerate-dynamic-pdf-reports-with-structured-tables\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 2,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fdiscover-how-pdfrest-outperforms-free-open-source-pdf-tools\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 3,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fresize-pdf-pages-for-consistent-archiving\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 4,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fcrop-pdf-files-to-optimize-scanned-documents\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 5,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fadd-page-numbers-to-pdf-documents\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 6,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Faccess-pdf-processing-power-with-ai-magic\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 7,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fmerge-pdf-documents-for-streamlined-report-compilation\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 8,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fcreate-pdf-thumbnail-images\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 9,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Frender-pdf-pages-to-graphic-file-formats-with-accurate-color-preservation\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 10,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fmerge-multiple-types-of-files-together\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 11,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fextract-pages-from-a-pdf-to-isolate-key-data\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 12,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fdelete-pages-from-a-pdf-to-sanitize-documents\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 13,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-delete-pages-from-pdf-files-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 14,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-delete-pages-from-pdf-files-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 15,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-delete-pages-from-pdf-files-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 16,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-delete-pages-from-pdf-files-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 17,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-delete-pages-from-pdf-files-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 18,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-pages-from-pdf-files-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 19,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-pages-from-pdf-files-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 20,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-pages-from-pdf-files-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 21,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-pages-from-pdf-files-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 22,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-pages-from-pdf-files-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 23,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-pages-from-pdf-files-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 24,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-merge-different-file-formats-together-as-a-pdf-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 25,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-merge-different-file-formats-together-as-a-pdf-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 26,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-merge-pdfs-with-dot-net-c-sharp\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 27,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-merge-pdf-files-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 28,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-merge-pdf-files-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 29,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-merge-pdf-files-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 30,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-merge-pdfs-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 31,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-merge-pdf-documents-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 32,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-programmatically-merge-multiple-pdf-files-into-one\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 33,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-programmatically-split-pdf-into-multiple-files\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 34,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-resize-pdf-pages-with-c-code-in-net\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 35,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-resize-pdf-pages-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 36,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-resize-pdf-pages-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 37,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-resize-pdf-pages-with-javascript-code-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 38,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-resize-pdf-pages-with-php-code\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 39,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-resize-pdf-pages-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 40,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-split-pdf-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 41,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-split-pdf-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 42,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-split-pdf-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 43,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-split-pdf-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 44,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-split-pdf-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 45,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-split-pdf-with-python\u002F\"\n          }\n        ]\n      },\n      \"description\": \"Combine, separate, and rearrange PDF documents with granular page-level control using pdfRest API Tools.\",\n      \"keywords\": \"Combine, Merge PDFs, Pages, Remove, Report, Scanned Docs, Split PDF\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Merge & Split PDF\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fmerge-split-pdf\u002F\"\n        }\n      ]\n    }\n  ]\n}","https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fmerge-split-pdf\u002F",[1587],{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},[1589,1590,1594,1598,1602,1606,1610,1614,1618],{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":1591,"name":1592,"slug":1592,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1593},"65ae9a81656af204db4b0f4d","merge-split-pdf","https:\u002F\u002Fcms.pdfrest.com\u002Ftag\u002Fmerge-split-pdf\u002F",{"id":1595,"name":1596,"slug":1597,"description":1283,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":1283,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e1a","#Merge PDFs","hash-merge-pdfs",{"id":1599,"name":1600,"slug":1601,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e27","#Remove","hash-remove",{"id":1603,"name":1604,"slug":1605,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e28","#Split PDF","hash-split-pdf",{"id":1607,"name":1608,"slug":1609,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e2a","#Pages","hash-pages",{"id":1611,"name":1612,"slug":1613,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e1b","#Scanned Docs","hash-scanned-docs",{"id":1615,"name":1616,"slug":1617,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0f93","#Report","hash-report",{"id":1619,"name":1620,"slug":1621,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0f94","#Combine","hash-combine",{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},"https:\u002F\u002Fcms.pdfrest.com\u002Fmerge-2\u002F","\n\n\n\n\nMerge & Split PDF Files with Precision\n\n\n\npdfRest's powerful Merge PDFs and Split PDF API tools enable you to merge, split, extract pages, delete pages, and restructure your PDF documents with ease. Gain granular control over your content and create customized versions of your files.\n\n\n\n\n\nKey Merge & Split PDF Features\n\n\n\n * Split PDF: Split all pages of a PDF into separate documents, or choose custom pages or page ranges to split out.\n * Extract Pages: Extract specific pages from a PDF doc","Merge & Split PDF Files - Export, Delete, & Reorder Pages | pdfRest","Combine, separate, and rearrange PDF documents with granular page-level control using pdfRest API Tools.",{"id":1629,"uuid":1630,"title":1631,"slug":1632,"html":1633,"comment_id":1634,"feature_image":48,"featured":284,"visibility":1257,"created_at":1635,"updated_at":1636,"published_at":1637,"custom_excerpt":48,"codeinjection_head":1638,"codeinjection_foot":48,"custom_template":48,"canonical_url":1639,"authors":1640,"tags":1642,"primary_author":1676,"primary_tag":1677,"url":1678,"excerpt":1679,"reading_time":5,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":1680,"meta_description":1681,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65ae9a86656af204db4b12df","d6598ee1-9cf3-42c9-a7b7-7e4c1a9d276e","Microsoft Office Files","microsoft-office-files-hub","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Convert Between PDF and Microsoft Office with pdfRest\u003C\u002Fh2>\n\n\u003Cp>pdfRest offers a comprehensive suite of tools to effortlessly convert both directions between PDF and Microsoft Office formats, including Word, Excel, and PowerPoint. Our API is designed to simplify your document conversion workflows and enhance your productivity.\u003C\u002Fp>\n\n\u003Ch2>Convert PDF to Word, Excel, & PowerPoint with Ease\u003C\u002Fh2>\n\n\u003Cp>PDF to Office Pro Tools provide a user-friendly REST API for converting PDF documents into Microsoft Office formats. With just a few simple steps, you can transform your PDFs into editable Word, Excel, or PowerPoint files. Also available as a \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fproducts\u002Fpdf-forms-pro-self-hosted-api\u002F'>Self-Hosted API\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Ch2>Key Microsoft Office Conversion Features\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Cstrong>\u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fpdf-to-word\u002F'>PDF to Word\u003C\u002Fa>:\u003C\u002Fstrong> Convert PDF documents into editable Word documents, preserving formatting and content.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fpdf-to-powerpoint\u002F'>PDF to PowerPoint\u003C\u002Fa>:\u003C\u002Fstrong> Transform PDFs into visually appealing PowerPoint presentations, including slides, images, and text.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fpdf-to-excel\u002F'>PDF to Excel\u003C\u002Fa>:\u003C\u002Fstrong> Convert PDFs containing tables or data into editable Excel spreadsheets.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fconvert-to-pdf\u002F'>Convert to PDF\u003C\u002Fa>:\u003C\u002Fstrong> Easily convert Word, Excel, and PowerPoint documents into high-quality PDFs for sharing and archiving.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Cp>Discover the power of pdfRest and streamline your document conversion workflows today!\u003C\u002Fp>\n\n\u003C!--kg-card-end: html-->\n","651f0f2f2d4014c9499b2162","2023-10-05T19:31:59.000+00:00","2026-09-04T17:53:49.000+00:00","2023-10-05T19:33:05.000+00:00","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"CollectionPage\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fmicrosoft-office-files\u002F#collection\",\n      \"name\": \"Microsoft Office Files\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fmicrosoft-office-files\u002F\",\n      \"isPartOf\": {\n        \"@type\": \"WebSite\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"mainEntity\": {\n        \"@type\": \"ItemList\",\n        \"itemListElement\": [\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 1,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fdiscover-how-pdfrest-outperforms-free-open-source-pdf-tools\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 2,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Faccess-pdf-processing-power-with-ai-magic\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 3,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fexpedite-litigation-workflows-with-pdf-and-word-conversions\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 4,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fconvert-pdf-files-to-editable-microsoft-office-documents\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 5,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Foptimize-word-excel-and-powerpoint-files-for-long-term-preservation\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 6,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fmerge-multiple-types-of-files-together\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 7,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-excel-to-pdf-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 8,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-excel-to-pdf-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 9,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-excel-to-pdf-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 10,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-excel-to-pdf-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 11,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-excel-to-pdf-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 12,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-excel-to-pdf-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 13,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-powerpoint-to-pdf-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 14,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-powerpoint-to-pdf-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 15,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-powerpoint-to-pdf-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 16,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-powerpoint-to-pdf-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 17,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-powerpoint-to-pdf-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 18,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-powerpoint-to-pdf-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 19,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-word-to-pdf-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 20,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-word-to-pdf-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 21,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-word-to-pdf-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 22,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-word-to-pdf-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 23,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-excel-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 24,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-excel-with-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 25,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-excel-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 26,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-excel-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 27,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-excel-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 28,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-excel-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 29,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-powerpoint-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 30,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-powerpoint-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 31,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-powerpoint-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 32,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-powerpoint-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 33,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-powerpoint-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 34,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-powerpoint-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 35,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-word-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 36,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-word-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 37,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-word-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 38,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-word-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 39,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-word-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 40,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-word-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 41,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-programmatically-convert-excel-to-pdf\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 42,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-programmatically-convert-pdf-to-excel-spreadsheets\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 43,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-programmatically-convert-pdf-to-powerpoint-presentations\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 44,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-programmatically-convert-pdf-to-word-documents\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 45,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-programmatically-convert-word-documents-to-pdf\u002F\"\n          }\n        ]\n      },\n      \"description\": \"Convert PDF to \u002F from Word, Excel, PowerPoint with PDF to Office Pro and Convert to PDF API Tools from pdfRest.\",\n      \"keywords\": \"Excel, Microsoft Office, PDF to Excel, PDF to PowerPoint, PDF to Word, PowerPoint, Word\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Microsoft Office Files\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fmicrosoft-office-files\u002F\"\n        }\n      ]\n    }\n  ]\n}","https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fmicrosoft-office-files\u002F",[1641],{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},[1643,1644,1648,1652,1656,1660,1664,1668,1672],{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":1645,"name":1646,"slug":1646,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1647},"65ae9a81656af204db4b0f49","microsoft-office-files","https:\u002F\u002Fcms.pdfrest.com\u002Ftag\u002Fmicrosoft-office-files\u002F",{"id":1649,"name":1650,"slug":1651,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e11","#Excel","hash-excel",{"id":1653,"name":1654,"slug":1655,"description":1283,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":1283,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e0f","#Microsoft Office","hash-microsoft-office",{"id":1657,"name":1658,"slug":1659,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e12","#PowerPoint","hash-powerpoint",{"id":1661,"name":1662,"slug":1663,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e10","#Word","hash-word",{"id":1665,"name":1666,"slug":1667,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0f7a","#PDF to Word","hash-pdf-to-word",{"id":1669,"name":1670,"slug":1671,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0f7b","#PDF to Excel","hash-pdf-to-excel",{"id":1673,"name":1674,"slug":1675,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0f7c","#PDF to PowerPoint","hash-pdf-to-powerpoint",{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},"https:\u002F\u002Fcms.pdfrest.com\u002Fmicrosoft-office-files-hub\u002F","\n\n\n\n\nConvert Between PDF and Microsoft Office with pdfRest\n\n\n\npdfRest offers a comprehensive suite of tools to effortlessly convert both directions between PDF and Microsoft Office formats, including Word, Excel, and PowerPoint. Our API is designed to simplify your document conversion workflows and enhance your productivity.\n\n\n\n\nConvert PDF to Word, Excel, & PowerPoint with Ease\n\n\n\nPDF to Office Pro Tools provide a user-friendly REST API for converting PDF documents into Microsoft Office formats","PDF & Microsoft Office Conversion - Word, Excel, PowerPoint | pdfRest","Convert PDF to \u002F from Word, Excel, PowerPoint with PDF to Office Pro and Convert to PDF API Tools from pdfRest.",{"id":1683,"uuid":1684,"title":1685,"slug":1686,"html":1687,"comment_id":1688,"feature_image":48,"featured":284,"visibility":1257,"created_at":1689,"updated_at":1335,"published_at":1690,"custom_excerpt":48,"codeinjection_head":1691,"codeinjection_foot":48,"custom_template":48,"canonical_url":1692,"authors":1693,"tags":1695,"primary_author":1709,"primary_tag":1710,"url":1711,"excerpt":1712,"reading_time":295,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":1713,"meta_description":1714,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65ae9a86656af204db4b12e0","4c06aa7f-a1d9-4dcb-9dca-ab38f663212b","PDF Archival Format (PDF\u002FA)","pdf-archival-format-pdfa","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Convert PDF Files to the Archival PDF\u002FA Format\u003C\u002Fh2>\n\n\u003Cp>pdfRest's \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fconvert-to-pdfa\u002F\">Convert to PDF\u002FA\u003C\u002Fa> API empowers you to convert standard PDF files to the PDF\u002FA archival format, ensuring their long-term preservation and compatibility.\u003C\u002Fp>\n\n\u003Ch2>Validate PDF\u002FA Conformance\u003C\u002Fh2>\n\n\u003Cp>Leverage pdfRest's \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fquery-pdf\u002F\">Query PDF\u003C\u002Fa> API to assess the PDF\u002FA conformance of your documents. By identifying non-conformant PDFs, you can take proactive steps to convert them to the appropriate PDF\u002FA standard.\u003C\u002Fp>\n\n\u003Ch2>Key PDF\u002FA Benefits\u003C\u002Fh2>\n\n\u003Cul>\n\u003Cli>\u003Cstrong>Identify non-compliant PDFs:\u003C\u002Fstrong> Pinpoint documents that require conversion to PDF\u002FA.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Ensure long-term preservation:\u003C\u002Fstrong> Protect your valuable data from obsolescence and data loss.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Maintain compatibility:\u003C\u002Fstrong> Ensure your PDFs can be viewed and processed reliably in the future.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Meet industry standards:\u003C\u002Fstrong> Comply with regulations and requirements that mandate PDF\u002FA usage.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Ch2>Supported PDF\u002FA Standards\u003C\u002Fh2>\n\n\u003Cp>pdfRest supports a wide range of PDF\u002FA standards, including:\u003C\u002Fp>\n\n\u003Cul>\n\u003Cli>\u003Cstrong>PDF\u002FA-1b:\u003C\u002Fstrong> Ensures basic visual integrity over the long term. It's the most widely accepted version for simple archival needs, guaranteeing that documents will look the same when accessed in the future.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>PDF\u002FA-2b:\u003C\u002Fstrong> Supports more modern features like JPEG2000 compression and transparency, making it suitable for documents that require better image quality and more complex visual elements while maintaining compliance with archival standards.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>PDF\u002FA-2u:\u003C\u002Fstrong> Includes Unicode support for enhanced text searchability and accessibility, making it ideal for documents that need to be both visually consistent and easily searchable across different languages and character sets.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>PDF\u002FA-3b:\u003C\u002Fstrong> Allows embedding of additional file formats (e.g., XML, CSV) within the PDF, making it suitable for documents that need to include supplementary data files alongside the main document content.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>PDF\u002FA-3u:\u003C\u002Fstrong> Combines the benefits of PDF\u002FA-3b with Unicode support, offering a comprehensive solution for archival documents that require both embedded files and enhanced text searchability and accessibility.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Ch2>Use PDF\u002FA-3 for Hybrid Electronic Invoices\u003C\u002Fh2>\n\n\u003Cp>ZUGFeRD and Factur-X electronic invoices use PDF\u002FA-3 to combine a visual invoice PDF with embedded, machine-readable invoice XML. The \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fcreate-zugferd-pdf\u002F\">Create ZUGFeRD PDF API Tool\u003C\u002Fa> creates this specific type of hybrid PDF\u002FA-3 invoice from canonical XML and a visual PDF, giving billing and procurement workflows one document that can be read by people and processed by systems.\u003C\u002Fp>\n\n\u003Cp>This is distinct from converting an existing PDF to PDF\u002FA for a general archival workflow. Use Create ZUGFeRD PDF when the goal is a hybrid electronic invoice; use Convert to PDF\u002FA when an existing PDF needs conversion to an archival PDF\u002FA profile.\u003C\u002Fp>\n\n\u003Cp>Safeguard your PDFs for the future with pdfRest's PDF\u002FA compliance tools.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","651f0fdf2d4014c9499b2173","2023-10-05T19:34:55.000+00:00","2023-10-05T19:34:58.000+00:00","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"CollectionPage\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fpdf-archival-format\u002F#collection\",\n      \"name\": \"PDF Archival Format (PDF\u002FA)\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fpdf-archival-format\u002F\",\n      \"isPartOf\": {\n        \"@type\": \"WebSite\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"mainEntity\": {\n        \"@type\": \"ItemList\",\n        \"itemListElement\": [\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 1,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fconvert-email-to-pdf-for-legal-and-compliance-archives\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 2,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fdiscover-how-pdfrest-outperforms-free-open-source-pdf-tools\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 3,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fresize-pdf-pages-for-consistent-archiving\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 4,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fchoose-the-right-pdf-a-version-for-your-archival-or-compliance-needs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 5,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fdetect-and-repair-non-conformant-pdf-a-documents\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 6,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fcreate-an-e-invoicing-pdf-workflow-for-regulatory-compliance\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 7,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fconverting-pdf-files-to-grayscale\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 8,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fconvert-html-newsletter-to-pdf-to-preserve-content\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 9,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fconvert-documents-into-encrypted-pdfs-for-archiving\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 10,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Foptimize-pdf-documents-for-long-term-preservation\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 11,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Foptimize-word-excel-and-powerpoint-files-for-long-term-preservation\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 12,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-pdf-a-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 13,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-pdf-a-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 14,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-pdf-a-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 15,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-pdf-a-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 16,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-pdf-a-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 17,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-pdfa-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 18,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-validate-pdf-a-conformance-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 19,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-validate-pdf-a-conformance-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 20,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-validate-pdf-a-conformance-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 21,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-validate-pdf-a-conformance-with-python\u002F\"\n          }\n        ]\n      },\n      \"description\": \"Validate PDF\u002FA conformance and convert to the PDF\u002FA format with pdfRest to future-proof the compatibility of your documents and information.\",\n      \"keywords\": \"Archival, Convert to PDF\u002FA\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"PDF Archival Format (PDF\u002FA)\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fpdf-archival-format\u002F\"\n        }\n      ]\n    }\n  ]\n}","https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fpdf-archival-format\u002F",[1694],{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},[1696,1697,1701,1705],{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":1698,"name":1699,"slug":1699,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1700},"65ae9a81656af204db4b0f4a","pdf-archival-format","https:\u002F\u002Fcms.pdfrest.com\u002Ftag\u002Fpdf-archival-format\u002F",{"id":1702,"name":1703,"slug":1704,"description":1283,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":1283,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e13","#Archival","hash-archival",{"id":1706,"name":1707,"slug":1708,"description":1283,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":1283,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e16","#Convert to PDF\u002FA","hash-convert-to-pdfa",{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},"https:\u002F\u002Fcms.pdfrest.com\u002Fpdf-archival-format-pdfa\u002F","\n\n\n\n\nConvert PDF Files to the Archival PDF\u002FA Format\n\n\n\npdfRest's Convert to PDF\u002FA API empowers you to convert standard PDF files to the PDF\u002FA archival format, ensuring their long-term preservation and compatibility.\n\n\n\n\nValidate PDF\u002FA Conformance\n\n\n\nLeverage pdfRest's Query PDF API to assess the PDF\u002FA conformance of your documents. By identifying non-conformant PDFs, you can take proactive steps to convert them to the appropriate PDF\u002FA standard.\n\n\n\n\nKey PDF\u002FA Benefits\n\n\n\n * Identify non-complian","Validate & Convert to PDF\u002FA, PDF Archival Format | pdfRest","Validate PDF\u002FA conformance and convert to the PDF\u002FA format with pdfRest to future-proof the compatibility of your documents and information.",{"id":1716,"uuid":1717,"title":1718,"slug":1719,"html":1720,"comment_id":1721,"feature_image":48,"featured":284,"visibility":1257,"created_at":1722,"updated_at":1723,"published_at":1724,"custom_excerpt":48,"codeinjection_head":1725,"codeinjection_foot":48,"custom_template":48,"canonical_url":1726,"authors":1727,"tags":1729,"primary_author":1747,"primary_tag":1748,"url":1749,"excerpt":1750,"reading_time":5,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":1751,"meta_description":1752,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65ae9a86656af204db4b12ee","dd5b306f-03be-40e5-bf74-f46da71d4c8a","PDF Compression","pdf-compression-hub","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Optimize PDF File Size with Powerful Compression\u003C\u002Fh2>\n\n\u003Cp>pdfRest empowers you to efficiently compress your PDF documents, minimizing file size while preserving the integrity of your content. Our advanced compression techniques remove hidden, unnecessary, and redundant elements, optimizing your PDFs for storage and performance.\u003C\u002Fp>\n\n\n\u003Ch2>Tailored PDF Compression Options\u003C\u002Fh2>\n\n\u003Cp>pdfRest offers a range of compression settings to suit your specific requirements. Choose from high, medium, and low compression options, allowing you to prioritize file size reduction or maintain a higher level of image fidelity. Or select custom compression to adjust compression settings for fonts, images, and other elements to achieve the optimal balance between file size and quality.\u003C\u002Fp>\n\n\n\u003Ch2>Unmatched Compression Results with Leading Technology\u003C\u002Fh2>\n\n\u003Cp>The pdfRest \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fcompress-pdf\u002F'>Compress PDF API Tool\u003C\u002Fa> leverages cutting-edge technology from Adobe, renowned for its expertise in PDF development. This ensures unmatched file size reduction while preserving the quality of your text and images.\u003C\u002Fp>\n\n\n\u003Ch2>Streamlined PDF Compression Integration and Scalability\u003C\u002Fh2>\n\n\u003Cp>Easily integrate pdfRest's compression functionality with your existing document storage solutions. This allows you to compress large volumes of PDFs automatically, significantly reducing your storage space requirements and associated costs.\u003C\u002Fp>\n\n\n\u003Cp>Unlock the benefits of efficient PDF compression with pdfRest. Start optimizing your documents today!\u003C\u002Fp>\n\n\u003C!--kg-card-end: html-->\n","653933742d4014c9499b2478","2023-10-25T15:25:40.000+00:00","2026-09-04T17:53:44.000+00:00","2023-10-25T15:26:26.000+00:00","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"CollectionPage\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fpdf-compression\u002F#collection\",\n      \"name\": \"PDF Compression\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fpdf-compression\u002F\",\n      \"isPartOf\": {\n        \"@type\": \"WebSite\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"mainEntity\": {\n        \"@type\": \"ItemList\",\n        \"itemListElement\": [\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 1,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Foptimize-web-application-performance-by-compressing-pdfs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 2,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fdiscover-how-pdfrest-outperforms-free-open-source-pdf-tools\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 3,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Foptimize-pdf-file-submissions-for-uae-digital-government-strategy-2025\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 4,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Faccess-pdf-processing-power-with-ai-magic\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 5,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fmaximize-pdf-performance-with-reduced-file-size\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 6,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Foptimize-pdfs-for-email-attachment\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 7,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-compress-pdf-files-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 8,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-compress-pdf-files-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 9,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-compress-pdf-files-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 10,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-compress-pdf-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 11,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-compress-pdf-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 12,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-compress-pdf-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 13,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-programmatically-compress-pdf-files-to-reduce-file-size\u002F\"\n          }\n        ]\n      },\n      \"description\": \"Reduce PDF file size while preserving quality. Choose compression level and integrate with storage solutions to optimize for space and performance.\",\n      \"keywords\": \"Compress PDF, File Size, Performance\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"PDF Compression\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fpdf-compression\u002F\"\n        }\n      ]\n    }\n  ]\n}","https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fpdf-compression\u002F",[1728],{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},[1730,1731,1735,1739,1743],{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":1732,"name":1733,"slug":1733,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1734},"65ae9a81656af204db4b0f47","pdf-compression","https:\u002F\u002Fcms.pdfrest.com\u002Ftag\u002Fpdf-compression\u002F",{"id":1736,"name":1737,"slug":1738,"description":1283,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":1283,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e18","#Compress PDF","hash-compress-pdf",{"id":1740,"name":1741,"slug":1742,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e19","#File Size","hash-file-size",{"id":1744,"name":1745,"slug":1746,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0f86","#Performance","hash-performance",{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},"https:\u002F\u002Fcms.pdfrest.com\u002Fpdf-compression-hub\u002F","\n\n\n\n\nOptimize PDF File Size with Powerful Compression\n\n\n\npdfRest empowers you to efficiently compress your PDF documents, minimizing file size while preserving the integrity of your content. Our advanced compression techniques remove hidden, unnecessary, and redundant elements, optimizing your PDFs for storage and performance.\n\n\n\n\n\nTailored PDF Compression Options\n\n\n\npdfRest offers a range of compression settings to suit your specific requirements. Choose from high, medium, and low compression o","PDF Compression, Compress PDF to Reduce File Size | pdfRest","Reduce PDF file size while preserving quality. Choose compression level and integrate with storage solutions to optimize for space and performance.",{"id":1754,"uuid":1755,"title":1756,"slug":1757,"html":1758,"comment_id":1759,"feature_image":48,"featured":284,"visibility":1257,"created_at":1760,"updated_at":1761,"published_at":1762,"custom_excerpt":48,"codeinjection_head":1763,"codeinjection_foot":48,"custom_template":48,"canonical_url":1764,"authors":1765,"tags":1771,"primary_author":1817,"primary_tag":1818,"url":1819,"excerpt":1820,"reading_time":5,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":1821,"meta_description":1822,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65ae9a86656af204db4b1330","228bb8ad-92f5-45af-af30-63c86553224c","PDF Forms Processing","forms-processing-hub","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Automate PDF Forms Processing Workflows\u003C\u002Fh2>\n\u003Cp>pdfRest empowers you to automate repetitive tasks in your PDF forms processing workflows. Easily import data from external sources to pre-populate forms using the Import Form Data API. Extract data from multiple forms and consolidate it into a single source with the Export Form Data API. Ensure data integrity by locking form fields and flatten your PDFs for universal compatibility with the Flatten Forms API. Finally, convert XFA forms to Acroforms for broader accessibility using the XFA to Acroforms API.\u003C\u002Fp>\n\n\u003Ch2>Flexible Support for All PDF Form Types and Environments\u003C\u002Fh2>\n\u003Cp>pdfRest Forms Pro is your one-stop solution for automating and batch processing all PDF forms, including Static XFA, Dynamic XFA, and Acroforms. Available as both \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fproducts\u002Fcloud-api\u002F'>Cloud API\u003C\u002Fa> and \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fproducts\u002Fpdf-forms-pro-self-hosted-api\u002F'>Self-Hosted API\u003C\u002Fa> services, it offers the flexibility to integrate with your existing infrastructure.\u003C\u002Fp>\n\n\u003Ch2>Key PDF Forms Features:\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Cstrong>\u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fimport-form-data\u002F'>Import Form Data\u003C\u002Fa>:\u003C\u002Fstrong> Fill forms automatically with data from external sources.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fexport-form-data\u002F'>Export Form Data\u003C\u002Fa>:\u003C\u002Fstrong> Extract data from multiple forms for analysis and reporting.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fflatten-forms\u002F'>Flatten Forms\u003C\u002Fa>:\u003C\u002Fstrong> Lock fields and flatten PDFs for universal compatibility.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fxfa-to-acroforms\u002F'>XFA to Acroforms\u003C\u002Fa>:\u003C\u002Fstrong> Convert XFA forms to Acroforms for broader accessibility.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Cp>Empower your workflows and improve efficiency with pdfRest Forms Pro!\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","6557d5172d4014c9499b2f0b","2023-11-17T21:03:19.000+00:00","2026-09-04T17:53:43.000+00:00","2023-11-17T21:05:13.000+00:00","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"CollectionPage\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fforms-processing\u002F#collection\",\n      \"name\": \"PDF Forms Processing\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fforms-processing\u002F\",\n      \"isPartOf\": {\n        \"@type\": \"WebSite\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"mainEntity\": {\n        \"@type\": \"ItemList\",\n        \"itemListElement\": [\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 1,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fdiscover-how-pdfrest-outperforms-free-open-source-pdf-tools\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 2,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fparse-pdf-files-to-streamline-data-extraction\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 3,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Foptimize-pdf-forms-for-e-signature-compatibility-solution\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 4,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fadd-generated-barcodes-to-pdf-forms\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 5,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Foptimize-filled-pdf-forms-for-universal-compatibility\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 6,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-forms-from-xfa-to-acroforms-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 7,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-forms-from-xfa-to-acroforms-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 8,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-forms-from-xfa-to-acroforms-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 9,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-forms-from-xfa-to-acroforms-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 10,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-forms-from-xfa-to-acroforms-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 11,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-forms-from-xfa-to-acroforms-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 12,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-export-pdf-form-data-with-dot-net-c-sharp\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 13,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-export-pdf-form-data-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 14,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-export-pdf-form-data-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 15,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-export-pdf-form-data-with-javascript\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 16,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-export-pdf-form-data-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 17,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-export-pdf-form-data-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 18,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-fill-out-pdf-form-input-fields\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 19,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-flatten-pdf-forms-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 20,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-flatten-pdf-forms-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 21,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-flatten-pdf-forms-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 22,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-flatten-pdf-forms-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 23,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-flatten-pdf-forms-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 24,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-flatten-pdf-forms-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 25,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-import-data-to-pdf-forms-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 26,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-import-data-to-pdf-forms-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 27,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-import-data-to-pdf-forms-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 28,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-import-data-to-pdf-forms-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 29,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-import-data-to-pdf-forms-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 30,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-import-data-to-pdf-forms-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 31,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-programmatically-fill-pdf-forms\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 32,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-programmatically-flatten-pdf-forms-for-compatibility-and-security\u002F\"\n          }\n        ]\n      },\n      \"description\": \"Automate PDF forms processing. Fill, extract data, lock fields, flatten, and convert XFA to Acroforms. Handle all form types: Static XFA, Dynamic XFA, and Acroforms.\",\n      \"keywords\": \"Acroforms, Barcode, Dynamic XFA, Export Form Data, Flatten Forms, Forms, Import Form Data, Static XFA, XFA, XFA to Acroforms\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"PDF Forms Processing\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fforms-processing\u002F\"\n        }\n      ]\n    }\n  ]\n}","https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fforms-processing\u002F",[1766],{"id":1767,"name":1768,"slug":1769,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1770},"65ae9a7f656af204db4b0d92","Eric Shore","eric","https:\u002F\u002Fcms.pdfrest.com\u002Fauthor\u002Feric\u002F",[1772,1773,1777,1781,1785,1789,1793,1797,1801,1805,1809,1813],{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":1774,"name":1775,"slug":1775,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1776},"65ae9a81656af204db4b0f85","forms-processing","https:\u002F\u002Fcms.pdfrest.com\u002Ftag\u002Fforms-processing\u002F",{"id":1778,"name":1779,"slug":1780,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0f54","#Flatten Forms","hash-flatten-forms",{"id":1782,"name":1783,"slug":1784,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0f7f","#Forms","hash-forms",{"id":1786,"name":1787,"slug":1788,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0f81","#XFA","hash-xfa",{"id":1790,"name":1791,"slug":1792,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0f82","#Static XFA","hash-static-xfa",{"id":1794,"name":1795,"slug":1796,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0f83","#Dynamic XFA","hash-dynamic-xfa",{"id":1798,"name":1799,"slug":1800,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0f80","#Acroforms","hash-acroforms",{"id":1802,"name":1803,"slug":1804,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0f56","#Export Form Data","hash-export-form-data",{"id":1806,"name":1807,"slug":1808,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0f55","#Import Form Data","hash-import-form-data",{"id":1810,"name":1811,"slug":1812,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"66280bf0533c9f26b943730c","#Barcode","hash-barcode",{"id":1814,"name":1815,"slug":1816,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"66e4ad50533c9f26b94384d2","#XFA to Acroforms","hash-xfa-to-acroforms",{"id":1767,"name":1768,"slug":1769,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1770},{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},"https:\u002F\u002Fcms.pdfrest.com\u002Fforms-processing-hub\u002F","\n\n\n\n\nAutomate PDF Forms Processing Workflows\n\n\npdfRest empowers you to automate repetitive tasks in your PDF forms processing workflows. Easily import data from external sources to pre-populate forms using the Import Form Data API. Extract data from multiple forms and consolidate it into a single source with the Export Form Data API. Ensure data integrity by locking form fields and flatten your PDFs for universal compatibility with the Flatten Forms API. Finally, convert XFA forms to Acroforms f","PDF Forms Processing for Developers, Import & Export Data, Convert & Flatten Forms | pdfRest","Automate PDF forms processing. Fill, extract data, lock fields, flatten, and convert XFA to Acroforms. Handle all form types: Static XFA, Dynamic XFA, and Acroforms.",{"id":1824,"uuid":1825,"title":1826,"slug":1827,"html":1828,"comment_id":1824,"feature_image":48,"featured":284,"visibility":1257,"created_at":1829,"updated_at":1830,"published_at":1831,"custom_excerpt":48,"codeinjection_head":1832,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"authors":1833,"tags":1835,"primary_author":1861,"primary_tag":1862,"url":1863,"excerpt":1864,"reading_time":320,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":1865,"meta_description":1866,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"6920d2e0533c9f26b943a85c","de38dcbd-66f6-43cf-92b7-f458b76a0136","PDF Generation","pdf-generation-hub","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Achieve Custom PDF Generation Workflows via API\u003C\u002Fh2>\n\n\u003Cp>Build professional PDF documents from application data using pdfRest. Start with a blank PDF canvas, add precisely positioned content, and create finished documents such as invoices, reports, statements, forms, and certificates without relying on a pre-existing template.\u003C\u002Fp>\n\n\u003Cp>The pdfRest API provides the building blocks for programmatic PDF generation:\u003C\u002Fp>\n\n\u003Cul>\n  \u003Cli>\u003Cstrong>Create the document foundation:\u003C\u002Fstrong> Use the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fcreate-blank-pdf\u002F\">Create Blank PDF API Tool\u003C\u002Fa> to define the page size, orientation, and number of pages.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Add dynamic content:\u003C\u002Fstrong> Use the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F\">Add to PDF API Tool\u003C\u002Fa> to place text, images, lines, rectangles, and tables using application data.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Build structured layouts:\u003C\u002Fstrong> Create styled tables with headers, footers, merged cells, image cells, and multi-page overflow handling.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Support accessible workflows:\u003C\u002Fstrong> Apply optional structure tags to newly inserted text, images, shapes, and table content.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Assemble documents:\u003C\u002Fstrong> Use the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fmerge-pdfs\u002F\">Merge PDFs API Tool\u003C\u002Fa> to combine generated pages, blank canvases, templates, or supporting documents.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Prepare archival output:\u003C\u002Fstrong> Use the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fconvert-to-pdfa\u002F\">Convert to PDF\u002FA API Tool\u003C\u002Fa> to prepare generated documents for long-term preservation and applicable archival workflows.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Ch2>Generate Documents from Structured Data\u003C\u002Fh2>\n\n\u003Cp>PDF generation becomes especially useful when document content changes for every request. Your application can supply customer information, transaction details, measurements, product data, or other structured content, while the API controls how that data appears in the final PDF.\u003C\u002Fp>\n\n\u003Cp>Common examples include:\u003C\u002Fp>\n\n\u003Cul>\n  \u003Cli>Invoices with customer details, line items, taxes, totals, and payment instructions\u003C\u002Fli>\n  \u003Cli>Financial statements with account summaries and transaction tables\u003C\u002Fli>\n  \u003Cli>Shipping documents with addresses, package details, barcodes, and status information\u003C\u002Fli>\n  \u003Cli>Reports with headings, charts, tables, summaries, and supporting images\u003C\u002Fli>\n  \u003Cli>Certificates and forms with names, dates, identifiers, signatures, and organization branding\u003C\u002Fli>\n  \u003Cli>Compliance documents with required metadata, structured content, and attached source files\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Cp>This approach keeps business data in the application while allowing the PDF layout to be generated consistently for each request.\u003C\u002Fp>\n\n\u003Ch2>Build a PDF from a Blank Canvas\u003C\u002Fh2>\n\n\u003Cp>A typical generation workflow begins with a blank document:\u003C\u002Fp>\n\n\u003Col>\n  \u003Cli>Call Create Blank PDF to establish the page dimensions and page count.\u003C\u002Fli>\n  \u003Cli>Use the returned file identifier as the input to Add to PDF.\u003C\u002Fli>\n  \u003Cli>Insert the document's text, images, shapes, and tables.\u003C\u002Fli>\n  \u003Cli>Repeat the process when additional content must be added.\u003C\u002Fli>\n  \u003Cli>Use other pdfRest API Tools to finalize, combine, secure, or archive the result.\u003C\u002Fli>\n\u003C\u002Fol>\n\n\u003Cp>For example, an invoice workflow might create a Letter-sized blank PDF, add a logo and company information, insert customer and payment details, generate a line-item table, and then add totals and footer content.\u003C\u002Fp>\n\n\u003Cp>The same workflow can also enhance an existing PDF. Add to PDF accepts an existing document when content needs to be appended to a template, report, form, or previously generated file.\u003C\u002Fp>\n\n\u003Ch2>Generate Tables and Structured Content\u003C\u002Fh2>\n\n\u003Cp>The Add to PDF API Tool supports table-oriented layouts for data-driven documents. Applications can define:\u003C\u002Fp>\n\n\u003Cul>\n  \u003Cli>Fixed or proportional column widths\u003C\u002Fli>\n  \u003Cli>Header and footer rows\u003C\u002Fli>\n  \u003Cli>Repeated headers when a table continues onto another page\u003C\u002Fli>\n  \u003Cli>Merged cells spanning multiple columns or rows\u003C\u002Fli>\n  \u003Cli>Cell-level text and image content\u003C\u002Fli>\n  \u003Cli>Table, row, column, and cell styling\u003C\u002Fli>\n  \u003Cli>Borders, fills, padding, opacity, and text formatting\u003C\u002Fli>\n  \u003Cli>Optional structure tags for table content\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Cp>These capabilities make it possible to generate useful business documents directly from records, transactions, or other structured input rather than treating the PDF as a collection of unrelated text fragments.\u003C\u002Fp>\n\n\u003Ch2>Support Tagged PDF Generation\u003C\u002Fh2>\n\n\u003Cp>Generated documents can include optional structure tags for newly inserted content. These tags can identify text, images, shapes, and tables in the PDF structure for downstream processing and accessibility-oriented workflows.\u003C\u002Fp>\n\n\u003Cp>When a document is built from a blank PDF, the generated content can be tagged as it is added. When content is added to an already tagged PDF, the new tagged content can be appended while preserving the existing document structure.\u003C\u002Fp>\n\n\u003Cp>Tagging does not automatically create a complete structure tree for pre-existing untagged content. It is intended to identify content introduced by the current generation or enhancement workflow.\u003C\u002Fp>\n\n\u003Ch2>Scale Document Generation Workflows\u003C\u002Fh2>\n\n\u003Cp>Once the document layout is defined, the same workflow can be applied to large volumes of requests. Generate individualized documents from billing records, customer data, transactions, or other application events while maintaining consistent page geometry and formatting.\u003C\u002Fp>\n\n\u003Cp>Batch-oriented generation can help organizations:\u003C\u002Fp>\n\n\u003Cul>\n  \u003Cli>Produce customer-specific documents automatically\u003C\u002Fli>\n  \u003Cli>Reduce manual document preparation\u003C\u002Fli>\n  \u003Cli>Apply consistent branding and layout rules\u003C\u002Fli>\n  \u003Cli>Generate documents on demand or on a schedule\u003C\u002Fli>\n  \u003Cli>Integrate PDF output with storage, delivery, and archival systems\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Ch2>Combine and Finalize Generated PDFs\u003C\u002Fh2>\n\n\u003Cp>Generated PDFs can be passed through additional pdfRest workflows depending on the requirements of the final document:\u003C\u002Fp>\n\n\u003Cul>\n  \u003Cli>Combine generated pages or supporting documents with the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fmerge-pdfs\u002F\">Merge PDFs API Tool\u003C\u002Fa>.\u003C\u002Fli>\n  \u003Cli>Prepare the result for archival workflows with the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fconvert-to-pdfa\u002F\">Convert to PDF\u002FA API Tool\u003C\u002Fa>.\u003C\u002Fli>\n  \u003Cli>Compress the output for more efficient storage or delivery.\u003C\u002Fli>\n  \u003Cli>Attach XML, spreadsheets, or supporting files to the PDF.\u003C\u002Fli>\n  \u003Cli>Encrypt or restrict the document when access controls are required.\u003C\u002Fli>\n  \u003Cli>Upload, poll, and manage files through the supporting workflow tools.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Ch2>Start Building PDFs from Application Data\u003C\u002Fh2>\n\n\u003Cp>Use the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fcreate-blank-pdf\u002F\">Create Blank PDF API Tool\u003C\u002Fa> to define the document canvas, then use the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F\">Add to PDF API Tool\u003C\u002Fa> to populate it with dynamic content.\u003C\u002Fp>\n\n\u003Cp>Together, these tools provide a foundation for generating custom PDFs from scratch, enhancing existing documents, and building scalable document workflows around application data.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2025-11-21T21:00:16.000+00:00","2026-09-04T17:53:41.000+00:00","2025-11-21T21:05:30.000+00:00","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"CollectionPage\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fpdf-generation\u002F#collection\",\n      \"name\": \"PDF Generation\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fpdf-generation\u002F\",\n      \"isPartOf\": {\n        \"@type\": \"WebSite\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"mainEntity\": {\n        \"@type\": \"ItemList\",\n        \"itemListElement\": [\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 1,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fpersonalize-pdf-templates-with-dynamic-content\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 2,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fgenerate-dynamic-pdf-reports-with-structured-tables\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 3,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fcreate-tagged-pdfs-from-scratch-with-application-data\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 4,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fachieve-custom-pdf-generation-workflows-via-api\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 5,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fautomate-programmatic-pdf-invoice-generation\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 6,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fadd-page-numbers-to-pdf-documents\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 7,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fautomate-pdf-text-insertion-for-variable-data-printing\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 8,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fadd-generated-barcodes-to-pdf-forms\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 9,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fcreate-an-e-invoicing-pdf-workflow-for-regulatory-compliance\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 10,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-attachments-to-pdf-files\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 11,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-attachments-to-pdf-files-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 12,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-attachments-to-pdf-files-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 13,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-attachments-to-pdf-files-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 14,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-attachments-to-pdf-files-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 15,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-images-to-pdf-files-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 16,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-images-to-pdf-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 17,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-images-to-pdf-files-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 18,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-images-to-pdf-files-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 19,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-images-to-pdf-files-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 20,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-images-to-pdf-files-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 21,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-tables-to-pdf-files-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 22,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-tables-to-pdf-files-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 23,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-tables-to-pdf-files-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 24,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-tables-to-pdf-files-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 25,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-tables-to-pdf-files-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 26,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-tables-to-pdf-files-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 27,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-pdf-files-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 28,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-pdf-files-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 29,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-pdf-files-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 30,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-pdf-files-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 31,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-a-pdf-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 32,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-pdf-files-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 33,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 34,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 35,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 36,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 37,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 38,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 39,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-create-a-blank-pdf-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 40,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-create-a-blank-pdf-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 41,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-create-a-blank-pdf-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 42,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-create-a-blank-pdf-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 43,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-create-a-blank-pdf-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 44,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-create-a-blank-pdf-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 45,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-programmatically-generate-pdf-invoice-files\u002F\"\n          }\n        ]\n      },\n      \"description\": \"Programmatically generate custom PDF documents from data, build complex reports, and create PDFs using the Create Blank PDF and Add to PDF APIs.\",\n      \"keywords\": \"Add to PDF, Create Blank PDF, PDF Generation, Tables, Tagged PDF\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"PDF Generation\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fpdf-generation\u002F\"\n        }\n      ]\n    }\n  ]\n}",[1834],{"id":1767,"name":1768,"slug":1769,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1770},[1836,1837,1841,1845,1849,1853,1857],{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":1838,"name":1839,"slug":1839,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1840},"6920d340533c9f26b943a862","pdf-generation","https:\u002F\u002Fcms.pdfrest.com\u002Ftag\u002Fpdf-generation\u002F",{"id":1842,"name":1843,"slug":1844,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0f5e","#Add to PDF","hash-add-to-pdf",{"id":1846,"name":1847,"slug":1848,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"6920ce6e533c9f26b943a84b","#Create Blank PDF","hash-create-blank-pdf",{"id":1850,"name":1851,"slug":1852,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"6920ce6e533c9f26b943a84c","#PDF Generation","hash-pdf-generation",{"id":1854,"name":1855,"slug":1856,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"6a6cba55533c9f26b943aad9","#Tagged PDF","hash-tagged-pdf",{"id":1858,"name":1859,"slug":1860,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"6a6cefd6533c9f26b943aaf7","#Tables","hash-tables",{"id":1767,"name":1768,"slug":1769,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1770},{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},"https:\u002F\u002Fcms.pdfrest.com\u002Fpdf-generation-hub\u002F","\n\n\n\n\nAchieve Custom PDF Generation Workflows via API\n\n\n\nBuild professional PDF documents from application data using pdfRest. Start with a blank PDF canvas, add precisely positioned content, and create finished documents such as invoices, reports, statements, forms, and certificates without relying on a pre-existing template.\n\n\n\nThe pdfRest API provides the building blocks for programmatic PDF generation:\n\n\n\n * Create the document foundation: Use the Create Blank PDF API Tool to define the page ","PDF Generation API, Programmatic Custom Document Creation | pdfRest","Programmatically generate custom PDF documents from data, build complex reports, and create PDFs using the Create Blank PDF and Add to PDF APIs.",{"id":1868,"uuid":1869,"title":1870,"slug":1871,"html":1872,"comment_id":1873,"feature_image":48,"featured":284,"visibility":1257,"created_at":1874,"updated_at":1723,"published_at":1875,"custom_excerpt":48,"codeinjection_head":1876,"codeinjection_foot":48,"custom_template":48,"canonical_url":1877,"authors":1878,"tags":1880,"primary_author":1942,"primary_tag":1943,"url":1944,"excerpt":1945,"reading_time":5,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":1946,"meta_description":1947,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65ae9a86656af204db4b12ed","f6a77bfa-537f-4d51-a686-c8dcec2b488f","PDF Optimization","pdf-optimization-hub","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Optimize PDFs for Maximum Efficiency and Performance with pdfRest\u003C\u002Fh2>\n\n\u003Cp>pdfRest offers a comprehensive suite of tools to optimize your PDF documents for specific needs, from print to digital and beyond, including:\u003C\u002Fp>\n\n\u003Cul>\n  \u003Cli>\u003Cstrong>Print Optimization:\u003C\u002Fstrong> Prepare PDFs for high-quality printing with features like \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fconvert-pdf-colors\u002F'>color space conversion\u003C\u002Fa>, \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Frasterize-pdf\u002F'>page rasterization\u003C\u002Fa>, and \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fflatten-transparencies\u002F'>transparency flattening\u003C\u002Fa>.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Web Viewing:\u003C\u002Fstrong> Optimize PDFs for fast loading and smooth rendering on web browsers with \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Flinearize-pdf\u002F'>linearization\u003C\u002Fa>.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Archiving:\u003C\u002Fstrong> Ensure long-term preservation of PDFs by converting them to \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fconvert-to-pdfa\u002F'>archival formats\u003C\u002Fa>.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Storage:\u003C\u002Fstrong> \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fcompress-pdf\u002F'>Reduce file size\u003C\u002Fa> and optimize for efficient storage without compromising quality.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Performance:\u003C\u002Fstrong> Enhance PDF performance by flattening elements like \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fflatten-annotations\u002F'>annotations\u003C\u002Fa> and \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fflatten-layers\u002F'>layers\u003C\u002Fa>.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\n\u003Ch2>Streamline Your Workflows with Batch Processing\u003C\u002Fh2>\n\n\u003Cp>pdfRest's batch processing capabilities allow you to optimize large volumes of PDFs simultaneously, saving you time and effort. Enjoy the benefits of:\u003C\u002Fp>\n\n\u003Cul>\n  \u003Cli>\u003Cstrong>Increased productivity:\u003C\u002Fstrong> Process multiple PDFs with concurrent API calls.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Time and cost savings:\u003C\u002Fstrong> Automate repetitive tasks and reduce manual effort.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Consistent results:\u003C\u002Fstrong> Ensure consistent optimization across all your PDFs.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\n\u003Cp>Experience the power of pdfRest's optimization tools and unlock the full potential of your PDF documents.\u003C\u002Fp>\n\n\u003C!--kg-card-end: html-->\n","653932742d4014c9499b2466","2023-10-25T15:21:24.000+00:00","2023-10-25T15:22:25.000+00:00","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"CollectionPage\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fpdf-optimization\u002F#collection\",\n      \"name\": \"PDF Optimization\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fpdf-optimization\u002F\",\n      \"isPartOf\": {\n        \"@type\": \"WebSite\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"mainEntity\": {\n        \"@type\": \"ItemList\",\n        \"itemListElement\": [\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 1,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fextract-structured-pdf-data-for-optimized-llm-training-with-markdown\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 2,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Foptimize-web-application-performance-by-compressing-pdfs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 3,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fdiscover-how-pdfrest-outperforms-free-open-source-pdf-tools\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 4,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fresize-pdf-pages-for-consistent-archiving\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 5,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fcrop-pdf-files-to-optimize-scanned-documents\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 6,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fremove-white-space-from-pdf-files-for-professional-printing\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 7,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Foptimize-pdf-file-submissions-for-uae-digital-government-strategy-2025\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 8,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fenhance-pdf-security-by-rasterizing-text\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 9,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fflatten-pdf-pages-to-raster-images-for-seamless-printing\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 10,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fchoose-the-right-pdf-x-version-for-your-print-needs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 11,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Foptimize-pdf-forms-for-e-signature-compatibility-solution\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 12,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fcreate-searchable-pdf-files-with-ocr\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 13,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fcreate-an-e-invoicing-pdf-workflow-for-regulatory-compliance\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 14,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fconverting-pdf-files-to-grayscale\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 15,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fmaximize-pdf-performance-with-reduced-file-size\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 16,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Foptimize-filled-pdf-forms-for-universal-compatibility\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 17,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fconvert-pdf-to-pdfx-to-optimize-for-print\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 18,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fflatten-transparencies-for-improved-print-performance\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 19,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Foptimize-pdf-documents-for-long-term-preservation\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 20,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Foptimize-word-excel-and-powerpoint-files-for-long-term-preservation\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 21,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Foptimize-pdfs-for-email-attachment\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 22,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Foptimize-pdfs-for-fast-web-viewing\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 23,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-attachments-to-pdf-files\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 24,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-attachments-to-pdf-files-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 25,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-attachments-to-pdf-files-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 26,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-crop-pdf-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 27,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-crop-pdf-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 28,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-crop-pdf-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 29,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-crop-pdf-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 30,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-crop-pdf-with-php-code\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 31,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-crop-pdf-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 32,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-flatten-annotations-in-pdf-files-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 33,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-flatten-annotations-in-pdf-files-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 34,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-flatten-annotations-in-pdf-files-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 35,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-flatten-annotations-in-pdf-files-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 36,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-flatten-annotations-in-pdf-files-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 37,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-flatten-layers-in-pdf-files-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 38,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-flatten-layers-of-a-pdf-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 39,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-flatten-pdf-layers-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 40,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-linearize-pdf-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 41,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-linearize-pdf-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 42,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-linearize-pdf-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 43,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-linearize-pdf-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 44,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-linearize-pdf-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 45,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-linearize-pdf-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 46,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-poll-for-api-request-status-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 47,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-poll-for-api-request-status-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 48,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-programmatically-compress-pdf-files-to-reduce-file-size\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 49,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-programmatically-crop-and-resize-pdf-pages-guide\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 50,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-programmatically-flatten-pdf-forms-for-compatibility-and-security\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 51,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-rasterize-pdf-files-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 52,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-rasterize-pdf-files-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 53,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-rasterize-pdf-files-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 54,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-rasterize-pdf-files-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 55,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-rasterize-pdf-files-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 56,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-rasterize-pdf-files-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 57,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-resize-pdf-pages-with-c-code-in-net\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 58,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-resize-pdf-pages-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 59,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-resize-pdf-pages-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 60,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-resize-pdf-pages-with-javascript-code-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 61,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-resize-pdf-pages-with-php-code\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 62,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-resize-pdf-pages-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 63,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-unzip-files-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 64,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-unzip-files-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 65,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-unzip-files-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 66,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-unzip-files-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 67,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-unzip-files-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 68,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-unzip-files-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 69,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-upload-a-single-binary-file-to-pdfrest-in-net-with-c-2\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 70,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-upload-a-single-binary-file-to-pdfrest-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 71,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-upload-a-single-binary-file-to-pdfrest-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 72,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-upload-multiple-files-to-pdfrest-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 73,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-upload-multiple-files-to-pdfrest-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 74,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-use-ocr-to-make-pdf-image-text-searchable-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 75,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-use-ocr-to-make-pdf-image-text-searchable-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 76,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-use-ocr-to-make-pdf-image-text-searchable-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 77,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-use-ocr-to-make-pdf-image-text-searchable-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 78,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-use-ocr-to-make-pdf-image-text-searchable-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 79,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-use-ocr-to-make-pdf-image-text-searchable-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 80,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-zip-files-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 81,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-zip-files-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 82,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-zip-files-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 83,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-zip-files-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 84,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-zip-files-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 85,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-zip-files-with-python\u002F\"\n          }\n        ]\n      },\n      \"description\": \"Optimize PDFs for print, web viewing, archive, storage, performance, and other document objectives with pdfRest API Toolkit.\",\n      \"keywords\": \"API Polling, Accessibility, Attachment, Compatibility, Crop, Flatten Annotations, Flatten Layers, Linearize PDF, Optimization, Rasterize PDF, Resize, Unzip, Upload Files, Zip Files\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"PDF Optimization\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fpdf-optimization\u002F\"\n        }\n      ]\n    }\n  ]\n}","https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fpdf-optimization\u002F",[1879],{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},[1881,1882,1886,1890,1894,1898,1902,1906,1910,1914,1918,1922,1926,1930,1934,1938],{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":1883,"name":1884,"slug":1884,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1885},"65ae9a81656af204db4b0f4e","pdf-optimization","https:\u002F\u002Fcms.pdfrest.com\u002Ftag\u002Fpdf-optimization\u002F",{"id":1887,"name":1888,"slug":1889,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e24","#Linearize PDF","hash-linearize-pdf",{"id":1891,"name":1892,"slug":1893,"description":1283,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":1283,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e15","#Optimization","hash-optimization",{"id":1895,"name":1896,"slug":1897,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0f5c","#Flatten Annotations","hash-flatten-annotations",{"id":1899,"name":1900,"slug":1901,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0f5b","#Flatten Layers","hash-flatten-layers",{"id":1903,"name":1904,"slug":1905,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0f84","#Compatibility","hash-compatibility",{"id":1907,"name":1908,"slug":1909,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"661e89f2533c9f26b943714b","#Attachment","hash-attachment",{"id":1911,"name":1912,"slug":1913,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0f57","#Upload Files","hash-upload-files",{"id":1915,"name":1916,"slug":1917,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65f7b777533c9f26b9436b0d","#Zip Files","hash-zip-files",{"id":1919,"name":1920,"slug":1921,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"662aa29e533c9f26b9437416","#API Polling","hash-api-polling",{"id":1923,"name":1924,"slug":1925,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"66a2bcdf533c9f26b9437f76","#Accessibility","hash-accessibility",{"id":1927,"name":1928,"slug":1929,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"67366b58533c9f26b9438e5b","#Unzip","hash-unzip",{"id":1931,"name":1932,"slug":1933,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"6793dfcc533c9f26b94391e9","#Rasterize PDF","hash-rasterize-pdf",{"id":1935,"name":1936,"slug":1937,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"68375d7b533c9f26b94399a1","#Crop","hash-crop",{"id":1939,"name":1940,"slug":1941,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"683779b9533c9f26b94399d3","#Resize","hash-resize",{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},"https:\u002F\u002Fcms.pdfrest.com\u002Fpdf-optimization-hub\u002F","\n\n\n\n\nOptimize PDFs for Maximum Efficiency and Performance with pdfRest\n\n\n\npdfRest offers a comprehensive suite of tools to optimize your PDF documents for specific needs, from print to digital and beyond, including:\n\n\n\n * Print Optimization: Prepare PDFs for high-quality printing with features like color space conversion, page rasterization, and transparency flattening.\n * Web Viewing: Optimize PDFs for fast loading and smooth rendering on web browsers with linearization.\n * Archiving: Ensure lo","PDF Optimization, Optimize for Print, Web, Archive | pdfRest","Optimize PDFs for print, web viewing, archive, storage, performance, and other document objectives with pdfRest API Toolkit.",{"id":1949,"uuid":1950,"title":1951,"slug":1952,"html":1953,"comment_id":1954,"feature_image":48,"featured":284,"visibility":1257,"created_at":1955,"updated_at":1956,"published_at":1957,"custom_excerpt":48,"codeinjection_head":1958,"codeinjection_foot":48,"custom_template":48,"canonical_url":1959,"authors":1960,"tags":1962,"primary_author":2032,"primary_tag":2033,"url":2034,"excerpt":2035,"reading_time":5,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":2036,"meta_description":2037,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65ae9a86656af204db4b12dd","10145b3c-dd78-4c0c-abcd-92608d99ab77","PDF Security","pdf-security-hub","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Protect Sensitive Data and Control Access to PDF Documents\u003C\u002Fh2>\n\n\u003Cp>pdfRest's PDF Security API provides a robust toolkit for safeguarding sensitive information and controlling access to your PDF documents. With a wide range of features, you can implement comprehensive security measures to protect your valuable content from unauthorized access, modification, or distribution. Whether you need to redact PII, restrict editing permissions, add watermarks, prevent AI scraping, or implement advanced encryption, pdfRest's API equips you with the necessary tools to maintain the integrity and confidentiality of your PDFs.\u003C\u002Fp>\n\n\u003Ch2>Key PDF Security Features\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Cstrong>Redaction:\u003C\u002Fstrong> Use \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fredact-pdf-api\u002F'>Redact PDF\u003C\u002Fa> API to find and redact private information, including exact matches or pattern matches like phone numbers, credit card numbers, and email addresses.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Digital Signatures:\u003C\u002Fstrong> Use \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fsign-pdf\u002F'>Sign PDF\u003C\u002Fa> API to apply cryptographic digital signatures to PDF files, ensuring authenticity and compliance.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Password Protection:\u003C\u002Fstrong> Use \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fencrypt-pdf\u002F'>Encrypt PDF\u003C\u002Fa> API to require passwords for opening PDF documents.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Apply Restrictions:\u003C\u002Fstrong> Use \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Frestrict-pdf\u002F'>Restrict PDF\u003C\u002Fa> API to control PDF editing, printing, copying, and other restrictions.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Watermarking:\u003C\u002Fstrong> Use \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fwatermark-pdf\u002F'>Watermark PDF\u003C\u002Fa> API to apply image or text watermarks to visually identify and protect your documents.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>AI Scraping Protection:\u003C\u002Fstrong> Use \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Ftdm-reserve-pdf\u002F'>TDM Reserve PDF\u003C\u002Fa> API to embed machine-readable metadata that restricts automated text and data mining, explicitly opting your content out of AI training.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>By leveraging pdfRest's PDF Security API Tools, you can effectively protect your sensitive data, control access to your documents, and deter unauthorized use.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","651f0e2d2d4014c9499b2127","2023-10-05T19:27:41.000+00:00","2026-09-04T17:53:51.000+00:00","2023-10-05T19:27:53.000+00:00","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"CollectionPage\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fpdf-security\u002F#collection\",\n      \"name\": \"PDF Security\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fpdf-security\u002F\",\n      \"isPartOf\": {\n        \"@type\": \"WebSite\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"mainEntity\": {\n        \"@type\": \"ItemList\",\n        \"itemListElement\": [\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 1,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fsecure-proprietary-pdf-reports-from-ai-scraping-and-data-mining\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 2,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fautomate-eu-cdsm-article-4-compliance-for-digital-pdf-publications\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 3,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fconvert-email-to-pdf-for-legal-and-compliance-archives\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 4,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fsecure-digital-contracts-for-remote-teams-and-clients\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 5,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fstreamline-batch-pdf-signing-for-high-volume-workflows\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 6,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fdiscover-how-pdfrest-outperforms-free-open-source-pdf-tools\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 7,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fprotect-data-privacy-in-financial-services-with-pdf-redaction-solution\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 8,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fchoose-the-right-pdf-a-version-for-your-archival-or-compliance-needs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 9,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fensure-patient-privacy-in-healthcare-research-with-pdf-redaction-solution\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 10,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fensure-gdpr-compliance-for-pdf-processing-with-eu-based-cloud-api\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 11,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fself-host-your-pdf-processing-api-on-premises-with-container-deployment\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 12,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Foptimize-pdf-file-submissions-for-uae-digital-government-strategy-2025\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 13,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fenhance-pdf-security-by-rasterizing-text\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 14,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Faccess-pdf-processing-power-with-ai-magic\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 15,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fadd-pdf-watermarks-that-cannot-be-removed\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 16,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fpreserving-copyright-through-watermarking\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 17,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fcreate-secure-document-workflows-with-pdf-password-protection\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 18,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fbest-fit-pdf-toolkit-integration-for-any-application-or-workflow\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 19,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fconvert-documents-into-encrypted-pdfs-for-archiving\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 20,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fcontrol-your-backend-with-pdfrest-api-toolkit-self-hosted\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 21,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fdelete-pages-from-a-pdf-to-sanitize-documents\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 22,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-apply-tdm-reservations-to-pdf-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 23,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-apply-tdm-reservations-to-pdf-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 24,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-apply-tdm-reservations-to-pdf-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 25,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-apply-tdm-reservations-to-pdf-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 26,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-apply-tdm-reservations-to-pdf-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 27,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-apply-tdm-reservations-to-pdf-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 28,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-automate-pdf-digital-signatures-for-secure-and-efficient-workflows-guide\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 29,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-automate-pdf-redaction-for-data-privacy-and-compliance-guide\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 30,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-change-pdf-password-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 31,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-change-pdf-password-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 32,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-change-pdf-password-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 33,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-change-pdf-password-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 34,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-change-pdf-password-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 35,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-change-pdf-password-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 36,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-delete-files-on-demand-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 37,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-delete-files-on-demand-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 38,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-delete-files-on-demand-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 39,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-delete-files-on-demand-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 40,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-delete-files-on-demand-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 41,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-delete-files-on-demand-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 42,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-digitally-sign-pdf-files-in-net-with-c-code\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 43,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-digitally-sign-pdf-files-with-curl-code\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 44,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-digitally-sign-pdf-files-with-java-code\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 45,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-digitally-sign-pdf-files-with-javascript-code-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 46,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-digitally-sign-pdf-files-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 47,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-digitally-sign-pdf-files-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 48,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-encrypt-pdf-files-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 49,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-encrypt-pdf-files-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 50,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-encrypt-pdf-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 51,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-encrypt-pdf-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 52,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-encrypt-pdf-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 53,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-encrypt-pdf-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 54,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-programmatically-add-watermark-to-pdf\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 55,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-programmatically-flatten-pdf-forms-for-compatibility-and-security\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 56,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-programmatically-redact-pdf-files-to-remove-sensitive-data\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 57,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-programmatically-sign-pdf-documents-with-digital-signatures-guide\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 58,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-redact-pdf-text-in-net-with-c-code\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 59,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-redact-pdf-text-with-curl-code\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 60,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-redact-pdf-text-with-java-code\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 61,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-redact-pdf-text-with-javascript-code-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 62,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-redact-pdf-text-with-php-code\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 63,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-redact-pdf-text-with-python-code\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 64,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-remove-pdf-password-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 65,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-remove-pdf-password-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 66,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-remove-pdf-restrictions-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 67,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-remove-pdf-restrictions-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 68,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-remove-pdf-restrictions-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 69,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-remove-pdf-restrictions-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 70,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-remove-pdf-restrictions-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 71,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-remove-pdf-restrictions-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 72,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-restrict-pdf-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 73,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-restrict-pdf-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 74,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-restrict-pdf-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 75,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-restrict-pdf-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 76,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-restrict-pdf-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 77,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-restrict-pdf-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 78,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-watermark-pdf-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 79,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-watermark-pdf-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 80,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-watermark-pdf-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 81,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-watermark-pdf-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 82,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-watermark-pdf-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 83,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-watermark-pdf-with-python\u002F\"\n          }\n        ]\n      },\n      \"description\": \"Learn how to secure and protect your PDF documents with a safe and reliable API service from pdfRest. Encrypt with password-protection, restrict access rights, & add watermarks.\",\n      \"keywords\": \"Compliance, Copyright, Decrypt PDF, Delete File, Digital Signature, EU, Encrypt PDF, GDPR, Password, Redact PDF, Restrict PDF, Sanitization, Security, Sign PDF, TDM Reserve PDF, Watermark PDF\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"PDF Security\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fpdf-security\u002F\"\n        }\n      ]\n    }\n  ]\n}","https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fpdf-security\u002F",[1961],{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},[1963,1964,1968,1972,1976,1980,1984,1988,1992,1996,2000,2004,2008,2012,2016,2020,2024,2028],{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":1965,"name":1966,"slug":1966,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1967},"65ae9a81656af204db4b0f46","pdf-security","https:\u002F\u002Fcms.pdfrest.com\u002Ftag\u002Fpdf-security\u002F",{"id":1969,"name":1970,"slug":1971,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0ea9","#Copyright","hash-copyright",{"id":1973,"name":1974,"slug":1975,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e75","#Decrypt PDF","hash-decrypt-pdf",{"id":1977,"name":1978,"slug":1979,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e79","#Password","hash-password",{"id":1981,"name":1982,"slug":1983,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e76","#Restrict PDF","hash-restrict-pdf",{"id":1985,"name":1986,"slug":1987,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e26","#Sanitization","hash-sanitization",{"id":1989,"name":1990,"slug":1991,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e65","#Security","hash-security",{"id":1993,"name":1994,"slug":1995,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0ea8","#Watermark PDF","hash-watermark-pdf",{"id":1997,"name":1998,"slug":1999,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e74","#Encrypt PDF","hash-encrypt-pdf",{"id":2001,"name":2002,"slug":2003,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"67d0b2c5533c9f26b9439406","#GDPR","hash-gdpr",{"id":2005,"name":2006,"slug":2007,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"67d0b2c5533c9f26b9439407","#Compliance","hash-compliance",{"id":2009,"name":2010,"slug":2011,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"67d0b2c5533c9f26b9439408","#EU","hash-eu",{"id":2013,"name":2014,"slug":2015,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"680a7e16533c9f26b943953e","#Redact PDF","hash-redact-pdf",{"id":2017,"name":2018,"slug":2019,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"687a7471533c9f26b9439e29","#Sign PDF","hash-sign-pdf",{"id":2021,"name":2022,"slug":2023,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"687a9b7d533c9f26b9439e8d","#Digital Signature","hash-digital-signature",{"id":2025,"name":2026,"slug":2027,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"68e94c0a533c9f26b943a723","#Delete File","hash-delete-file",{"id":2029,"name":2030,"slug":2031,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"69eb8570533c9f26b943a9bd","#TDM Reserve PDF","hash-tdm-reserve-pdf",{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},"https:\u002F\u002Fcms.pdfrest.com\u002Fpdf-security-hub\u002F","\n\n\n\n\nProtect Sensitive Data and Control Access to PDF Documents\n\n\n\npdfRest's PDF Security API provides a robust toolkit for safeguarding sensitive information and controlling access to your PDF documents. With a wide range of features, you can implement comprehensive security measures to protect your valuable content from unauthorized access, modification, or distribution. Whether you need to redact PII, restrict editing permissions, add watermarks, prevent AI scraping, or implement advanced enc","PDF Security - Encrypt, Restrict, Watermark to Secure PDF Files | pdfRest","Learn how to secure and protect your PDF documents with a safe and reliable API service from pdfRest. Encrypt with password-protection, restrict access rights, & add watermarks.",{"id":2039,"uuid":2040,"title":2041,"slug":2042,"html":2043,"comment_id":2044,"feature_image":48,"featured":284,"visibility":1257,"created_at":2045,"updated_at":2046,"published_at":2047,"custom_excerpt":48,"codeinjection_head":2048,"codeinjection_foot":48,"custom_template":48,"canonical_url":2049,"authors":2050,"tags":2052,"primary_author":2106,"primary_tag":2107,"url":2108,"excerpt":2109,"reading_time":5,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":2110,"meta_description":2111,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65ae9a86656af204db4b12e4","d10e4ac1-b516-4977-941d-38e2fde9c5af","Platform Integrations","platform-integrations-hub","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Streamline PDF Workflows with pdfRest and Low-Code \u002F No-Code Solutions\u003C\u002Fh2>\n\u003Cp>pdfRest seamlessly integrates with popular low-code and no-code platforms, empowering you to create secure and efficient PDF document workflows without extensive coding. This approach enables rapid development, deployment, and scaling to meet your evolving needs.\u003C\u002Fp>\n\n\u003Ch2>Leverage Powerful Integrations\u003C\u002Fh2>\n\u003Cp>pdfRest supports integration with a wide range of third-party services, including low-code and no-code solutions like:\u003C\u002Fp>\n\n\u003Cul>\n\u003Cli>\u003Cstrong>\u003Ca href='https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fintegrate-with-microsoft-power-automate\u002F'>Microsoft Power Automate\u003C\u002Fa>:\u003C\u002Fstrong> Automate tasks and build workflows for PDF processing within the Microsoft ecosystem.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href='https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fintegrate-pdfrest-with-salesforce-apex-code\u002F'>Salesforce Apex\u003C\u002Fa>:\u003C\u002Fstrong> Extend Salesforce functionality and integrate pdfRest's PDF processing capabilities directly into your CRM.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href='https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fintegrate-pdfrest-with-zapier-automation-google-drive-storage\u002F'>Zapier\u003C\u002Fa>:\u003C\u002Fstrong> Connect pdfRest with thousands of other applications to create powerful automated workflows.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href='https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fintegrate-pdfrest-with-bubble-to-automate-pdf-workflows'>Bubble.io\u003C\u002Fa>:\u003C\u002Fstrong> Build user-friendly web applications with drag-and-drop functionality and integrate pdfRest for seamless PDF processing.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href='https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fintegrate-pdfrest-with-make-automation-google-drive-storage\u002F'>Make.com\u003C\u002Fa>:\u003C\u002Fstrong> Automate complex workflows connecting pdfRest with various applications and data sources for a unified solution.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href='https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fintegrate-pdfrest-with-n8n-automation-and-dropbox-storage\u002F'>n8n.io\u003C\u002Fa>:\u003C\u002Fstrong> Create flexible and powerful low-code workflows to connect pdfRest with over 400+ applications and services.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href='https:\u002F\u002Fgithub.com\u002Fdatalogics\u002Fpdf-rest-api-samples\u002Ftree\u002Fmain\u002FGoogle%20Apps%20Script'>Google Apps Script\u003C\u002Fa>:\u003C\u002Fstrong> Leverage Google Apps Script for custom scripting and integrate pdfRest's APIs for powerful PDF automation within Google Workspace.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>And more!\u003C\u002Fstrong> Easily integrate pdfRest with any service that can send out API Calls as standard http requests.\u003C\u002Fp>\n\u003C\u002Ful>\n\n\n\u003Cp>Unlock the power of low-code\u002Fno-code development and pdfRest's robust PDF processing capabilities. Start building secure and efficient workflows today!\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","651f10e52d4014c9499b21c3","2023-10-05T19:39:17.000+00:00","2026-09-04T17:53:46.000+00:00","2023-10-05T19:40:06.000+00:00","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"CollectionPage\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fplatform-integrations\u002F#collection\",\n      \"name\": \"Platform Integrations\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fplatform-integrations\u002F\",\n      \"isPartOf\": {\n        \"@type\": \"WebSite\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"mainEntity\": {\n        \"@type\": \"ItemList\",\n        \"itemListElement\": [\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 1,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fintegrate-pdfrest-with-bubble-to-automate-pdf-workflows\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 2,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fintegrate-pdfrest-with-make-automation-google-drive-storage\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 3,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fintegrate-pdfrest-with-zapier-automation-google-drive-storage\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 4,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fintegrate-pdfrest-with-n8n-automation-and-dropbox-storage\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 5,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Ftransform-pdf-files-to-markdown-for-dynamic-web-content-seo\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 6,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fdiscover-how-pdfrest-outperforms-free-open-source-pdf-tools\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 7,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fadd-generated-barcodes-to-pdf-forms\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 8,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fgenerating-summaries-of-pdf-documents-using-chatgpt\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 9,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Ftranslate-pdf-text-to-new-language-with-chatgpt\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 10,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fintegrate-with-microsoft-power-automate\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 11,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fintegrate-pdfrest-with-chatgpt-to-generate-pdf-info-summary\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 12,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fintegrate-pdfrest-with-salesforce-apex-code\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 13,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-automate-pdf-digital-signatures-for-secure-and-efficient-workflows-guide\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 14,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-automate-pdf-redaction-for-data-privacy-and-compliance-guide\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 15,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-automate-pdf-to-markdown-conversions-for-content-repurposing-and-llm-training\u002F\"\n          }\n        ]\n      },\n      \"description\": \"Integrate PDF processing workflows with low-code and no-code services using pdfRest API Tools. Connect pdfRest with Power Automate, Salesforce, Bubble.io, & more.\",\n      \"keywords\": \"Apex, Bubble, Integration, Low Code, Make, Microsoft Power Automate, No Code, Power Automate, Salesforce, Workato, Zapier, n8n\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Platform Integrations\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fplatform-integrations\u002F\"\n        }\n      ]\n    }\n  ]\n}","https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fplatform-integrations\u002F",[2051],{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},[2053,2054,2058,2062,2066,2070,2074,2078,2082,2086,2090,2094,2098,2102],{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":2055,"name":2056,"slug":2056,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2057},"65ae9a81656af204db4b0f4f","platform-integrations","https:\u002F\u002Fcms.pdfrest.com\u002Ftag\u002Fplatform-integrations\u002F",{"id":2059,"name":2060,"slug":2061,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e9d","#Apex","hash-apex",{"id":2063,"name":2064,"slug":2065,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e9c","#Integration","hash-integration",{"id":2067,"name":2068,"slug":2069,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0efc","#Low Code","hash-low-code",{"id":2071,"name":2072,"slug":2073,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0efb","#Microsoft Power Automate","hash-microsoft-power-automate",{"id":2075,"name":2076,"slug":2077,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0efd","#No Code","hash-no-code",{"id":2079,"name":2080,"slug":2081,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0efe","#Power Automate","hash-power-automate",{"id":2083,"name":2084,"slug":2085,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e9b","#Salesforce","hash-salesforce",{"id":2087,"name":2088,"slug":2089,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"68b9e104533c9f26b943a1fd","#Zapier","hash-zapier",{"id":2091,"name":2092,"slug":2093,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"68b9d8fd533c9f26b943a1eb","#n8n","hash-n8n",{"id":2095,"name":2096,"slug":2097,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"68bb42e7533c9f26b943a398","#Make","hash-make",{"id":2099,"name":2100,"slug":2101,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"68cad1c0533c9f26b943a4eb","#Bubble","hash-bubble",{"id":2103,"name":2104,"slug":2105,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"68cad1f2533c9f26b943a4f4","#Workato","hash-workato",{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},"https:\u002F\u002Fcms.pdfrest.com\u002Fplatform-integrations-hub\u002F","\n\n\n\n\nStreamline PDF Workflows with pdfRest and Low-Code \u002F No-Code Solutions\n\n\npdfRest seamlessly integrates with popular low-code and no-code platforms, empowering you to create secure and efficient PDF document workflows without extensive coding. This approach enables rapid development, deployment, and scaling to meet your evolving needs.\n\n\n\n\nLeverage Powerful Integrations\n\n\npdfRest supports integration with a wide range of third-party services, including low-code and no-code solutions like:\n\n\n","Platform Integrations for Low-Code, No-Code PDF Processing | pdfRest","Integrate PDF processing workflows with low-code and no-code services using pdfRest API Tools. Connect pdfRest with Power Automate, Salesforce, Bubble.io, & more.",{"id":2113,"uuid":2114,"title":2115,"slug":2116,"html":2117,"comment_id":2118,"feature_image":48,"featured":284,"visibility":1257,"created_at":2119,"updated_at":2120,"published_at":2121,"custom_excerpt":48,"codeinjection_head":2122,"codeinjection_foot":48,"custom_template":48,"canonical_url":2123,"authors":2124,"tags":2126,"primary_author":2192,"primary_tag":2193,"url":2194,"excerpt":2195,"reading_time":5,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":2196,"meta_description":2197,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65ae9a86656af204db4b12da","4748ab16-04dc-4a54-953a-cbbde9b077b1","Prepress Preflight Print","print","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Ensure Flawless Printing with pdfRest's Prepress Automation Solutions\u003C\u002Fh2>\n\u003C!--kg-card-end: html-->\n\u003Cfigure class=\"kg-card kg-embed-card\">\u003Ciframe width=\"200\" height=\"113\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FD938x1ug8XI?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen=\"\" title=\"How to Automate a Print-Ready PDF Solution | pdfRest\">\u003C\u002Fiframe>\u003C\u002Ffigure>\n\u003C!--kg-card-begin: html-->\n\u003Cp>Streamline document preparation and eliminate costly printing errors with pdfRest's powerful suite of prepress and preflight tools tailored for the print industry.\u003C\u002Fp>\n\n\u003Ch2>Optimize Print Workflows and Eliminate Errors\u003C\u002Fh2>\n\u003Cp>In commercial printing, even minor PDF errors can lead to costly reprints and missed deadlines. pdfRest’s prepress tools ensure your documents are print-ready and compliant with industry standards like PDF\u002FX. Our API tools enhance your prepress with color conversions, precisely set boxes (media, crop, trim, bleed, art), and transparency flattening, helping you achieve print-ready PDFs.\u003C\u002Fp>\n\n\u003Ch2>Key Preflight Features for Developers:\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Cstrong>\u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fconvert-to-pdfx\u002F'>Convert to PDF\u002FX API Tool\u003C\u002Fa>:\u003C\u002Fstrong> Achieve the print-ready standards required by printers worldwide.\n\u003Cli>\u003Cstrong>\u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fflatten-transparencies\u002F'>Flatten Transparencies API Tool\u003C\u002Fa>:\u003C\u002Fstrong> Prevent unexpected print results by flattening transparency layers.\n\u003Cli>\u003Cstrong>\u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fconvert-pdf-colors\u002F'>Convert PDF Colors API Tool\u003C\u002Fa>:\u003C\u002Fstrong> Ensure accurate color representation by converting RGB to CMYK.\n\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Frasterize-pdf\u002F'>Rasterize PDF API Tool\u003C\u002Fa>:\u003C\u002Fstrong> Flatten PDF pages to raster images for simplified printing.\n\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fset-page-boxes\u002F'>Set Page Boxes API Tool\u003C\u002Fa>:\u003C\u002Fstrong> Set MediaBox, CropBox, BleedBox, TrimBox, and ArtBox.\n\u003C\u002Fli>\n\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fpdf-to-postscript\u002F'>PDF to PostScript API Tool\u003C\u002Fa>:\u003C\u002Fstrong> Convert PDF to PostScript for print production workflows.\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2>Why Choose pdfRest for Prepress Solutions?\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Cstrong>Customizable Automations:\u003C\u002Fstrong> Combine tools for transparency flattening and PDF optimization, allowing you to tailor workflows to your needs.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Industry Standards Compliance:\u003C\u002Fstrong> Our tools prepare files to meet PDF\u002FX and other complex commercial printing requirements.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Developer-Friendly API:\u003C\u002Fstrong> Easily integrate pdfRest’s API into your systems with comprehensive documentation and support.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Cost Reduction & Efficiency:\u003C\u002Fstrong> Automate the prepress process to avoid reprints and ensure print-ready PDFs from the start.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Seamless Color Management:\u003C\u002Fstrong> Convert RGB to CMYK for consistent color accuracy across all printed materials.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Quality Adobe Technology:\u003C\u002Fstrong> Powered by Adobe PDF Library and Adobe PDF Converter, technologies that power Acrobat and Distiller.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C!--kg-card-end: html-->\n","651d77242d4014c9499b20b6","2023-10-04T14:31:00.000+00:00","2026-09-04T19:39:01.000+00:00","2023-10-04T15:46:27.000+00:00","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"CollectionPage\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fprepress-preflight-print\u002F#collection\",\n      \"name\": \"Prepress Preflight Print\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fprepress-preflight-print\u002F\",\n      \"isPartOf\": {\n        \"@type\": \"WebSite\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"mainEntity\": {\n        \"@type\": \"ItemList\",\n        \"itemListElement\": [\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 1,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fdiscover-how-pdfrest-outperforms-free-open-source-pdf-tools\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 2,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fresize-pdf-pages-for-consistent-archiving\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 3,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fcrop-pdf-files-to-optimize-scanned-documents\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 4,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fremove-white-space-from-pdf-files-for-professional-printing\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 5,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fflatten-pdf-pages-to-raster-images-for-seamless-printing\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 6,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fautomate-pdf-text-insertion-for-variable-data-printing\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 7,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fconvert-color-pdf-to-black-and-white-for-print\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 8,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fchoose-the-right-pdf-x-version-for-your-print-needs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 9,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fautomate-pdf-prepress-for-direct-mailing-jobs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 10,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fconvert-pdf-files-from-rgb-to-cmyk-for-print\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 11,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fstreamline-document-color-management-for-consistent-printing\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 12,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fconverting-pdf-files-to-grayscale\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 13,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fconvert-pdf-to-pdfx-to-optimize-for-print\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 14,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fflattening-pdf-transparencies-while-retaining-color-fidelity\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 15,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fflatten-transparencies-for-improved-print-performance\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 16,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Frender-pdf-pages-to-graphic-file-formats-with-accurate-color-preservation\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 17,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fmerge-multiple-types-of-files-together\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 18,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-colors-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 19,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-colors-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 20,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-colors-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 21,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-colors-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 22,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-colors-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 23,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-colors-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 24,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-files-from-color-to-black-and-white-grayscale-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 25,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-files-from-color-to-black-and-white-grayscale-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 26,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-files-from-color-to-black-and-white-grayscale-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 27,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-files-from-color-to-black-and-white-grayscale-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 28,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-files-from-color-to-black-and-white-grayscale-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 29,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-files-from-color-to-black-and-white-grayscale-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 30,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-files-from-rgb-to-cmyk-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 31,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-files-from-rgb-to-cmyk-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 32,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-files-from-rgb-to-cmyk-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 33,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-files-from-rgb-to-cmyk-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 34,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-files-from-rgb-to-cmyk-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 35,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-files-from-rgb-to-cmyk-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 36,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-pdf-x-in-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 37,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-pdfx-with-net-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 38,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-pdf-x-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 39,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-pdfx-with-javascript\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 40,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-pdfx-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 41,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-pdfx-with-python-2\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 42,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-crop-pdf-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 43,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-crop-pdf-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 44,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-crop-pdf-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 45,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-crop-pdf-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 46,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-crop-pdf-with-php-code\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 47,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-crop-pdf-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 48,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-flatten-pdf-transparencies-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 49,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-flatten-pdf-transparencies-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 50,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-flatten-pdf-transparencies-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 51,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-flatten-pdf-transparencies-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 52,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-flatten-pdf-transparencies-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 53,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-flatten-pdf-transparencies-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 54,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-programmatically-convert-pdf-to-pdf-x-for-print-ready-documents\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 55,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-programmatically-crop-and-resize-pdf-pages-guide\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 56,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-rasterize-pdf-files-in-net-with-c\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 57,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-rasterize-pdf-files-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 58,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-rasterize-pdf-files-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 59,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-rasterize-pdf-files-with-javascript-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 60,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-rasterize-pdf-files-with-php\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 61,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-rasterize-pdf-files-with-python\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 62,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-resize-pdf-pages-with-c-code-in-net\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 63,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-resize-pdf-pages-with-curl\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 64,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-resize-pdf-pages-with-java\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 65,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-resize-pdf-pages-with-javascript-code-in-nodejs\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 66,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-resize-pdf-pages-with-php-code\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 67,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-resize-pdf-pages-with-python\u002F\"\n          }\n        ]\n      },\n      \"description\": \"Streamline your document preparation for print with pdfRest's prepress and preflight solutions, including preflight checks and optimizations.\",\n      \"keywords\": \"Black & White, CMYK, Color Management, Convert PDF Colors, Convert to PDF\u002FX, Flatten Transparencies, PDF Refrying, PDF to PostScript, PostScript, Prepress, Print, RGB, Set Page Boxes, Translucency, Transparency\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Prepress Preflight Print\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fprepress-preflight-print\u002F\"\n        }\n      ]\n    }\n  ]\n}","https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fprepress-preflight-print\u002F",[2125],{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},[2127,2128,2132,2136,2140,2144,2148,2152,2156,2160,2164,2168,2172,2176,2180,2184,2188],{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":2129,"name":2130,"slug":2130,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2131},"65ae9a81656af204db4b0f43","prepress-preflight-print","https:\u002F\u002Fcms.pdfrest.com\u002Ftag\u002Fprepress-preflight-print\u002F",{"id":2133,"name":2134,"slug":2135,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e1d","#PostScript","hash-postscript",{"id":2137,"name":2138,"slug":2139,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e2d","#Print","hash-print",{"id":2141,"name":2142,"slug":2143,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e56","#Translucency","hash-translucency",{"id":2145,"name":2146,"slug":2147,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e2c","#Transparency","hash-transparency",{"id":2149,"name":2150,"slug":2151,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e80","#Color Management","hash-color-management",{"id":2153,"name":2154,"slug":2155,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0f61","#Prepress","hash-prepress",{"id":2157,"name":2158,"slug":2159,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0f5a","#Convert to PDF\u002FX","hash-convert-to-pdfx",{"id":2161,"name":2162,"slug":2163,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"66759dfb533c9f26b9437c06","#Convert PDF Colors","hash-convert-pdf-colors",{"id":2165,"name":2166,"slug":2167,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"670ee3cf533c9f26b943876d","#CMYK","hash-cmyk-2",{"id":2169,"name":2170,"slug":2171,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"670ee1fc533c9f26b9438759","#RGB","hash-rgb",{"id":2173,"name":2174,"slug":2175,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e2b","#Flatten Transparencies","hash-flatten-transparencies",{"id":2177,"name":2178,"slug":2179,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"671293b5533c9f26b9438922","#Black & White","hash-black-white",{"id":2181,"name":2182,"slug":2183,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"68373fba533c9f26b943992d","#Set Page Boxes","hash-set-page-boxes",{"id":2185,"name":2186,"slug":2187,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"6a9a5143d1b70dd2e2978ce2","#PDF to PostScript","hash-pdf-to-postscript",{"id":2189,"name":2190,"slug":2191,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"6a999118d1b70dd2e2978a8c","#PDF Refrying","hash-pdf-refrying",{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},"https:\u002F\u002Fcms.pdfrest.com\u002Fprint\u002F","\n\n\n\n\nEnsure Flawless Printing with pdfRest's Prepress Automation Solutions\n\n\n\n\n\nStreamline document preparation and eliminate costly printing errors with pdfRest's powerful suite of prepress and preflight tools tailored for the print industry.\n\n\n\n\nOptimize Print Workflows and Eliminate Errors\n\n\nIn commercial printing, even minor PDF errors can lead to costly reprints and missed deadlines. pdfRest’s prepress tools ensure your documents are print-ready and compliant with industry standards like PD","PDF Prepress & Preflight Print API Tools for Developers | pdfRest","Streamline your document preparation for print with pdfRest's prepress and preflight solutions, including preflight checks and optimizations.",{"id":2199,"uuid":2200,"title":2201,"slug":2202,"html":2203,"comment_id":2204,"feature_image":48,"featured":284,"visibility":1257,"created_at":2205,"updated_at":2206,"published_at":2207,"custom_excerpt":48,"codeinjection_head":2208,"codeinjection_foot":48,"custom_template":48,"canonical_url":2209,"authors":2210,"tags":2212,"primary_author":2242,"primary_tag":2243,"url":2244,"excerpt":2245,"reading_time":5,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":2246,"meta_description":2247,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65ae9a86656af204db4b134e","1daffe00-c3b1-41fa-82b8-e29cee3adc18","Programming Languages","programming-languages-hub","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Process PDFs with Your Favorite Programming Language\u003C\u002Fh2>\n\n\u003Cp>pdfRest empowers you to seamlessly integrate its robust PDF processing capabilities into your existing workflows, regardless of your preferred programming language. Whether you're using Python, JavaScript, C#, Java, PHP, or something else, pdfRest provides the tools and resources to get started quickly and efficiently.\u003C\u002Fp>\n\n\n\u003Ch2>Robust Code Examples for PDF Solutions\u003C\u002Fh2>\n\n\u003Cp>pdfRest's \u003Ca href='https:\u002F\u002Fgithub.com\u002Fdatalogics\u002Fpdf-rest-api-samples'>GitHub Code Sample Repository\u003C\u002Fa> serves as a valuable resource for developers seeking further guidance on pdfRest integration. This repository offers a wealth of code samples and examples across various programming languages, providing practical illustrations of how to implement pdfRest's functionalities.\u003C\u002Fp>\n\n\u003Ch2>Additional pdfRest Developer Resources\u003C\u002Fh2>\n\n\u003Cul>\n  \u003Cli>\u003Cstrong>API Lab:\u003C\u002Fstrong> Test and validate with the \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F'>API Lab\u003C\u002Fa> web interface. Process files online and automatically generate custom code.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Language-specific tutorials:\u003C\u002Fstrong> Find the right \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F'>tutorial\u003C\u002Fa> to learn how to integrate pdfRest with your chosen language for a smooth development experience.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>API Reference Guide:\u003C\u002Fstrong> Use the \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fdocumentation'>API Reference Guide\u003C\u002Fa> to look up endpoints and understand how to configure pdfRest's API for specific tasks.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Cp>Start integrating pdfRest with your chosen programming language today and unlock a world of possibilities for your PDF processing needs!\u003C\u002Fp>\n\n\u003C!--kg-card-end: html-->\n","657ca2d22d4014c9499b3921","2023-12-15T19:02:42.000+00:00","2026-09-04T17:53:42.000+00:00","2023-12-15T19:04:28.000+00:00","{\"@context\":\"https:\u002F\u002Fschema.org\",\"@graph\":[{\"@type\":\"CollectionPage\",\"@id\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fprogramming-languages\u002F#collection\",\"name\":\"Programming Languages\",\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fprogramming-languages\u002F\",\"isPartOf\":{\"@type\":\"WebSite\",\"name\":\"pdfRest\",\"url\":\"https:\u002F\u002Fpdfrest.com\u002F\"},\"mainEntity\":{\"@type\":\"ItemList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fdiscover-how-pdfrest-outperforms-free-open-source-pdf-tools\u002F\"},{\"@type\":\"ListItem\",\"position\":2,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fgenerating-summaries-of-pdf-documents-using-chatgpt\u002F\"},{\"@type\":\"ListItem\",\"position\":3,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Ftranslate-pdf-text-to-new-language-with-chatgpt\u002F\"},{\"@type\":\"ListItem\",\"position\":4,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fintegrate-pdfrest-with-chatgpt-to-generate-pdf-info-summary\u002F\"},{\"@type\":\"ListItem\",\"position\":5,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-attachments-to-pdf-files\u002F\"},{\"@type\":\"ListItem\",\"position\":6,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-attachments-to-pdf-files-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":7,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-attachments-to-pdf-files-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":8,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-attachments-to-pdf-files-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":9,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-attachments-to-pdf-files-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":10,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-images-to-pdf-files-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":11,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-images-to-pdf-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":12,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-images-to-pdf-files-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":13,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-images-to-pdf-files-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":14,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-images-to-pdf-files-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":15,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-images-to-pdf-files-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":16,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-tables-to-pdf-files-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":17,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-tables-to-pdf-files-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":18,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-tables-to-pdf-files-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":19,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-tables-to-pdf-files-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":20,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-tables-to-pdf-files-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":21,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-tables-to-pdf-files-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":22,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-pdf-files-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":23,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-pdf-files-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":24,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-pdf-files-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":25,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-pdf-files-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":26,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-a-pdf-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":27,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-pdf-files-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":28,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":29,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":30,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":31,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":32,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":33,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":34,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-apply-tdm-reservations-to-pdf-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":35,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-apply-tdm-reservations-to-pdf-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":36,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-apply-tdm-reservations-to-pdf-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":37,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-apply-tdm-reservations-to-pdf-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":38,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-apply-tdm-reservations-to-pdf-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":39,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-apply-tdm-reservations-to-pdf-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":40,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-change-pdf-password-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":41,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-change-pdf-password-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":42,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-change-pdf-password-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":43,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-change-pdf-password-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":44,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-change-pdf-password-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":45,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-change-pdf-password-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":46,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-check-pdf-conditions-and-metadata-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":47,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-check-pdf-conditions-and-metadata-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":48,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-check-pdf-conditions-and-metadata-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":49,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-check-pdf-conditions-and-metadata-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":50,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-check-pdf-conditions-and-metadata-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":51,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-check-pdf-conditions-and-metadata-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":52,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-compress-pdf-files-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":53,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-compress-pdf-files-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":54,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-compress-pdf-files-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":55,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-compress-pdf-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":56,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-compress-pdf-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":57,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-compress-pdf-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":58,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-bmp-to-pdf-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":59,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-bmp-to-pdf-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":60,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-bmp-to-pdf-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":61,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-bmp-to-pdf-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":62,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-bmp-to-pdf-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":63,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-csv-to-pdf-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":64,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-csv-to-pdf-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":65,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-csv-to-pdf-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":66,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-csv-to-pdf-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":67,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-csv-to-pdf-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":68,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-csv-to-pdf-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":69,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-html-to-pdf-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":70,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-html-to-pdf-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":71,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-html-to-pdf-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":72,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-html-to-pdf-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":73,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-html-to-pdf-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":74,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-html-to-pdf-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":75,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-jpg-to-pdf-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":76,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-jpg-to-pdf-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":77,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-jpg-to-pdf-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":78,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-jpg-to-pdf-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":79,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-jpg-to-pdf-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":80,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-jpg-to-pdf-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":81,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-json-to-pdf-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":82,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-json-to-pdf-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":83,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-json-to-pdf-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":84,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-json-to-pdf-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":85,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-json-to-pdf-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":86,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-json-to-pdf-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":87,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-markdown-to-pdf-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":88,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-markdown-to-pdf-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":89,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-markdown-to-pdf-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":90,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-markdown-to-pdf-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":91,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-markdown-to-pdf-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":92,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-markdown-to-pdf-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":93,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-excel-to-pdf-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":94,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-excel-to-pdf-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":95,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-excel-to-pdf-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":96,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-excel-to-pdf-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":97,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-excel-to-pdf-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":98,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-excel-to-pdf-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":99,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-powerpoint-to-pdf-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":100,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-powerpoint-to-pdf-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":101,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-powerpoint-to-pdf-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":102,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-powerpoint-to-pdf-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":103,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-powerpoint-to-pdf-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":104,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-powerpoint-to-pdf-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":105,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-word-to-pdf-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":106,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-word-to-pdf-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":107,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-word-to-pdf-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":108,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-word-to-pdf-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":109,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-microsoft-word-to-pdf-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":110,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-word-to-pdf-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":111,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-colors-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":112,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-colors-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":113,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-colors-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":114,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-colors-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":115,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-colors-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":116,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-colors-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":117,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-files-from-color-to-black-and-white-grayscale-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":118,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-files-from-color-to-black-and-white-grayscale-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":119,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-files-from-color-to-black-and-white-grayscale-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":120,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-files-from-color-to-black-and-white-grayscale-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":121,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-files-from-color-to-black-and-white-grayscale-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":122,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-files-from-color-to-black-and-white-grayscale-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":123,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-files-from-rgb-to-cmyk-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":124,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-files-from-rgb-to-cmyk-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":125,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-files-from-rgb-to-cmyk-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":126,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-files-from-rgb-to-cmyk-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":127,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-files-from-rgb-to-cmyk-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":128,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-files-from-rgb-to-cmyk-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":129,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-forms-from-xfa-to-acroforms-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":130,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-forms-from-xfa-to-acroforms-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":131,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-forms-from-xfa-to-acroforms-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":132,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-forms-from-xfa-to-acroforms-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":133,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-forms-from-xfa-to-acroforms-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":134,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-forms-from-xfa-to-acroforms-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":135,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-bmp-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":136,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-bmp-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":137,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-bmp-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":138,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-bmp-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":139,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-bmp-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":140,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-bmp-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":141,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-excel-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":142,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-excel-with-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":143,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-excel-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":144,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-excel-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":145,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-excel-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":146,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-excel-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":147,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-jpg-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":148,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-jpg-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":149,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-jpg-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":150,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-jpg-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":151,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-jpg-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":152,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-jpg-image-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":153,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-markdown-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":154,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-markdown-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":155,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-markdown-with-java-code\u002F\"},{\"@type\":\"ListItem\",\"position\":156,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-markdown-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":157,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-markdown-with-php-code\u002F\"},{\"@type\":\"ListItem\",\"position\":158,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-markdown-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":159,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-pdf-a-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":160,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-pdf-a-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":161,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-pdf-a-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":162,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-pdf-a-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":163,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-pdf-a-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":164,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-pdfa-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":165,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-pdf-x-in-java\u002F\"},{\"@type\":\"ListItem\",\"position\":166,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-pdfx-with-net-c\u002F\"},{\"@type\":\"ListItem\",\"position\":167,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-pdf-x-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":168,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-pdfx-with-javascript\u002F\"},{\"@type\":\"ListItem\",\"position\":169,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-pdfx-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":170,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-pdfx-with-python-2\u002F\"},{\"@type\":\"ListItem\",\"position\":171,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-png-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":172,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-png-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":173,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-png-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":174,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-png-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":175,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-png-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":176,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-png-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":177,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-powerpoint-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":178,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-powerpoint-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":179,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-powerpoint-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":180,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-powerpoint-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":181,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-powerpoint-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":182,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-powerpoint-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":183,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-tiff-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":184,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-tiff-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":185,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-tiff-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":186,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-tiff-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":187,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-tiff-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":188,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-tiff-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":189,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-word-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":190,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-word-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":191,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-word-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":192,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-word-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":193,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-word-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":194,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-pdf-to-word-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":195,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-plain-text-to-pdf-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":196,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-plain-text-to-pdf-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":197,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-plain-text-to-pdf-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":198,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-plain-text-to-pdf-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":199,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-plain-text-to-pdf-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":200,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-plain-text-to-pdf-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":201,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-png-to-pdf-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":202,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-png-to-pdf-in-php\u002F\"},{\"@type\":\"ListItem\",\"position\":203,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-png-to-pdf-in-python\u002F\"},{\"@type\":\"ListItem\",\"position\":204,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-png-to-pdf-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":205,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-png-to-pdf-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":206,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-tiff-to-pdf-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":207,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-tiff-to-pdf-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":208,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-tiff-to-pdf-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":209,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-tiff-to-pdf-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":210,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-tiff-to-pdf-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":211,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-xml-to-pdf-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":212,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-xml-to-pdf-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":213,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-xml-to-pdf-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":214,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-xml-to-pdf-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":215,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-xml-to-pdf-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":216,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-xml-to-pdf-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":217,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-create-a-blank-pdf-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":218,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-create-a-blank-pdf-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":219,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-create-a-blank-pdf-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":220,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-create-a-blank-pdf-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":221,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-create-a-blank-pdf-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":222,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-create-a-blank-pdf-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":223,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-crop-pdf-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":224,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-crop-pdf-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":225,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-crop-pdf-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":226,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-crop-pdf-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":227,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-crop-pdf-with-php-code\u002F\"},{\"@type\":\"ListItem\",\"position\":228,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-crop-pdf-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":229,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-delete-files-on-demand-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":230,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-delete-files-on-demand-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":231,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-delete-files-on-demand-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":232,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-delete-files-on-demand-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":233,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-delete-files-on-demand-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":234,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-delete-files-on-demand-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":235,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-delete-pages-from-pdf-files-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":236,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-delete-pages-from-pdf-files-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":237,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-delete-pages-from-pdf-files-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":238,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-delete-pages-from-pdf-files-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":239,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-delete-pages-from-pdf-files-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":240,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-digitally-sign-pdf-files-in-net-with-c-code\u002F\"},{\"@type\":\"ListItem\",\"position\":241,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-digitally-sign-pdf-files-with-curl-code\u002F\"},{\"@type\":\"ListItem\",\"position\":242,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-digitally-sign-pdf-files-with-java-code\u002F\"},{\"@type\":\"ListItem\",\"position\":243,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-digitally-sign-pdf-files-with-javascript-code-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":244,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-digitally-sign-pdf-files-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":245,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-digitally-sign-pdf-files-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":246,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-encrypt-pdf-files-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":247,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-encrypt-pdf-files-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":248,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-encrypt-pdf-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":249,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-encrypt-pdf-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":250,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-encrypt-pdf-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":251,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-encrypt-pdf-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":252,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-export-pdf-form-data-with-dot-net-c-sharp\u002F\"},{\"@type\":\"ListItem\",\"position\":253,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-export-pdf-form-data-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":254,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-export-pdf-form-data-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":255,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-export-pdf-form-data-with-javascript\u002F\"},{\"@type\":\"ListItem\",\"position\":256,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-export-pdf-form-data-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":257,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-export-pdf-form-data-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":258,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-images-from-pdf-files-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":259,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-images-from-pdf-files-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":260,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-images-from-pdf-files-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":261,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-images-from-pdf-files-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":262,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-images-from-pdf-files-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":263,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-images-from-pdf-files-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":264,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-pages-from-pdf-files-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":265,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-pages-from-pdf-files-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":266,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-pages-from-pdf-files-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":267,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-pages-from-pdf-files-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":268,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-pages-from-pdf-files-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":269,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-pages-from-pdf-files-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":270,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-pdf-text-with-dot-net-c-sharp\u002F\"},{\"@type\":\"ListItem\",\"position\":271,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-pdf-text-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":272,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-pdf-text-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":273,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-pdf-text-with-javascript\u002F\"},{\"@type\":\"ListItem\",\"position\":274,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-pdf-text-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":275,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-extract-pdf-text-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":276,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-flatten-annotations-in-pdf-files-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":277,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-flatten-annotations-in-pdf-files-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":278,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-flatten-annotations-in-pdf-files-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":279,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-flatten-annotations-in-pdf-files-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":280,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-flatten-annotations-in-pdf-files-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":281,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-flatten-layers-in-pdf-files-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":282,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-flatten-layers-of-a-pdf-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":283,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-flatten-pdf-forms-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":284,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-flatten-pdf-forms-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":285,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-flatten-pdf-forms-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":286,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-flatten-pdf-forms-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":287,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-flatten-pdf-forms-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":288,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-flatten-pdf-forms-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":289,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-flatten-pdf-layers-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":290,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-flatten-pdf-transparencies-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":291,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-flatten-pdf-transparencies-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":292,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-flatten-pdf-transparencies-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":293,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-flatten-pdf-transparencies-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":294,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-flatten-pdf-transparencies-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":295,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-flatten-pdf-transparencies-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":296,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-import-data-to-pdf-forms-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":297,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-import-data-to-pdf-forms-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":298,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-import-data-to-pdf-forms-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":299,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-import-data-to-pdf-forms-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":300,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-import-data-to-pdf-forms-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":301,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-import-data-to-pdf-forms-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":302,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-linearize-pdf-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":303,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-linearize-pdf-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":304,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-linearize-pdf-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":305,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-linearize-pdf-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":306,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-linearize-pdf-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":307,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-linearize-pdf-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":308,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-merge-different-file-formats-together-as-a-pdf-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":309,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-merge-different-file-formats-together-as-a-pdf-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":310,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-merge-pdfs-with-dot-net-c-sharp\u002F\"},{\"@type\":\"ListItem\",\"position\":311,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-merge-pdf-files-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":312,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-merge-pdf-files-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":313,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-merge-pdf-files-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":314,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-merge-pdfs-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":315,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-merge-pdf-documents-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":316,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-poll-for-api-request-status-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":317,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-poll-for-api-request-status-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":318,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-rasterize-pdf-files-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":319,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-rasterize-pdf-files-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":320,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-rasterize-pdf-files-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":321,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-rasterize-pdf-files-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":322,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-rasterize-pdf-files-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":323,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-rasterize-pdf-files-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":324,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-redact-pdf-text-in-net-with-c-code\u002F\"},{\"@type\":\"ListItem\",\"position\":325,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-redact-pdf-text-with-curl-code\u002F\"},{\"@type\":\"ListItem\",\"position\":326,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-redact-pdf-text-with-java-code\u002F\"},{\"@type\":\"ListItem\",\"position\":327,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-redact-pdf-text-with-javascript-code-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":328,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-redact-pdf-text-with-php-code\u002F\"},{\"@type\":\"ListItem\",\"position\":329,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-redact-pdf-text-with-python-code\u002F\"},{\"@type\":\"ListItem\",\"position\":330,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-remove-pdf-password-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":331,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-remove-pdf-password-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":332,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-remove-pdf-restrictions-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":333,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-remove-pdf-restrictions-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":334,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-remove-pdf-restrictions-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":335,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-remove-pdf-restrictions-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":336,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-remove-pdf-restrictions-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":337,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-remove-pdf-restrictions-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":338,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-resize-pdf-pages-with-c-code-in-net\u002F\"},{\"@type\":\"ListItem\",\"position\":339,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-resize-pdf-pages-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":340,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-resize-pdf-pages-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":341,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-resize-pdf-pages-with-javascript-code-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":342,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-resize-pdf-pages-with-php-code\u002F\"},{\"@type\":\"ListItem\",\"position\":343,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-resize-pdf-pages-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":344,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-restrict-pdf-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":345,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-restrict-pdf-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":346,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-restrict-pdf-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":347,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-restrict-pdf-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":348,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-restrict-pdf-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":349,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-restrict-pdf-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":350,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-split-pdf-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":351,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-split-pdf-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":352,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-split-pdf-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":353,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-split-pdf-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":354,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-split-pdf-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":355,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-split-pdf-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":356,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-summarize-pdf-text-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":357,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-summarize-pdf-text-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":358,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-summarize-pdf-text-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":359,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-summarize-pdf-text-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":360,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-summarize-pdf-text-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":361,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-summarize-pdf-text-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":362,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-translate-pdf-text-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":363,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-translate-pdf-text-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":364,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-translate-pdf-text-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":365,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-translate-pdf-text-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":366,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-translate-pdf-text-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":367,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-translate-pdf-text-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":368,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-unzip-files-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":369,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-unzip-files-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":370,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-unzip-files-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":371,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-unzip-files-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":372,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-unzip-files-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":373,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-unzip-files-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":374,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-upload-a-single-binary-file-to-pdfrest-in-net-with-c-2\u002F\"},{\"@type\":\"ListItem\",\"position\":375,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-upload-a-single-binary-file-to-pdfrest-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":376,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-upload-a-single-binary-file-to-pdfrest-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":377,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-upload-multiple-files-to-pdfrest-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":378,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-upload-multiple-files-to-pdfrest-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":379,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-use-ocr-to-extract-text-from-pdf-images-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":380,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-use-ocr-to-extract-text-from-pdf-images-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":381,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-use-ocr-to-extract-text-from-pdf-images-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":382,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-use-ocr-to-extract-text-from-pdf-images-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":383,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-use-ocr-to-extract-text-from-pdf-images-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":384,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-use-ocr-to-extract-text-from-pdf-images-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":385,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-use-ocr-to-make-pdf-image-text-searchable-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":386,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-use-ocr-to-make-pdf-image-text-searchable-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":387,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-use-ocr-to-make-pdf-image-text-searchable-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":388,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-use-ocr-to-make-pdf-image-text-searchable-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":389,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-use-ocr-to-make-pdf-image-text-searchable-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":390,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-use-ocr-to-make-pdf-image-text-searchable-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":391,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-validate-pdf-a-conformance-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":392,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-validate-pdf-a-conformance-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":393,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-validate-pdf-a-conformance-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":394,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-validate-pdf-a-conformance-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":395,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-validate-pdf-a-conformance-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":396,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-validate-pdf-a-conformance-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":397,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-watermark-pdf-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":398,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-watermark-pdf-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":399,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-watermark-pdf-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":400,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-watermark-pdf-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":401,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-watermark-pdf-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":402,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-watermark-pdf-with-python\u002F\"},{\"@type\":\"ListItem\",\"position\":403,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-zip-files-in-net-with-c\u002F\"},{\"@type\":\"ListItem\",\"position\":404,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-zip-files-with-curl\u002F\"},{\"@type\":\"ListItem\",\"position\":405,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-zip-files-with-java\u002F\"},{\"@type\":\"ListItem\",\"position\":406,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-zip-files-with-javascript-in-nodejs\u002F\"},{\"@type\":\"ListItem\",\"position\":407,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-zip-files-with-php\u002F\"},{\"@type\":\"ListItem\",\"position\":408,\"url\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-zip-files-with-python\u002F\"}]},\"description\":\"Integrate powerful PDF processing capabilities into any development project. Discover code examples for a wide range of programming languages.\",\"keywords\":\".NET, Java, JavaScript, PHP, Python, cURL\"},{\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Learning\",\"item\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Programming Languages\",\"item\":\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fprogramming-languages\u002F\"}]}]}","https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fprogramming-languages\u002F",[2211],{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},[2213,2214,2218,2222,2226,2230,2234,2238],{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":2215,"name":2216,"slug":2216,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2217},"65ae9a81656af204db4b0f99","programming-languages","https:\u002F\u002Fcms.pdfrest.com\u002Ftag\u002Fprogramming-languages\u002F",{"id":2219,"name":2220,"slug":2221,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0f8d","#Python","hash-python",{"id":2223,"name":2224,"slug":2225,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0f8e","#JavaScript","hash-javascript",{"id":2227,"name":2228,"slug":2229,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0f8c","#PHP","hash-php",{"id":2231,"name":2232,"slug":2233,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0f8f","#.NET","hash-net",{"id":2235,"name":2236,"slug":2237,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65d8df4b533c9f26b9436590","#Java","hash-java",{"id":2239,"name":2240,"slug":2241,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65d8e139533c9f26b94365a7","#cURL","hash-curl",{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},"https:\u002F\u002Fcms.pdfrest.com\u002Fprogramming-languages-hub\u002F","\n\n\n\n\nProcess PDFs with Your Favorite Programming Language\n\n\n\npdfRest empowers you to seamlessly integrate its robust PDF processing capabilities into your existing workflows, regardless of your preferred programming language. Whether you're using Python, JavaScript, C#, Java, PHP, or something else, pdfRest provides the tools and resources to get started quickly and efficiently.\n\n\n\n\n\nRobust Code Examples for PDF Solutions\n\n\n\npdfRest's GitHub Code Sample Repository serves as a valuable resource f","Integrate PDF Processing with Any Programming Language, JavaScript, Python, PHP, Java, C# | pdfRest","Integrate powerful PDF processing capabilities into any development project. Discover code examples for a wide range of programming languages.",{"id":2249,"uuid":2250,"title":2251,"slug":2252,"html":2253,"comment_id":2254,"feature_image":48,"featured":284,"visibility":1257,"created_at":2255,"updated_at":2256,"published_at":2257,"custom_excerpt":48,"codeinjection_head":2258,"codeinjection_foot":48,"custom_template":48,"canonical_url":2259,"authors":2260,"tags":2262,"primary_author":2284,"primary_tag":2285,"url":2286,"excerpt":2287,"reading_time":5,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":2288,"meta_description":2289,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65ae9a86656af204db4b12e5","1a0663f3-8c0f-49e3-ae2c-283275646286","Self-Hosting","self-hosting-hub","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Self-Host pdfRest API for Enhanced Control and Security\u003C\u002Fh2>\n\n\u003Cp>pdfRest offers flexible deployment options to meet your specific needs. Choose between our \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fproducts\u002Fpdf-toolkit-self-hosted-api\u002F'>Self-Hosted API\u003C\u002Fa> for deployment within your own AWS VPC or our \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fproducts\u002Fpdf-toolkit-container-api\u002F'>Container API\u003C\u002Fa> for on-premises or private cloud deployment.\u003C\u002Fp>\n\n\u003Ch2>Key Benefits for Self-Hosting pdfRest\u003C\u002Fh2>\n\u003Cul>\n  \u003Cli>\u003Cstrong>Enhanced Security:\u003C\u002Fstrong> Maintain full control over your PDF data and processing workflows.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Compliance Adherence:\u003C\u002Fstrong> Ensure compliance with industry regulations and internal security standards.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Customization Flexibility:\u003C\u002Fstrong> Tailor your PDF processing environment to meet your specific needs.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Private Deployment:\u003C\u002Fstrong> Host the API within your own AWS VPC or on-premises environment for added security and control.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Ch2>Regulatory Compliance for PDF Processing\u003C\u002Fh2>\n\u003Cp>pdfRest's Self-Hosted API and Container API solutions are designed to help you meet a variety of regulatory compliance requirements, including:\u003C\u002Fp>\n\n\u003Cul>\n\u003Cli>\u003Cstrong>HIPAA:\u003C\u002Fstrong> Protect patient health information (PHI) with enhanced security measures and compliance controls.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>GDPR:\u003C\u002Fstrong> Ensure compliance with EU data privacy regulations, including data subject rights and data breach notification requirements.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>PCI DSS:\u003C\u002Fstrong> Protect sensitive cardholder data with robust security measures and compliance controls.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>And more:\u003C\u002Fstrong> Self-hosting pdfRest can help you meet a wide range of industry-specific regulations and standards.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Cp>Take control of your PDF processing workflows and ensure optimal security and compliance with pdfRest's Self-Hosted API solution or Container API.\u003C\u002Fp>\n\n\u003C!--kg-card-end: html-->\n","651f11c92d4014c9499b21e8","2023-10-05T19:43:05.000+00:00","2026-09-04T17:53:45.000+00:00","2023-10-05T19:43:36.000+00:00","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"CollectionPage\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fself-hosting\u002F#collection\",\n      \"name\": \"Self-Hosting\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fself-hosting\u002F\",\n      \"isPartOf\": {\n        \"@type\": \"WebSite\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"mainEntity\": {\n        \"@type\": \"ItemList\",\n        \"itemListElement\": [\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 1,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fself-host-your-pdf-processing-api-on-premises-with-container-deployment\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 2,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fbest-fit-pdf-toolkit-integration-for-any-application-or-workflow\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 3,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fcontrol-your-backend-with-pdfrest-api-toolkit-self-hosted\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 4,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fconnect-to-a-pdfrest-self-hosted-ec2-from-windows\u002F\"\n          },\n          {\n            \"@type\": \"ListItem\",\n            \"position\": 5,\n            \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-modify-pdfrest-cloud-api-code-for-compatibility-with-self-hosted-api\u002F\"\n          }\n        ]\n      },\n      \"description\": \"Host and manage a dedicated deployment of pdfRest API service in AWS or on-premises with Docker Container. Meet regulatory compliance needs by maintaining full control.\",\n      \"keywords\": \"AWS, Container, SDK, Self-Hosted\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Self-Hosting\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fself-hosting\u002F\"\n        }\n      ]\n    }\n  ]\n}","https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fself-hosting\u002F",[2261],{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},[2263,2264,2268,2272,2276,2280],{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":2265,"name":2266,"slug":2266,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2267},"65ae9a81656af204db4b0f51","self-hosting","https:\u002F\u002Fcms.pdfrest.com\u002Ftag\u002Fself-hosting\u002F",{"id":2269,"name":2270,"slug":2271,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e64","#AWS","hash-aws",{"id":2273,"name":2274,"slug":2275,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e71","#SDK","hash-sdk",{"id":2277,"name":2278,"slug":2279,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"65ae9a81656af204db4b0e63","#Self-Hosted","hash-self-hosted",{"id":2281,"name":2282,"slug":2283,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},"67180876533c9f26b9438a07","#Container","hash-container",{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},"https:\u002F\u002Fcms.pdfrest.com\u002Fself-hosting-hub\u002F","\n\n\n\n\nSelf-Host pdfRest API for Enhanced Control and Security\n\n\n\npdfRest offers flexible deployment options to meet your specific needs. Choose between our Self-Hosted API for deployment within your own AWS VPC or our Container API for on-premises or private cloud deployment.\n\n\n\n\nKey Benefits for Self-Hosting pdfRest\n\n\n * Enhanced Security: Maintain full control over your PDF data and processing workflows.\n * Compliance Adherence: Ensure compliance with industry regulations and internal security ","Self-Hosted PDF API, AWS & On-Premises Container | pdfRest","Host and manage a dedicated deployment of pdfRest API service in AWS or on-premises with Docker Container. Meet regulatory compliance needs by maintaining full control.",{"tutorialsHeader":2291,"getStartedContent":2313,"contentHubs":2406},{"id":2292,"uuid":2293,"title":2294,"slug":2295,"html":2296,"comment_id":2297,"feature_image":48,"featured":284,"visibility":1257,"created_at":2298,"updated_at":2299,"published_at":2300,"custom_excerpt":48,"codeinjection_head":48,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":2301,"authors":2306,"primary_author":2308,"primary_tag":2309,"url":2310,"excerpt":2311,"reading_time":215,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":2312,"meta_description":2311,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65ae9a86656af204db4b12f0","2d6b2fd6-b27e-4912-9d83-a23e693d3676","Tutorials","guides-header","\u003Cp>Learn how to process PDF documents with the programming languages, tools, and frameworks that best fit your development project.\u003C\u002Fp>","653ad6c42d4014c9499b2532","2023-10-26T21:14:44.000+00:00","2026-08-31T17:58:57.000+00:00","2023-10-26T21:15:01.000+00:00",[2302],{"id":2303,"name":2304,"slug":2304,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2305},"65ae9a81656af204db4b0f63","tutorials-header","https:\u002F\u002Fcms.pdfrest.com\u002Ftag\u002Ftutorials-header\u002F",[2307],{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},{"id":2303,"name":2304,"slug":2304,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2305},"https:\u002F\u002Fcms.pdfrest.com\u002Fguides-header\u002F","Learn how to process PDF documents with the programming languages, tools, and frameworks that best fit your development project.","Tutorials | pdfRest",[2314,2343,2364,2386],{"id":2315,"uuid":2316,"title":2317,"slug":2318,"html":2319,"comment_id":2320,"feature_image":48,"featured":284,"visibility":1257,"created_at":2321,"updated_at":2322,"published_at":2323,"custom_excerpt":48,"codeinjection_head":48,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":2324,"authors":2333,"primary_author":2339,"primary_tag":2340,"url":2341,"excerpt":2342,"reading_time":215,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65ae9a86656af204db4b1199","48e7f14c-393a-4698-984f-c067657542ff","Maximize with Enterprise","paid-plan-5","\u003Cp>Upgrade to the Enterprise plan for maximum file size uploads, flexible file storage, and customized cloud hosting solutions. Let us design the perfect backend to power your PDF processing.\u003C\u002Fp>","6436e8612d4014c9499af168","2023-04-12T17:20:33.000+00:00","2023-04-18T20:05:27.000+00:00","2023-04-12T17:20:55.000+00:00",[2325,2329],{"id":2326,"name":2327,"slug":2327,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2328},"65ae9a81656af204db4b0e09","tool-get-started","https:\u002F\u002Fcms.pdfrest.com\u002Ftag\u002Ftool-get-started\u002F",{"id":2330,"name":2331,"slug":2331,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2332},"65ae9a81656af204db4b0e9a","paid","https:\u002F\u002Fcms.pdfrest.com\u002Ftag\u002Fpaid\u002F",[2334],{"id":2335,"name":2336,"slug":2337,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":2338},"65ae9a7f656af204db4b0d8d","Jackson Meyer","jackson","https:\u002F\u002Fcms.pdfrest.com\u002Fauthor\u002Fjackson\u002F",{"id":2335,"name":2336,"slug":2337,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":2338},{"id":2326,"name":2327,"slug":2327,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2328},"https:\u002F\u002Fcms.pdfrest.com\u002Fpaid-plan-5\u002F","Upgrade to the Enterprise plan for maximum file size uploads, flexible file storage, and customized cloud hosting solutions. Let us design the perfect backend to power your PDF processing.",{"id":2344,"uuid":2345,"title":37,"slug":2346,"html":2347,"comment_id":2348,"feature_image":48,"featured":284,"visibility":1257,"created_at":2349,"updated_at":2350,"published_at":2351,"custom_excerpt":48,"codeinjection_head":48,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":2352,"authors":2358,"primary_author":2360,"primary_tag":2361,"url":2362,"excerpt":2363,"reading_time":215,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65ae9a86656af204db4b1198","58508c8a-68d5-4e2c-93e0-67185701129c","starter-plan","\u003Cp>Your Starter plan is perfect for testing and prototyping.  When you're ready to launch PDF processing in your website, application, or workflow, remember to upgrade your plan for unlimited access.\u003C\u002Fp>","6436e83c2d4014c9499af15b","2023-04-12T17:19:56.000+00:00","2023-04-18T18:45:22.000+00:00","2023-04-12T17:20:27.000+00:00",[2353,2354],{"id":2326,"name":2327,"slug":2327,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2328},{"id":2355,"name":2356,"slug":2356,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2357},"65ae9a81656af204db4b0e99","starter","https:\u002F\u002Fcms.pdfrest.com\u002Ftag\u002Fstarter\u002F",[2359],{"id":2335,"name":2336,"slug":2337,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":2338},{"id":2335,"name":2336,"slug":2337,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":2338},{"id":2326,"name":2327,"slug":2327,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2328},"https:\u002F\u002Fcms.pdfrest.com\u002Fstarter-plan\u002F","Your Starter plan is perfect for testing and prototyping.  When you're ready to launch PDF processing in your website, application, or workflow, remember to upgrade your plan for unlimited access.",{"id":2365,"uuid":2366,"title":2367,"slug":2368,"html":2369,"comment_id":2370,"feature_image":48,"featured":284,"visibility":1257,"created_at":2371,"updated_at":2372,"published_at":2373,"custom_excerpt":48,"codeinjection_head":48,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":2374,"authors":2380,"primary_author":2382,"primary_tag":2383,"url":2384,"excerpt":2385,"reading_time":215,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65ae9a86656af204db4b1197","c56a4332-b9c9-4bbe-a191-98cac66ddba9","Start Prototyping Your Solution","guest-plan","\u003Cp>Sign up for a free Starter plan, and test your integration with up to 300 API Calls each month.  No credit card required, no catch.  When you're ready to scale,  find the best-fit plan to meet your needs.\u003C\u002Fp>","6436e7ff2d4014c9499af14e","2023-04-12T17:18:55.000+00:00","2023-04-14T21:37:16.000+00:00","2023-04-12T17:19:50.000+00:00",[2375,2376],{"id":2326,"name":2327,"slug":2327,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2328},{"id":2377,"name":2378,"slug":2378,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2379},"65ae9a81656af204db4b0e98","guest","https:\u002F\u002Fcms.pdfrest.com\u002Ftag\u002Fguest\u002F",[2381],{"id":2335,"name":2336,"slug":2337,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":2338},{"id":2335,"name":2336,"slug":2337,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":2338},{"id":2326,"name":2327,"slug":2327,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2328},"https:\u002F\u002Fcms.pdfrest.com\u002Fguest-plan\u002F","Sign up for a free Starter plan, and test your integration with up to 300 API Calls each month.  No credit card required, no catch.  When you're ready to scale,  find the best-fit plan to meet your needs.",{"id":2387,"uuid":2388,"title":25,"slug":2389,"html":2390,"comment_id":2391,"feature_image":48,"featured":284,"visibility":1257,"created_at":2392,"updated_at":2393,"published_at":2394,"custom_excerpt":48,"codeinjection_head":48,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":2395,"authors":2401,"primary_author":2403,"primary_tag":2404,"url":2405,"excerpt":26,"reading_time":215,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65ae9a86656af204db4b107e","80773b70-0a58-4e31-8d34-ade7a0c99d55","get-started-today","\u003Cp>Create your FREE API Key to start processing PDFs in seconds, only possible with pdfRest.\u003C\u002Fp>","632242973ca424020bf08779","2022-09-14T21:07:35.000+00:00","2023-04-18T19:36:43.000+00:00","2022-09-14T21:07:48.000+00:00",[2396,2397],{"id":2326,"name":2327,"slug":2327,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2328},{"id":2398,"name":2399,"slug":2399,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2400},"65ae9a81656af204db4b0e97","default","https:\u002F\u002Fcms.pdfrest.com\u002Ftag\u002Fdefault\u002F",[2402],{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},{"id":2326,"name":2327,"slug":2327,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2328},"https:\u002F\u002Fcms.pdfrest.com\u002Fget-started-today\u002F",[2407,2425,2436,2459,2475,2493,2508,2523,2533,2544,2562,2575,2597,2621,2641,2664,2678],{"id":1251,"uuid":1252,"title":1253,"slug":1254,"html":1255,"comment_id":1256,"feature_image":48,"featured":284,"visibility":1257,"created_at":1258,"updated_at":1259,"published_at":1260,"custom_excerpt":48,"codeinjection_head":1261,"codeinjection_foot":48,"custom_template":48,"canonical_url":1262,"authors":2408,"tags":2410,"primary_author":2423,"primary_tag":2424,"url":1323,"excerpt":1324,"reading_time":5,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":1325,"meta_description":1326,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},[2409],{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},[2411,2412,2413,2414,2415,2416,2417,2418,2419,2420,2421,2422],{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":1275,"name":1276,"slug":1276,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1277},{"id":1279,"name":1280,"slug":1281,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":1283,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1286,"name":1287,"slug":1288,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1290,"name":1291,"slug":1292,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1294,"name":1295,"slug":1296,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1298,"name":1299,"slug":1300,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1302,"name":1303,"slug":1304,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1306,"name":1307,"slug":1308,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1310,"name":1311,"slug":1312,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1314,"name":1315,"slug":1316,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1318,"name":1319,"slug":1320,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":1328,"uuid":1329,"title":1330,"slug":1331,"html":1332,"comment_id":1333,"feature_image":48,"featured":284,"visibility":1257,"created_at":1334,"updated_at":1335,"published_at":1336,"custom_excerpt":48,"codeinjection_head":1337,"codeinjection_foot":48,"custom_template":48,"canonical_url":1338,"authors":2426,"tags":2428,"primary_author":2434,"primary_tag":2435,"url":1361,"excerpt":1362,"reading_time":5,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":1363,"meta_description":1364,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},[2427],{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},[2429,2430,2431,2432,2433],{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":1344,"name":1345,"slug":1345,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1346},{"id":1348,"name":1349,"slug":1350,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1352,"name":1353,"slug":1354,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1356,"name":1357,"slug":1358,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":1366,"uuid":1367,"title":1368,"slug":1369,"html":1370,"comment_id":1371,"feature_image":48,"featured":284,"visibility":1257,"created_at":1372,"updated_at":1373,"published_at":1374,"custom_excerpt":48,"codeinjection_head":1375,"codeinjection_foot":48,"custom_template":48,"canonical_url":1376,"authors":2437,"tags":2439,"primary_author":2457,"primary_tag":2458,"url":1447,"excerpt":1448,"reading_time":5,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":1449,"meta_description":1450,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},[2438],{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},[2440,2441,2442,2443,2444,2445,2446,2447,2448,2449,2450,2451,2452,2453,2454,2455,2456],{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":1382,"name":1383,"slug":1383,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1384},{"id":1386,"name":1387,"slug":1388,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":1283,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1390,"name":1391,"slug":1392,"description":1283,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1394,"name":1395,"slug":1396,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1398,"name":1399,"slug":1400,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1402,"name":1403,"slug":1404,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1406,"name":1407,"slug":1408,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1410,"name":1411,"slug":1412,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1414,"name":1415,"slug":1416,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1418,"name":1419,"slug":1420,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1422,"name":1423,"slug":1424,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1426,"name":1427,"slug":1428,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1430,"name":1431,"slug":1432,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1434,"name":1435,"slug":1436,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1438,"name":1439,"slug":1440,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1442,"name":1443,"slug":1444,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":1452,"uuid":1453,"title":1454,"slug":1455,"html":1456,"comment_id":1457,"feature_image":48,"featured":284,"visibility":1257,"created_at":1458,"updated_at":1459,"published_at":1460,"custom_excerpt":48,"codeinjection_head":1461,"codeinjection_foot":48,"custom_template":48,"canonical_url":1462,"authors":2460,"tags":2462,"primary_author":2473,"primary_tag":2474,"url":1505,"excerpt":1506,"reading_time":5,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":1507,"meta_description":1508,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},[2461],{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},[2463,2464,2465,2466,2467,2468,2469,2470,2471,2472],{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":1468,"name":1469,"slug":1469,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1470},{"id":1472,"name":1473,"slug":1474,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1476,"name":1477,"slug":1478,"description":1283,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":1283,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1480,"name":1481,"slug":1482,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1484,"name":1485,"slug":1486,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1488,"name":1489,"slug":1490,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1492,"name":1493,"slug":1494,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1496,"name":1497,"slug":1498,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1500,"name":1501,"slug":1502,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":1510,"uuid":1511,"title":1512,"slug":1513,"html":1514,"comment_id":1515,"feature_image":48,"featured":284,"visibility":1257,"created_at":1516,"updated_at":1517,"published_at":1518,"custom_excerpt":48,"codeinjection_head":1519,"codeinjection_foot":48,"custom_template":48,"canonical_url":1520,"authors":2476,"tags":2478,"primary_author":2491,"primary_tag":2492,"url":1571,"excerpt":1572,"reading_time":5,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":1573,"meta_description":1574,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},[2477],{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},[2479,2480,2481,2482,2483,2484,2485,2486,2487,2488,2489,2490],{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":1526,"name":1527,"slug":1527,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1528},{"id":1530,"name":1531,"slug":1532,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1534,"name":1535,"slug":1536,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1538,"name":1539,"slug":1540,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1542,"name":1543,"slug":1544,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1546,"name":1547,"slug":1548,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1550,"name":1551,"slug":1552,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1554,"name":1555,"slug":1556,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1558,"name":1559,"slug":1560,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1562,"name":1563,"slug":1564,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1566,"name":1567,"slug":1568,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":1576,"uuid":1577,"title":1578,"slug":1579,"html":1580,"comment_id":1581,"feature_image":48,"featured":284,"visibility":1257,"created_at":1582,"updated_at":1459,"published_at":1583,"custom_excerpt":48,"codeinjection_head":1584,"codeinjection_foot":48,"custom_template":48,"canonical_url":1585,"authors":2494,"tags":2496,"primary_author":2506,"primary_tag":2507,"url":1624,"excerpt":1625,"reading_time":5,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":1626,"meta_description":1627,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},[2495],{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},[2497,2498,2499,2500,2501,2502,2503,2504,2505],{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":1591,"name":1592,"slug":1592,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1593},{"id":1595,"name":1596,"slug":1597,"description":1283,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":1283,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1599,"name":1600,"slug":1601,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1603,"name":1604,"slug":1605,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1607,"name":1608,"slug":1609,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1611,"name":1612,"slug":1613,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1615,"name":1616,"slug":1617,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1619,"name":1620,"slug":1621,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":1629,"uuid":1630,"title":1631,"slug":1632,"html":1633,"comment_id":1634,"feature_image":48,"featured":284,"visibility":1257,"created_at":1635,"updated_at":1636,"published_at":1637,"custom_excerpt":48,"codeinjection_head":1638,"codeinjection_foot":48,"custom_template":48,"canonical_url":1639,"authors":2509,"tags":2511,"primary_author":2521,"primary_tag":2522,"url":1678,"excerpt":1679,"reading_time":5,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":1680,"meta_description":1681,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},[2510],{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},[2512,2513,2514,2515,2516,2517,2518,2519,2520],{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":1645,"name":1646,"slug":1646,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1647},{"id":1649,"name":1650,"slug":1651,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1653,"name":1654,"slug":1655,"description":1283,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":1283,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1657,"name":1658,"slug":1659,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1661,"name":1662,"slug":1663,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1665,"name":1666,"slug":1667,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1669,"name":1670,"slug":1671,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1673,"name":1674,"slug":1675,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":1683,"uuid":1684,"title":1685,"slug":1686,"html":1687,"comment_id":1688,"feature_image":48,"featured":284,"visibility":1257,"created_at":1689,"updated_at":1335,"published_at":1690,"custom_excerpt":48,"codeinjection_head":1691,"codeinjection_foot":48,"custom_template":48,"canonical_url":1692,"authors":2524,"tags":2526,"primary_author":2531,"primary_tag":2532,"url":1711,"excerpt":1712,"reading_time":295,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":1713,"meta_description":1714,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},[2525],{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},[2527,2528,2529,2530],{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":1698,"name":1699,"slug":1699,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1700},{"id":1702,"name":1703,"slug":1704,"description":1283,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":1283,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1706,"name":1707,"slug":1708,"description":1283,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":1283,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":1716,"uuid":1717,"title":1718,"slug":1719,"html":1720,"comment_id":1721,"feature_image":48,"featured":284,"visibility":1257,"created_at":1722,"updated_at":1723,"published_at":1724,"custom_excerpt":48,"codeinjection_head":1725,"codeinjection_foot":48,"custom_template":48,"canonical_url":1726,"authors":2534,"tags":2536,"primary_author":2542,"primary_tag":2543,"url":1749,"excerpt":1750,"reading_time":5,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":1751,"meta_description":1752,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},[2535],{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},[2537,2538,2539,2540,2541],{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":1732,"name":1733,"slug":1733,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1734},{"id":1736,"name":1737,"slug":1738,"description":1283,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":1283,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1740,"name":1741,"slug":1742,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1744,"name":1745,"slug":1746,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":1754,"uuid":1755,"title":1756,"slug":1757,"html":1758,"comment_id":1759,"feature_image":48,"featured":284,"visibility":1257,"created_at":1760,"updated_at":1761,"published_at":1762,"custom_excerpt":48,"codeinjection_head":1763,"codeinjection_foot":48,"custom_template":48,"canonical_url":1764,"authors":2545,"tags":2547,"primary_author":2560,"primary_tag":2561,"url":1819,"excerpt":1820,"reading_time":5,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":1821,"meta_description":1822,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},[2546],{"id":1767,"name":1768,"slug":1769,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1770},[2548,2549,2550,2551,2552,2553,2554,2555,2556,2557,2558,2559],{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":1774,"name":1775,"slug":1775,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1776},{"id":1778,"name":1779,"slug":1780,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1782,"name":1783,"slug":1784,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1786,"name":1787,"slug":1788,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1790,"name":1791,"slug":1792,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1794,"name":1795,"slug":1796,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1798,"name":1799,"slug":1800,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1802,"name":1803,"slug":1804,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1806,"name":1807,"slug":1808,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1810,"name":1811,"slug":1812,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1814,"name":1815,"slug":1816,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1767,"name":1768,"slug":1769,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1770},{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":1824,"uuid":1825,"title":1826,"slug":1827,"html":1828,"comment_id":1824,"feature_image":48,"featured":284,"visibility":1257,"created_at":1829,"updated_at":1830,"published_at":1831,"custom_excerpt":48,"codeinjection_head":1832,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"authors":2563,"tags":2565,"primary_author":2573,"primary_tag":2574,"url":1863,"excerpt":1864,"reading_time":320,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":1865,"meta_description":1866,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},[2564],{"id":1767,"name":1768,"slug":1769,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1770},[2566,2567,2568,2569,2570,2571,2572],{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":1838,"name":1839,"slug":1839,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1840},{"id":1842,"name":1843,"slug":1844,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1846,"name":1847,"slug":1848,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1850,"name":1851,"slug":1852,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1854,"name":1855,"slug":1856,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1858,"name":1859,"slug":1860,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1767,"name":1768,"slug":1769,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1770},{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":1868,"uuid":1869,"title":1870,"slug":1871,"html":1872,"comment_id":1873,"feature_image":48,"featured":284,"visibility":1257,"created_at":1874,"updated_at":1723,"published_at":1875,"custom_excerpt":48,"codeinjection_head":1876,"codeinjection_foot":48,"custom_template":48,"canonical_url":1877,"authors":2576,"tags":2578,"primary_author":2595,"primary_tag":2596,"url":1944,"excerpt":1945,"reading_time":5,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":1946,"meta_description":1947,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},[2577],{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},[2579,2580,2581,2582,2583,2584,2585,2586,2587,2588,2589,2590,2591,2592,2593,2594],{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":1883,"name":1884,"slug":1884,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1885},{"id":1887,"name":1888,"slug":1889,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1891,"name":1892,"slug":1893,"description":1283,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":1283,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1895,"name":1896,"slug":1897,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1899,"name":1900,"slug":1901,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1903,"name":1904,"slug":1905,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1907,"name":1908,"slug":1909,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1911,"name":1912,"slug":1913,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1915,"name":1916,"slug":1917,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1919,"name":1920,"slug":1921,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1923,"name":1924,"slug":1925,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1927,"name":1928,"slug":1929,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1931,"name":1932,"slug":1933,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1935,"name":1936,"slug":1937,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1939,"name":1940,"slug":1941,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":1949,"uuid":1950,"title":1951,"slug":1952,"html":1953,"comment_id":1954,"feature_image":48,"featured":284,"visibility":1257,"created_at":1955,"updated_at":1956,"published_at":1957,"custom_excerpt":48,"codeinjection_head":1958,"codeinjection_foot":48,"custom_template":48,"canonical_url":1959,"authors":2598,"tags":2600,"primary_author":2619,"primary_tag":2620,"url":2034,"excerpt":2035,"reading_time":5,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":2036,"meta_description":2037,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},[2599],{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},[2601,2602,2603,2604,2605,2606,2607,2608,2609,2610,2611,2612,2613,2614,2615,2616,2617,2618],{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":1965,"name":1966,"slug":1966,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1967},{"id":1969,"name":1970,"slug":1971,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1973,"name":1974,"slug":1975,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1977,"name":1978,"slug":1979,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1981,"name":1982,"slug":1983,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1985,"name":1986,"slug":1987,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1989,"name":1990,"slug":1991,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1993,"name":1994,"slug":1995,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1997,"name":1998,"slug":1999,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2001,"name":2002,"slug":2003,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2005,"name":2006,"slug":2007,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2009,"name":2010,"slug":2011,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2013,"name":2014,"slug":2015,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2017,"name":2018,"slug":2019,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2021,"name":2022,"slug":2023,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2025,"name":2026,"slug":2027,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2029,"name":2030,"slug":2031,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":2039,"uuid":2040,"title":2041,"slug":2042,"html":2043,"comment_id":2044,"feature_image":48,"featured":284,"visibility":1257,"created_at":2045,"updated_at":2046,"published_at":2047,"custom_excerpt":48,"codeinjection_head":2048,"codeinjection_foot":48,"custom_template":48,"canonical_url":2049,"authors":2622,"tags":2624,"primary_author":2639,"primary_tag":2640,"url":2108,"excerpt":2109,"reading_time":5,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":2110,"meta_description":2111,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},[2623],{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},[2625,2626,2627,2628,2629,2630,2631,2632,2633,2634,2635,2636,2637,2638],{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":2055,"name":2056,"slug":2056,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2057},{"id":2059,"name":2060,"slug":2061,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2063,"name":2064,"slug":2065,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2067,"name":2068,"slug":2069,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2071,"name":2072,"slug":2073,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2075,"name":2076,"slug":2077,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2079,"name":2080,"slug":2081,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2083,"name":2084,"slug":2085,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2087,"name":2088,"slug":2089,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2091,"name":2092,"slug":2093,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2095,"name":2096,"slug":2097,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2099,"name":2100,"slug":2101,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2103,"name":2104,"slug":2105,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":2113,"uuid":2114,"title":2115,"slug":2116,"html":2117,"comment_id":2118,"feature_image":48,"featured":284,"visibility":1257,"created_at":2119,"updated_at":2120,"published_at":2121,"custom_excerpt":48,"codeinjection_head":2122,"codeinjection_foot":48,"custom_template":48,"canonical_url":2123,"authors":2642,"tags":2644,"primary_author":2662,"primary_tag":2663,"url":2194,"excerpt":2195,"reading_time":5,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":2196,"meta_description":2197,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},[2643],{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},[2645,2646,2647,2648,2649,2650,2651,2652,2653,2654,2655,2656,2657,2658,2659,2660,2661],{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":2129,"name":2130,"slug":2130,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2131},{"id":2133,"name":2134,"slug":2135,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2137,"name":2138,"slug":2139,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2141,"name":2142,"slug":2143,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2145,"name":2146,"slug":2147,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2149,"name":2150,"slug":2151,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2153,"name":2154,"slug":2155,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2157,"name":2158,"slug":2159,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2161,"name":2162,"slug":2163,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2165,"name":2166,"slug":2167,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2169,"name":2170,"slug":2171,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2173,"name":2174,"slug":2175,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2177,"name":2178,"slug":2179,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2181,"name":2182,"slug":2183,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2185,"name":2186,"slug":2187,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2189,"name":2190,"slug":2191,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":2199,"uuid":2200,"title":2201,"slug":2202,"html":2203,"comment_id":2204,"feature_image":48,"featured":284,"visibility":1257,"created_at":2205,"updated_at":2206,"published_at":2207,"custom_excerpt":48,"codeinjection_head":2208,"codeinjection_foot":48,"custom_template":48,"canonical_url":2209,"authors":2665,"tags":2667,"primary_author":2676,"primary_tag":2677,"url":2244,"excerpt":2245,"reading_time":5,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":2246,"meta_description":2247,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},[2666],{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},[2668,2669,2670,2671,2672,2673,2674,2675],{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":2215,"name":2216,"slug":2216,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2217},{"id":2219,"name":2220,"slug":2221,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2223,"name":2224,"slug":2225,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2227,"name":2228,"slug":2229,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2231,"name":2232,"slug":2233,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2235,"name":2236,"slug":2237,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2239,"name":2240,"slug":2241,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":2249,"uuid":2250,"title":2251,"slug":2252,"html":2253,"comment_id":2254,"feature_image":48,"featured":284,"visibility":1257,"created_at":2255,"updated_at":2256,"published_at":2257,"custom_excerpt":48,"codeinjection_head":2258,"codeinjection_foot":48,"custom_template":48,"canonical_url":2259,"authors":2679,"tags":2681,"primary_author":2688,"primary_tag":2689,"url":2286,"excerpt":2287,"reading_time":5,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":2288,"meta_description":2289,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},[2680],{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},[2682,2683,2684,2685,2686,2687],{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"id":2265,"name":2266,"slug":2266,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2267},{"id":2269,"name":2270,"slug":2271,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2273,"name":2274,"slug":2275,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2277,"name":2278,"slug":2279,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2281,"name":2282,"slug":2283,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1265,"name":1266,"slug":1267,"profile_image":48,"cover_image":48,"bio":48,"website":48,"location":48,"facebook":48,"twitter":48,"meta_title":48,"meta_description":48,"url":1268},{"id":1271,"name":1272,"slug":1272,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1273},{"tutorials":2691,"tutorialsMeta":3823},[2692,2719,2738,2757,2775,2795,2812,2830,2848,2866,2883,2901,2918,2938,2957,2976,2996,3015,3035,3052,3071,3089,3107,3126,3144,3163,3181,3200,3218,3236,3255,3272,3290,3307,3325,3342,3360,3381,3403,3426,3446,3465,3484,3504,3524,3544,3561,3579,3596,3614,3632,3650,3670,3690,3709,3729,3747,3765,3785,3805],{"id":2693,"uuid":2694,"title":2695,"slug":2696,"html":2697,"comment_id":2698,"feature_image":48,"featured":284,"visibility":1257,"created_at":2699,"updated_at":2700,"published_at":2699,"custom_excerpt":2701,"codeinjection_head":2702,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":2703,"primary_tag":2716,"url":2717,"excerpt":2701,"reading_time":295,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":2718,"meta_description":2701,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65ae9a86656af204db4b1384","40ad3048-bdca-400e-b52d-c56a464adcaf","How to Add Attachments to PDF Files in .NET with C#","how-to-add-attachments-to-pdf-files","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Add Attachments to PDF with C#?\u003C\u002Fh2>\n\n\u003Cp>The pdfRest \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F'>Add to PDF API Tool\u003C\u002Fa> allows users to programmatically add attachments to PDF documents. This tutorial will guide you through the process of sending an API call to Add to PDF using C#. Imagine you have an application where users can download PDF reports and you want to include related documents, such as source data in an XML file, as an attachment to the PDF.\u003C\u002FP>\n\n\u003Cp>This functionality can enhance the user experience by providing all relevant information bundled together in a single file.\u003C\u002Fp>\n\n\u003Ch2>Add Attachments to PDF with C# Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-csharp\">using System.Text;\n\nusing (var httpClient = new HttpClient { BaseAddress = new Uri(\"https:\u002F\u002Fapi.pdfrest.com\") })\n{\n    using (var request = new HttpRequestMessage(HttpMethod.Post, \"pdf-with-added-attachment\"))\n    {\n        request.Headers.TryAddWithoutValidation(\"Api-Key\", \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\");\n        request.Headers.Accept.Add(new(\"application\u002Fjson\"));\n        var multipartContent = new MultipartFormDataContent();\n\n        var byteArray = File.ReadAllBytes(\"\u002Fpath\u002Fto\u002Ffile\");\n        var byteAryContent = new ByteArrayContent(byteArray);\n        multipartContent.Add(byteAryContent, \"file\", \"file_name\");\n        byteAryContent.Headers.TryAddWithoutValidation(\"Content-Type\", \"application\u002Fpdf\");\n\n        var byteArray2 = File.ReadAllBytes(\"\u002Fpath\u002Fto\u002Ffile\");\n        var byteAryContent2 = new ByteArrayContent(byteArray2);\n        multipartContent.Add(byteAryContent2, \"file_to_attach\", \"file_name\");\n        byteAryContent2.Headers.TryAddWithoutValidation(\"Content-Type\", \"application\u002Fxml\"); \u002F\u002F Update content type\n\n        request.Content = multipartContent;\n        var response = await httpClient.SendAsync(request);\n\n        var apiResult = await response.Content.ReadAsStringAsync();\n\n        Console.WriteLine(\"API response received.\");\n        Console.WriteLine(apiResult);\n    }\n}\n\u003C\u002Fpre>\n\n\u003Cp>Source: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FDotNET\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fpdf-with-added-attachment.cs\">pdf-rest-api-samples on GitHub\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>This code snippet shows how to make a multipart\u002Fform-data POST request to the pdfRest API to attach a file to a PDF.\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">using (var httpClient = new HttpClient { BaseAddress = new Uri(\"https:\u002F\u002Fapi.pdfrest.com\") })\n\u003C\u002Fpre>\n\n\u003Cp>This line initializes an HttpClient instance with the base address set to the pdfRest API.\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">request.Headers.TryAddWithoutValidation(\"Api-Key\", \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\");\n\u003C\u002Fpre>\n\n\u003Cp>This line adds your API key to the request headers for authentication purposes.\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">var byteArray = File.ReadAllBytes(\"\u002Fpath\u002Fto\u002Ffile\");\nvar byteAryContent = new ByteArrayContent(byteArray);\nmultipartContent.Add(byteAryContent, \"file\", \"file_name\");\nbyteAryContent.Headers.TryAddWithoutValidation(\"Content-Type\", \"application\u002Fpdf\");\n\u003C\u002Fpre>\n\n\u003Cp>Here, the code reads the bytes of the PDF file you want to add attachments to and adds it to the multipart content with the appropriate content type.\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">var byteArray2 = File.ReadAllBytes(\"\u002Fpath\u002Fto\u002Ffile\");\nvar byteAryContent2 = new ByteArrayContent(byteArray2);\nmultipartContent.Add(byteAryContent2, \"file_to_attach\", \"file_name\");\nbyteAryContent2.Headers.TryAddWithoutValidation(\"Content-Type\", \"application\u002Fxml\");\n\u003C\u002Fpre>\n\n\u003Cp>Similarly, this snippet reads the bytes of the file you wish to attach and adds it to the multipart content, specifying its content type.\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">var response = await httpClient.SendAsync(request);\n\u003C\u002Fpre>\n\n\u003Cp>This line sends the assembled request to the pdfRest API and awaits the response.\u003C\u002Fp>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>By following the steps above, you have successfully made an API call to add attachments to a PDF document using C#. This can be particularly useful for applications that need to distribute or archive documents with their associated data or supplementary materials.\u003C\u002Fp>\n\n\u003Cp>You are encouraged to demo all of the pdfRest API Tools in the API Lab at \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\u003C\u002Fa> and refer to the API Reference documentation at \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\u003C\u002Fa> for more details.\u003C\u002Fp>\n\n\u003Cp>Note: This is an example of a multipart API call. Code samples using JSON payloads can be found at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FDotNET\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Fpdf-with-added-attachment.cs\">pdf-rest-api-samples on GitHub\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","65aae039132b360925362324","2024-01-19T20:48:57.000+00:00","2026-09-02T18:19:48.000+00:00","Learn how to use .NET to add an attachment to a PDF by calling Add to PDF API Tool by pdfRest.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-attachments-to-pdf-files\u002F#article\",\n      \"headline\": \"How to Add Attachments to PDF Files in .NET with C#\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-attachments-to-pdf-files\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-attachments-to-pdf-files\u002F\",\n      \"datePublished\": \"2024-01-19T20:48:57.000Z\",\n      \"dateModified\": \"2026-09-02T18:08:59.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to use .NET to add an attachment to a PDF by calling Add to PDF API Tool by pdfRest.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Add to PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fpdf-with-added-attachment API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fadd-to-pdf\"\n        }\n      ],\n      \"keywords\": \".NET, Add to PDF, Optimization\",\n      \"dependencies\": \".NET, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Add Attachments to PDF Files in .NET with C#\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-attachments-to-pdf-files\u002F\"\n        }\n      ]\n    }\n  ]\n}",[2704,2708,2713,2714,2715],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"65ae9a81656af204db4b0f62","tutorial-post","https:\u002F\u002Fcms.pdfrest.com\u002Ftag\u002Ftutorial-post\u002F",{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},"65ae9a81656af204db4b0f89","seo-meta","Used to identify pages which hold metadata for SEO SERP listings.","https:\u002F\u002Fcms.pdfrest.com\u002Ftag\u002Fseo-meta\u002F",{"id":1842,"name":1843,"slug":1844,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2231,"name":2232,"slug":2233,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1891,"name":1892,"slug":1893,"description":1283,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":1283,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-add-attachments-to-pdf-files\u002F","How to Add Attachments to PDF Files, Tutorial | pdfRest",{"id":2720,"uuid":2721,"title":2722,"slug":2723,"html":2724,"comment_id":2720,"feature_image":48,"featured":284,"visibility":1257,"created_at":2725,"updated_at":2726,"published_at":2726,"custom_excerpt":2727,"codeinjection_head":2728,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":2729,"primary_tag":2735,"url":2736,"excerpt":2727,"reading_time":320,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":2737,"meta_description":2727,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"6a9750ca533c9f26b943b741","ac0095c2-d4bd-4925-a7f0-d53c2679efea","How to Add Attachments to PDF Files with cURL","how-to-add-attachments-to-pdf-files-with-curl","\n\u003C!--kg-card-begin: html-->\n\u003Cp>In this tutorial, we'll walk through how to add attachments to PDF files using cURL and the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F\">Add to PDF API Tool\u003C\u002Fa>. The complete shell command stays visible, and each pdfRest-specific field is explained before you adapt the Add Attachments to PDF request to your own workflow.\u003C\u002Fp>\n\n\u003Ch2>Why Add Attachments to PDF Files with cURL?\u003C\u002Fh2>\n\n\u003Cp>PDF attachments allow one document to carry related source material without placing that material on a visible page. This is useful when people need the PDF presentation while another system needs the original data or supporting evidence.\u003C\u002Fp>\n\n\u003Cp>Consider an invoicing workflow that produces a readable PDF and an XML record for automated accounting. A cURL step can embed the XML inside the invoice PDF so both representations move through approval, delivery, and storage as one package.\u003C\u002Fp>\n\n\u003Cp>The request uploads the main PDF through \u003Ccode>file\u003C\u002Fcode> and the supporting document through \u003Ccode>file_to_attach\u003C\u002Fcode>. pdfRest returns a new PDF resource; it does not overwrite either uploaded input.\u003C\u002Fp>\n\n\u003Ch2>cURL Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-bash\"># By default, we use the US-based API service. This is the primary endpoint for global use.\nAPI_URL=\"https:\u002F\u002Fapi.pdfrest.com\"\n\n# For GDPR compliance and enhanced performance for European users, you can switch to the EU-based service by uncommenting the URL below.\n# For more information visit https:\u002F\u002Fpdfrest.com\u002Fpricing#how-do-eu-gdpr-api-calls-work\n# API_URL=\"https:\u002F\u002Feu-api.pdfrest.com\"\n\ncurl -X POST \"$API_URL\u002Fpdf-with-added-attachment\" \\\n  -H \"Accept: application\u002Fjson\" \\\n  -H \"Content-Type: multipart\u002Fform-data\" \\\n  -H \"Api-Key: xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\" \\\n  -F \"file=@\u002Fpath\u002Fto\u002Ffile\" \\\n  -F \"file_to_attach=@\u002Fpath\u002Fto\u002Ffile\" \\\n  -F \"output=example_out\"\u003C\u002Fpre>\n\n\u003Cp>Source for Add Attachments to PDF: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FcURL\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fpdf-with-added-attachment.sh\">View the cURL sample on GitHub\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Ch3>Choose the pdfRest service region\u003C\u002Fh3>\n\n\u003Cpre class=\"language-bash\"># By default, we use the US-based API service. This is the primary endpoint for global use.\nAPI_URL=\"https:\u002F\u002Fapi.pdfrest.com\"\n\n# For GDPR compliance and enhanced performance for European users, you can switch to the EU-based service by uncommenting the URL below.\n# For more information visit https:\u002F\u002Fpdfrest.com\u002Fpricing#how-do-eu-gdpr-api-calls-work\n# API_URL=\"https:\u002F\u002Feu-api.pdfrest.com\"\u003C\u002Fpre>\n\n\u003Cp>The Add Attachments to PDF example routes to the US service through the active URL, while the commented hostname provides the EU option. Keep every Add Attachments to PDF input and generated resource ID in the same region.\u003C\u002Fp>\n\n\u003Ch3>Build the authenticated multipart request\u003C\u002Fh3>\n\n\u003Cpre class=\"language-bash\">curl -X POST \"$API_URL\u002Fpdf-with-added-attachment\" \\\n  -H \"Accept: application\u002Fjson\" \\\n  -H \"Content-Type: multipart\u002Fform-data\" \\\n  -H \"Api-Key: xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\" \\\u003C\u002Fpre>\n\n\u003Cp>This POST targets the endpoint used by Add Attachments to PDF. For the Add Attachments to PDF request, \u003Ccode>Accept\u003C\u002Fcode> asks for JSON, \u003Ccode>Content-Type\u003C\u002Fcode> identifies the multipart payload, and \u003Ccode>Api-Key\u003C\u002Fcode> authenticates the call.\u003C\u002Fp>\n\n\u003Ch3>Upload the input file data\u003C\u002Fh3>\n\n\u003Cpre class=\"language-bash\">-F \"file=@\u002Fpath\u002Fto\u002Ffile\" \\\n  -F \"file_to_attach=@\u002Fpath\u002Fto\u002Ffile\" \\\u003C\u002Fpre>\n\n\u003Cp>The two file fields have different roles, so preserving descriptive filenames helps recipients recognize the PDF and its embedded attachment.\u003C\u002Fp>\n\n\u003Ch3>Set the operation-specific fields\u003C\u002Fh3>\n\n\u003Cpre class=\"language-bash\">-F \"output=example_out\"\u003C\u002Fpre>\n\n\u003Cp>For Add Attachments to PDF, the \u003Ccode>output\u003C\u002Fcode> field supplies the requested base name for the generated resource. Any additional fields shown here control behavior specific to this operation.\u003C\u002Fp>\n\n\u003Ch3>Read the generated resource response\u003C\u002Fh3>\n\n\u003Cpre class=\"language-bash\">curl -X POST \"$API_URL\u002Fpdf-with-added-attachment\" \\\u003C\u002Fpre>\n\n\u003Cp>A successful Add Attachments to PDF call returns JSON describing the generated resource, including its output ID and download information. Preserve the Add Attachments to PDF result needed by the next workflow step before the configured retention period expires.\u003C\u002Fp>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>You now have a cURL request that combines a PDF and a supporting file into one portable result. The same pattern can package invoice XML, audit evidence, source documents, or other records that should remain connected to the visible PDF.\u003C\u002Fp>\n\n\u003Cp>When you bring this into an application, verify attachment names and media types in the PDF viewers your users depend on. Save the generated file before its retention period expires, and delete temporary resources when the package no longer needs to remain available.\u003C\u002Fp>\n\n\u003Cp>Continue exploring the Add Attachments to PDF workflow in \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. For the complete Add Attachments to PDF request contract, accepted values, defaults, and limitations, consult the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fadd-to-pdf\u002F\">Add to PDF API Tool documentation\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Cp>Note: The Add Attachments to PDF example above uploads a file with multipart form data. For source content already stored in pdfRest, the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FcURL\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Fpdf-with-added-attachment.sh\">Add Attachments to PDF JSON payload example\u003C\u002Fa> shows the resource-ID request shape.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2026-09-01T22:25:14.000+00:00","2026-09-03T17:04:35.000+00:00","Learn how to attach a supporting file to a PDF with cURL and keep human-readable and machine-readable content together.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-attachments-to-pdf-files-with-curl\u002F#article\",\n      \"headline\": \"How to Add Attachments to PDF Files with cURL\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-attachments-to-pdf-files-with-curl\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-attachments-to-pdf-files-with-curl\u002F\",\n      \"datePublished\": \"2026-09-03T00:00:00.000Z\",\n      \"dateModified\": \"2026-09-03T00:00:00.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to attach a supporting file to a PDF with cURL and keep human-readable and machine-readable content together.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Add to PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fpdf-with-added-attachment API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fadd-to-pdf\"\n        }\n      ],\n      \"keywords\": \"Add to PDF, Attachment, cURL\",\n      \"dependencies\": \"cURL, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Add Attachments to PDF Files with cURL\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-attachments-to-pdf-files-with-curl\u002F\"\n        }\n      ]\n    }\n  ]\n}",[2730,2731,2732,2733,2734],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1842,"name":1843,"slug":1844,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2239,"name":2240,"slug":2241,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1907,"name":1908,"slug":1909,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-add-attachments-to-pdf-files-with-curl\u002F","How to Add Attachments to PDF Files with cURL, Tutorial | pdfRest",{"id":2739,"uuid":2740,"title":2741,"slug":2742,"html":2743,"comment_id":2739,"feature_image":48,"featured":284,"visibility":1257,"created_at":2744,"updated_at":2745,"published_at":2746,"custom_excerpt":2747,"codeinjection_head":2748,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":2749,"primary_tag":2754,"url":2755,"excerpt":2747,"reading_time":345,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":2756,"meta_description":2747,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"6a970c54533c9f26b943b476","0b31de19-2c68-467f-ac47-adf814670f4e","How to Add Attachments to PDF Files with Java","how-to-add-attachments-to-pdf-files-with-java","\n\u003C!--kg-card-begin: html-->\n\u003Cp>In this tutorial, we'll walk through how to add attachments to PDF files with Java using the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F\">Add to PDF API Tool\u003C\u002Fa>. The code supplies the source PDF and attachment as separate multipart parts, then receives a new PDF resource that contains both. You'll see how the request is assembled and how to work with the response returned when you add attachments to PDF files.\u003C\u002Fp>\n\n\u003Ch2>Why Add Attachments to PDF Files with Java?\u003C\u002Fh2>\n\n\u003Cp>A claims platform may need to keep an XML decision record or original evidence beside the readable PDF. Embedding the source as an attachment keeps the related material together without changing the visible pages.\u003C\u002Fp>\n\n\u003Cp>The Java request sends the PDF as \u003Ccode>file\u003C\u002Fcode> and the supporting document as \u003Ccode>file_to_attach\u003C\u002Fcode>. Both are multipart file parts, so callers should preserve meaningful filenames and media types.\u003C\u002Fp>\n\n\u003Ch2>Java Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-java\">import io.github.cdimascio.dotenv.Dotenv;\nimport java.io.File;\nimport java.io.IOException;\nimport java.util.concurrent.TimeUnit;\nimport okhttp3.MediaType;\nimport okhttp3.MultipartBody;\nimport okhttp3.OkHttpClient;\nimport okhttp3.Request;\nimport okhttp3.RequestBody;\nimport okhttp3.Response;\nimport org.json.JSONObject;\n\npublic class PDFWithAddedAttachment {\n\n  \u002F\u002F By default, we use the US-based API service. This is the primary endpoint for global use.\n  private static final String API_URL = \"https:\u002F\u002Fapi.pdfrest.com\";\n\n  \u002F\u002F For GDPR compliance and enhanced performance for European users, you can switch to the EU-based\n  \u002F\u002F service by commenting out the URL above and uncommenting the URL below.\n  \u002F\u002F For more information visit https:\u002F\u002Fpdfrest.com\u002Fpricing#how-do-eu-gdpr-api-calls-work\n  \u002F\u002F private static final String API_URL = \"https:\u002F\u002Feu-api.pdfrest.com\";\n\n  \u002F\u002F Specify the path to your file here, or as the first argument when running the program.\n  private static final String DEFAULT_FILE_PATH = \"\u002Fpath\u002Fto\u002Ffile.pdf\";\n\n  \u002F\u002F Specify the path to your file attachment here, or as the second argument when running the\n  \u002F\u002F program.\n  private static final String DEFAULT_ATTACHMENT_PATH = \"\u002Fpath\u002Fto\u002Ffile.xml\";\n\n  \u002F\u002F Specify your API key here, or in the environment variable PDFREST_API_KEY.\n  \u002F\u002F You can also put the environment variable in a .env file.\n  private static final String DEFAULT_API_KEY = \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\";\n\n  public static void main(String[] args) {\n    File inputFile, attachmentFile;\n    if (args.length > 1) {\n      inputFile = new File(args[0]);\n      attachmentFile = new File(args[1]);\n    } else {\n      inputFile = new File(DEFAULT_FILE_PATH);\n      attachmentFile = new File(DEFAULT_ATTACHMENT_PATH);\n    }\n\n    final Dotenv dotenv = Dotenv.configure().ignoreIfMalformed().ignoreIfMissing().load();\n\n    final RequestBody inputFileRequestBody =\n        RequestBody.create(inputFile, MediaType.parse(\"application\u002Fpdf\"));\n    final RequestBody attachmentFileRequestBody =\n        RequestBody.create(attachmentFile, MediaType.parse(\"application\u002Fxml\"));\n    RequestBody requestBody =\n        new MultipartBody.Builder()\n            .setType(MultipartBody.FORM)\n            .addFormDataPart(\"file\", inputFile.getName(), inputFileRequestBody)\n            .addFormDataPart(\"file_to_attach\", attachmentFile.getName(), attachmentFileRequestBody)\n            .build();\n    Request request =\n        new Request.Builder()\n            .header(\"Api-Key\", dotenv.get(\"PDFREST_API_KEY\", DEFAULT_API_KEY))\n            .url(API_URL + \"\u002Fpdf-with-added-attachment\")\n            .post(requestBody)\n            .build();\n    try {\n      OkHttpClient client =\n          new OkHttpClient().newBuilder().readTimeout(60, TimeUnit.SECONDS).build();\n      Response response = client.newCall(request).execute();\n      System.out.println(\"Result code \" + response.code());\n      if (response.body() != null) {\n        System.out.println(prettyJson(response.body().string()));\n      }\n    } catch (IOException e) {\n      throw new RuntimeException(e);\n    }\n  }\n\n  private static String prettyJson(String json) {\n    \u002F\u002F https:\u002F\u002Fstackoverflow.com\u002Fa\u002F9583835\u002F11996393\n    return new JSONObject(json).toString(4);\n  }\n}\u003C\u002Fpre>\n\n\u003Cp>Source: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FJava\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002FPDFWithAddedAttachment.java\">Java sample on GitHub\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Ch3>Load the Java HTTP and JSON dependencies\u003C\u002Fh3>\n\n\u003Cpre class=\"language-java\">import io.github.cdimascio.dotenv.Dotenv;\nimport java.io.File;\nimport java.io.IOException;\nimport java.util.concurrent.TimeUnit;\nimport okhttp3.MediaType;\nimport okhttp3.MultipartBody;\nimport okhttp3.OkHttpClient;\nimport okhttp3.Request;\nimport okhttp3.RequestBody;\nimport okhttp3.Response;\nimport org.json.JSONObject;\u003C\u002Fpre>\n\n\u003Cp>The import block uses OkHttp for transport, dotenv for loading \u003Ccode>PDFREST_API_KEY\u003C\u002Fcode>, and \u003Ccode>org.json\u003C\u002Fcode> for structured request or response data.\u003C\u002Fp>\n\n\u003Ch3>Choose the input and load credentials\u003C\u002Fh3>\n\n\u003Cpre class=\"language-java\">\u002F\u002F service by commenting out the URL above and uncommenting the URL below.\n  \u002F\u002F For more information visit https:\u002F\u002Fpdfrest.com\u002Fpricing#how-do-eu-gdpr-api-calls-work\n  \u002F\u002F private static final String API_URL = \"https:\u002F\u002Feu-api.pdfrest.com\";\n\n  \u002F\u002F Specify the path to your file here, or as the first argument when running the program.\n  private static final String DEFAULT_FILE_PATH = \"\u002Fpath\u002Fto\u002Ffile.pdf\";\n\n  \u002F\u002F Specify the path to your file attachment here, or as the second argument when running the\n  \u002F\u002F program.\n  private static final String DEFAULT_ATTACHMENT_PATH = \"\u002Fpath\u002Fto\u002Ffile.xml\";\n\n  \u002F\u002F Specify your API key here, or in the environment variable PDFREST_API_KEY.\n  \u002F\u002F You can also put the environment variable in a .env file.\n  private static final String DEFAULT_API_KEY = \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\";\n\n  public static void main(String[] args) {\n    File inputFile, attachmentFile;\n    if (args.length > 1) {\n      inputFile = new File(args[0]);\n      attachmentFile = new File(args[1]);\n    } else {\n      inputFile = new File(DEFAULT_FILE_PATH);\u003C\u002Fpre>\n\n\u003Cp>Two default paths identify the PDF and its attachment, and two command-line arguments can replace them at runtime; dotenv supplies the API key independently of both files.\u003C\u002Fp>\n\n\u003Ch3>Build the multipart request body\u003C\u002Fh3>\n\n\u003Cpre class=\"language-java\">final RequestBody attachmentFileRequestBody =\n        RequestBody.create(attachmentFile, MediaType.parse(\"application\u002Fxml\"));\n    RequestBody requestBody =\n        new MultipartBody.Builder()\n            .setType(MultipartBody.FORM)\n            .addFormDataPart(\"file\", inputFile.getName(), inputFileRequestBody)\n            .addFormDataPart(\"file_to_attach\", attachmentFile.getName(), attachmentFileRequestBody)\n            .build();\n    Request request =\n        new Request.Builder()\n            .header(\"Api-Key\", dotenv.get(\"PDFREST_API_KEY\", DEFAULT_API_KEY))\n            .url(API_URL + \"\u002Fpdf-with-added-attachment\")\n            .post(requestBody)\n            .build();\n    try {\n      OkHttpClient client =\n          new OkHttpClient().newBuilder().readTimeout(60, TimeUnit.SECONDS).build();\u003C\u002Fpre>\n\n\u003Cp>The Java request sends the PDF as \u003Ccode>file\u003C\u002Fcode> and the supporting document as \u003Ccode>file_to_attach\u003C\u002Fcode>. Both are multipart file parts, so callers should preserve meaningful filenames and media types. This payload builder leaves boundary construction to OkHttp so the header remains synchronized with the serialized content.\u003C\u002Fp>\n\n\u003Ch3>Send the request to pdfRest\u003C\u002Fh3>\n\n\u003Cpre class=\"language-java\">.build();\n    Request request =\n        new Request.Builder()\n            .header(\"Api-Key\", dotenv.get(\"PDFREST_API_KEY\", DEFAULT_API_KEY))\n            .url(API_URL + \"\u002Fpdf-with-added-attachment\")\n            .post(requestBody)\n            .build();\n    try {\n      OkHttpClient client =\n          new OkHttpClient().newBuilder().readTimeout(60, TimeUnit.SECONDS).build();\n      Response response = client.newCall(request).execute();\u003C\u002Fpre>\n\n\u003Cp>The outbound call posts the multipart content to pdfRest and keeps deployment-region changes independent of the rest of the Java code.\u003C\u002Fp>\n\n\u003Ch3>Read the API response\u003C\u002Fh3>\n\n\u003Cpre class=\"language-java\">try {\n      OkHttpClient client =\n          new OkHttpClient().newBuilder().readTimeout(60, TimeUnit.SECONDS).build();\n      Response response = client.newCall(request).execute();\n      System.out.println(\"Result code \" + response.code());\n      if (response.body() != null) {\n        System.out.println(prettyJson(response.body().string()));\n      }\n    } catch (IOException e) {\n      throw new RuntimeException(e);\n    }\n  }\n\n  private static String prettyJson(String json) {\n    \u002F\u002F https:\u002F\u002Fstackoverflow.com\u002Fa\u002F9583835\u002F11996393\n    return new JSONObject(json).toString(4);\u003C\u002Fpre>\n\n\u003Cp>The returned-data block prints the HTTP status and JSON body so generated resource IDs or API error details are visible.\u003C\u002Fp>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>In this tutorial, we walked through how to add attachments to PDF files with Java. With that foundation, you can use this pattern for invoice XML, audit evidence, source documents, or machine-readable records that must travel with a human-readable PDF.\u003C\u002Fp>\n\n\u003Cp>As you adapt this example for production, preserve meaningful attachment filenames and media types so recipients can identify embedded material. Test the output in the PDF viewers your users rely on, and delete temporary source and output resources when the package no longer needs to remain available.\u003C\u002Fp>\n\n\u003Cp>To continue exploring the Add Attachments to PDF operation, visit \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. For complete request fields, defaults, and limitations, refer to the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fadd-to-pdf\u002F\">Add to PDF API Tool documentation\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Cp>Note: The Add Attachments to PDF example above uses multipart form data; when a prior API call returned the input ID, use the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FJava\u002FEndpoint%20Examples\u002FJSON%20Payload\u002FPDFWithAddedAttachment.java\">JSON payload example\u003C\u002Fa> as a guide.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2026-09-01T17:33:08.000+00:00","2026-09-02T18:26:36.000+00:00","2026-09-01T21:57:31.000+00:00","Add supporting files to a PDF with Java and retain both documents in one portable package.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-attachments-to-pdf-files-with-java\u002F#article\",\n      \"headline\": \"How to Add Attachments to PDF Files with Java\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-attachments-to-pdf-files-with-java\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-attachments-to-pdf-files-with-java\u002F\",\n      \"datePublished\": \"2026-09-01T21:57:31.000Z\",\n      \"dateModified\": \"2026-09-01T21:57:31.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Add supporting files to a PDF with Java and retain both documents in one portable package.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Add to PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fpdf-with-added-attachment API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fadd-to-pdf\"\n        }\n      ],\n      \"keywords\": \"Add to PDF, Java\",\n      \"dependencies\": \"Java, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Add Attachments to PDF Files with Java\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-attachments-to-pdf-files-with-java\u002F\"\n        }\n      ]\n    }\n  ]\n}",[2750,2751,2752,2753],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1842,"name":1843,"slug":1844,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2235,"name":2236,"slug":2237,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-add-attachments-to-pdf-files-with-java\u002F","Add Attachments to PDF Files with Java | pdfRest",{"id":2758,"uuid":2759,"title":2760,"slug":2761,"html":2762,"comment_id":2758,"feature_image":48,"featured":284,"visibility":1257,"created_at":2763,"updated_at":2745,"published_at":2763,"custom_excerpt":2764,"codeinjection_head":2765,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":2766,"primary_tag":2772,"url":2773,"excerpt":2764,"reading_time":295,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":2774,"meta_description":2764,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65c1570e533c9f26b9435e4a","376788a6-bcb2-4160-9dd7-fd54f826a26c","How to Add Attachments to PDF Files with JavaScript in NodeJS","how-to-add-attachments-to-pdf-files-with-javascript-in-nodejs","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Add Attachments to PDF with JavaScript?\u003C\u002Fh2>\n\n\u003Cp>The pdfRest \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F'>Add to PDF API Tool\u003C\u002Fa> is a powerful resource for developers who need to manipulate PDF files programmatically. This tool allows you to add file attachments to PDF documents. In this tutorial, we will learn how to send an API call to Add to PDF using JavaScript.\u003C\u002Fp> \n\n\u003Cp>This functionality is particularly useful in scenarios where you need to bundle non-PDF files with a PDF document, such as attaching source data files to a report or including supplementary materials with an eBook.\u003C\u002Fp>\n\n\u003Ch2>Add Attachments to PDF with JavaScript Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-javascript\">\u002F**\n * This request demonstrates how to add a file attachment to a PDF.\n *\u002F\nvar axios = require('axios');\nvar FormData = require('form-data');\nvar fs = require('fs');\n\n\u002F\u002F Create a new form data instance and append the PDF file and parameters to it\nvar data = new FormData();\ndata.append('file', fs.createReadStream('\u002Fpath\u002Fto\u002Ffile'));\ndata.append('file_to_attach', fs.createReadStream('\u002Fpath\u002Fto\u002Ffile'));\ndata.append('output', 'pdfrest_pdf_with_added_attachment');\n\n\u002F\u002F define configuration options for axios request\nvar config = {\n  method: 'post',\n  maxBodyLength: Infinity, \u002F\u002F set maximum length of the request body\n  url: 'https:\u002F\u002Fapi.pdfrest.com\u002Fpdf-with-added-attachment', \n  headers: { \n    'Api-Key': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', \u002F\u002F Replace with your API key\n    ...data.getHeaders() \u002F\u002F set headers for the request\n  },\n  data : data \u002F\u002F set the data to be sent with the request\n};\n\n\u002F\u002F send request and handle response or error\naxios(config)\n.then(function (response) {\n  console.log(JSON.stringify(response.data));\n})\n.catch(function (error) {\n  console.log(error); \n});\n\n\u002F\u002F If you would like to download the file instead of getting the JSON response, please see the 'get-resource-id-endpoint.js' sample.\n\u003C\u002Fpre>\n\n\u003Cp>Reference: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FJavaScript\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fpdf-with-added-attachment.js\">GitHub Repository\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>The code provided demonstrates how to use JavaScript to make an API call to the pdfRest service in order to add a file attachment to a PDF document.\u003C\u002Fp>\n\n\u003Cpre class=\"language-javascript\">var axios = require('axios');\nvar FormData = require('form-data');\nvar fs = require('fs');\n\u003C\u002Fpre>\n\n\u003Cp>This snippet includes the required modules: 'axios' for making HTTP requests, 'form-data' for constructing multipart\u002Fform-data payloads, and 'fs' for file system operations.\u003C\u002Fp>\n\n\u003Cpre class=\"language-javascript\">var data = new FormData();\ndata.append('file', fs.createReadStream('\u002Fpath\u002Fto\u002Ffile'));\ndata.append('file_to_attach', fs.createReadStream('\u002Fpath\u002Fto\u002Ffile'));\ndata.append('output', 'pdfrest_pdf_with_added_attachment');\n\u003C\u002Fpre>\n\n\u003Cp>This creates a new FormData object and appends the PDF file, the file to attach, and the desired output name.\u003C\u002Fp>\n\n\u003Cpre class=\"language-javascript\">var config = {\n  method: 'post',\n  maxBodyLength: Infinity,\n  url: 'https:\u002F\u002Fapi.pdfrest.com\u002Fpdf-with-added-attachment',\n  headers: { \n    'Api-Key': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',\n    ...data.getHeaders()\n  },\n  data : data\n};\n\u003C\u002Fpre>\n\n\u003Cp>This configures the axios request with the HTTP method, URL, headers (including the API key), and the data payload.\u003C\u002Fp>\n\n\u003Cpre class=\"language-javascript\">axios(config)\n.then(function (response) {\n  console.log(JSON.stringify(response.data));\n})\n.catch(function (error) {\n  console.log(error); \n});\n\u003C\u002Fpre>\n\n\u003Cp>This sends the request and logs the response data or catches any errors that occur during the request.\u003C\u002Fp>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>In this tutorial, we have successfully made an API call to add a file attachment to a PDF document using JavaScript. This is a fundamental example of how to interact with the pdfRest API to enhance and modify PDF documents programmatically. Users are encouraged to demo all of the pdfRest API Tools in the API Lab at \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\u003C\u002Fa> and refer to the API Reference documentation at \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Cp>Note: This is an example of a multipart API call. Code samples using JSON payloads can be found at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FJavaScript\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Fpdf-with-added-attachment.js\">GitHub Repository\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2024-02-05T21:45:50.000+00:00","Learn how to use JavaScript to call the Add to PDF API tool by pdfRest.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-attachments-to-pdf-files-with-javascript-in-nodejs\u002F#article\",\n      \"headline\": \"How to Add Attachments to PDF Files with JavaScript in NodeJS\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-attachments-to-pdf-files-with-javascript-in-nodejs\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-attachments-to-pdf-files-with-javascript-in-nodejs\u002F\",\n      \"datePublished\": \"2024-02-05T21:45:50.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:54.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to use JavaScript to call the Add to PDF API tool by pdfRest.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Add to PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fpdf-with-added-attachment API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fadd-to-pdf\"\n        }\n      ],\n      \"keywords\": \"Add to PDF, JavaScript, Optimization\",\n      \"dependencies\": \"JavaScript, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Add Attachments to PDF Files with JavaScript in NodeJS\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-attachments-to-pdf-files-with-javascript-in-nodejs\u002F\"\n        }\n      ]\n    }\n  ]\n}",[2767,2768,2769,2770,2771],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1842,"name":1843,"slug":1844,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2223,"name":2224,"slug":2225,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1891,"name":1892,"slug":1893,"description":1283,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":1283,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-add-attachments-to-pdf-files-with-javascript-in-nodejs\u002F","How to Add Attachments to PDF Files with JavaScript in NodeJS, Tutorial | pdfRest",{"id":2776,"uuid":2777,"title":2778,"slug":2779,"html":2780,"comment_id":2776,"feature_image":48,"featured":284,"visibility":1257,"created_at":2781,"updated_at":2782,"published_at":2781,"custom_excerpt":2783,"codeinjection_head":2784,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":2785,"primary_tag":2791,"url":2792,"excerpt":2783,"reading_time":295,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":2793,"meta_description":2794,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65c2b98c533c9f26b9436093","7acef89b-f465-45fc-88bc-016aa5042911","How to Add Attachments to PDF Files with PHP","how-to-add-attachments-to-pdf-files-with-php","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Add Attachments to PDF with PHP?\u003C\u002Fh2>\n\n\u003Cp>The pdfRest \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F\">Add to PDF API Tool\u003C\u002Fa> is a powerful resource that allows developers to programmatically add attachments to PDF documents. This tutorial will demonstrate how to make an API call to the Add to PDF endpoint using PHP.\u003C\u002Fp>\n\n\u003Cp>A real-world example of using Add to PDF might include attaching related documents to a PDF report, such as source data files, additional references, or supplementary materials for a presentation.\u003C\u002Fp>\n\n\u003Ch2>Add Attachments to PDF with PHP Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-php\">require 'vendor\u002Fautoload.php';\n\nuse GuzzleHttp\\Client;\nuse GuzzleHttp\\Psr7\\Request;\nuse GuzzleHttp\\Psr7\\Utils;\n\n$client = new Client();\n\n$headers = [\n  'Api-Key' => 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'\n];\n\n$options = [\n  'multipart' => [\n    [\n      'name' => 'file',\n      'contents' => Utils::tryFopen('\u002Fpath\u002Fto\u002Ffile', 'r'),\n      'filename' => '\u002Fpath\u002Fto\u002Ffile',\n      'headers' => [\n        'Content-Type' => '\u003Ccontent-type header=\"\">'\n      ]\n    ],\n    [\n      'name' => 'file_to_attach',\n      'contents' => Utils::tryFopen('\u002Fpath\u002Fto\u002Ffile', 'r'),\n      'filename' => '\u002Fpath\u002Fto\u002Ffile',\n      'headers' => [\n        'Content-Type' => '\u003Ccontent-type header=\"\">'\n      ]\n    ],\n    [\n      'name' => 'output',\n      'contents' => 'pdfrest_pdf_with_added_attachment'\n    ]\n  ]\n];\n\n$request = new Request('POST', 'https:\u002F\u002Fapi.pdfrest.com\u002Fpdf-with-added-attachment', $headers);\n\n$res = $client->sendAsync($request, $options)->wait();\n\necho $res->getBody();\n\u003C\u002Fcontent-type>\u003C\u002Fcontent-type>\u003C\u002Fpre>\n\n\u003Cp>Reference: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FPHP\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fpdf-with-added-attachment.php\">GitHub - datalogics\u002Fpdf-rest-api-samples\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>The code above demonstrates how to send a multipart\u002Fform-data POST request to the pdfRest API to add an attachment to a PDF file:\u003C\u002Fp>\n\n\u003Cpre class=\"language-php\">require 'vendor\u002Fautoload.php';\nuse GuzzleHttp\\Client;\nuse GuzzleHttp\\Psr7\\Request;\nuse GuzzleHttp\\Psr7\\Utils;\n\u003C\u002Fpre>\n\n\u003Cp>This includes the necessary classes from the Guzzle HTTP client library to send HTTP requests and handle file streams.\u003C\u002Fp>\n\n\u003Cpre class=\"language-php\">$headers = [\n  'Api-Key' => 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'\n];\n\u003C\u002Fpre>\n\n\u003Cp>The API key is provided in the headers for authentication purposes.\u003C\u002Fp>\n\n\u003Cpre class=\"language-php\">$options = [\n  'multipart' => [\n    \u002F\u002F ...multipart array contents...\n  ]\n];\n\u003C\u002Fpre>\n\n\u003Cp>The options array contains the multipart form data, which includes the main PDF file, the file to attach, and output options.\u003C\u002Fp>\n\n\u003Cpre class=\"language-php\">$request = new Request('POST', 'https:\u002F\u002Fapi.pdfrest.com\u002Fpdf-with-added-attachment', $headers);\n$res = $client->sendAsync($request, $options)->wait();\n\u003C\u002Fpre>\n\n\u003Cp>A POST request is created and sent asynchronously. The response is waited on and then the body of the response, which should be the processed PDF, is outputted.\u003C\u002Fp>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>This tutorial walked through the process of making an API call to the pdfRest Add to PDF endpoint using PHP and the Guzzle HTTP client. By following the steps outlined above, you can add attachments to PDF documents programmatically.\u003C\u002Fp>\n\n\u003Cp>To explore and demo all of the pdfRest API Tools, visit the API Lab at \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\u003C\u002Fa>. For more detailed information on the API, refer to the API Reference documentation at \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Cp>Note: This is an example of a multipart API call. Code samples using JSON payloads can be found at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FPHP\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Fpdf-with-added-attachment.php\">GitHub - datalogics\u002Fpdf-rest-api-samples\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2024-02-06T22:58:20.000+00:00","2026-09-10T20:19:11.000+00:00","Learn how to use PHP to add attachments to PDF files by calling Add to PDF API tool by pdfRest.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-attachments-to-pdf-files-with-php\u002F#article\",\n      \"headline\": \"How to Add Attachments to PDF Files with PHP\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-attachments-to-pdf-files-with-php\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-attachments-to-pdf-files-with-php\u002F\",\n      \"datePublished\": \"2024-02-06T22:58:20.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:53.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to use PHP to add attachments to PDF files by calling Add to PDF API tool by pdfRest.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Add to PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fpdf-with-added-attachment API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fadd-to-pdf\"\n        }\n      ],\n      \"keywords\": \"Add to PDF, Optimization, PHP\",\n      \"dependencies\": \"PHP, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Add Attachments to PDF Files with PHP\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-attachments-to-pdf-files-with-php\u002F\"\n        }\n      ]\n    }\n  ]\n}",[2786,2787,2788,2789,2790],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1842,"name":1843,"slug":1844,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2227,"name":2228,"slug":2229,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1891,"name":1892,"slug":1893,"description":1283,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":1283,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-add-attachments-to-pdf-files-with-php\u002F","How to Add Attachments to PDF Files with PHP, Tutorial | pdfRest","Unlock PDF attachment capabilities in PHP with pdfRest's Add to PDF API tool. Seamlessly enhance your PDF workflow.",{"id":2796,"uuid":2797,"title":2798,"slug":2799,"html":2800,"comment_id":2796,"feature_image":48,"featured":284,"visibility":1257,"created_at":2801,"updated_at":2802,"published_at":2801,"custom_excerpt":2783,"codeinjection_head":2803,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":2804,"primary_tag":2809,"url":2810,"excerpt":2783,"reading_time":295,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":2811,"meta_description":2783,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65c54b57533c9f26b943612e","aa5c8fba-b22f-4f57-8514-c77ea4c18f81","How to Add Attachments to PDF Files with Python","how-to-add-attachments-to-pdf-files-with-python","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Add Attachments to PDF with Python?\u003C\u002Fh2>\n\n\u003Cp>The pdfRest \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F'>Add to PDF API Tool\u003C\u002Fa> is a powerful resource for developers who need to programmatically add attachments to PDF documents. This tutorial will guide you through the process of sending an API call to Add to PDF using Python. For instance, if you're generating reports that require supplementary documents (like source data or additional references) to be bundled together for distribution, the Add to PDF API can automate this process, saving time and reducing the potential for errors.\u003C\u002Fp>\n\n\u003Ch2>Add Attachments to PDF with Python Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-python\">from requests_toolbelt import MultipartEncoder\nimport requests\nimport json\n\npdf_with_added_attachment_endpoint_url = 'https:\u002F\u002Fapi.pdfrest.com\u002Fpdf-with-added-attachment'\n\nmp_encoder_pdfWithAddedAttachment = MultipartEncoder(\n    fields={\n        'file': ('file_name', open('\u002Fpath\u002Fto\u002Ffile', 'rb'), 'application\u002Fpdf'),\n        'file_to_attach': ('file_name', open('\u002Fpath\u002Fto\u002Ffile', 'rb'), 'application\u002Fxml'), # Update content type\n        'output' : 'example_out',\n    }\n)\n\nheaders = {\n    'Accept': 'application\u002Fjson',\n    'Content-Type': mp_encoder_pdfWithAddedAttachment.content_type,\n    'Api-Key': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' # place your api key here\n}\n\nprint(\"Sending POST request to pdf-with-added-attachment endpoint...\")\nresponse = requests.post(pdf_with_added_attachment_endpoint_url, data=mp_encoder_pdfWithAddedAttachment, headers=headers)\n\nprint(\"Response status code: \" + str(response.status_code))\n\nif response.ok:\n    response_json = response.json()\n    print(json.dumps(response_json, indent = 2))\nelse:\n    print(response.text)\n\u003C\u002Fpre>\n\n\u003Cp>Source: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FPython\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fpdf-with-added-attachment.py\">pdf-rest-api-samples\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>The code provided makes a POST request to the pdfRest Add to PDF API endpoint. Let's break down the key components:\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">mp_encoder_pdfWithAddedAttachment = MultipartEncoder(\n    fields={\n        'file': ('file_name', open('\u002Fpath\u002Fto\u002Ffile', 'rb'), 'application\u002Fpdf'),\n        'file_to_attach': ('file_name', open('\u002Fpath\u002Fto\u002Ffile', 'rb'), 'application\u002Fxml'),\n        'output' : 'example_out',\n    }\n)\n\u003C\u002Fpre>\n\n\u003Cp>This block creates a \u003Ccode>MultipartEncoder\u003C\u002Fcode> object with three fields:\u003C\u002Fp>\n\n\u003Cul>\n\u003Cli>\u003Ccode>file\u003C\u002Fcode>: The PDF file to which you want to add an attachment. Replace \u003Ccode>'\u002Fpath\u002Fto\u002Ffile'\u003C\u002Fcode> with the actual file path.\u003C\u002Fli>\n\u003Cli>\u003Ccode>file_to_attach\u003C\u002Fcode>: The file you want to attach to the PDF. Update the content type (e.g., 'application\u002Fxml') to match the file's type.\u003C\u002Fli>\n\u003Cli>\u003Ccode>output\u003C\u002Fcode>: The desired name for the output file.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Cpre class=\"language-python\">headers = {\n    'Accept': 'application\u002Fjson',\n    'Content-Type': mp_encoder_pdfWithAddedAttachment.content_type,\n    'Api-Key': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'\n}\n\u003C\u002Fpre>\n\n\u003Cp>Here, headers for the request are set up, including the API key which you must replace with your own.\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">response = requests.post(pdf_with_added_attachment_endpoint_url, data=mp_encoder_pdfWithAddedAttachment, headers=headers)\n\u003C\u002Fpre>\n\n\u003Cp>This line sends the POST request to the specified endpoint with the data and headers configured above.\u003C\u002Fp>\n\n\u003Cp>The rest of the code handles the response, printing out the status code and the response content, formatted as JSON if the request was successful.\u003C\u002Fp>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>By following the steps above, you've learned how to send an API call to add attachments to a PDF using Python. This capability is essential for automating document workflows and integrating PDF functionalities into your applications.\u003C\u002Fp>\n\n\u003Cp>Feel free to demo all of the pdfRest API Tools in the API Lab at \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\u003C\u002Fa> and refer to the API Reference documentation at \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\u003C\u002Fa> for more information.\u003C\u002Fp>\n\n\u003Cp>Note: This is an example of a multipart API call. Code samples using JSON payloads can be found at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FPython\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Fpdf-with-added-attachment.py\">pdf-rest-api-samples\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2024-02-08T21:44:55.000+00:00","2026-09-02T18:26:37.000+00:00","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-attachments-to-pdf-files-with-python\u002F#article\",\n      \"headline\": \"How to Add Attachments to PDF Files with Python\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-attachments-to-pdf-files-with-python\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-attachments-to-pdf-files-with-python\u002F\",\n      \"datePublished\": \"2024-02-08T21:44:55.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:51.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to use PHP to add attachments to PDF files by calling Add to PDF API tool by pdfRest.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Add to PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fpdf-with-added-attachment API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fadd-to-pdf\"\n        }\n      ],\n      \"keywords\": \"Add to PDF, Python\",\n      \"dependencies\": \"Python, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Add Attachments to PDF Files with Python\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-attachments-to-pdf-files-with-python\u002F\"\n        }\n      ]\n    }\n  ]\n}",[2805,2806,2807,2808],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1842,"name":1843,"slug":1844,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2219,"name":2220,"slug":2221,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-add-attachments-to-pdf-files-with-python\u002F","How to Add Attachments to PDF Files with Python, Tutorial | pdfRest",{"id":2813,"uuid":2814,"title":2815,"slug":2816,"html":2817,"comment_id":2813,"feature_image":48,"featured":284,"visibility":1257,"created_at":2818,"updated_at":2819,"published_at":2818,"custom_excerpt":2820,"codeinjection_head":2821,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":2822,"primary_tag":2827,"url":2828,"excerpt":2820,"reading_time":320,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":2829,"meta_description":2820,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"66071376533c9f26b9436e78","73197296-cc5d-422c-abd7-dce9778e979b","How to Add Images to PDF Files in .NET with C#","how-to-add-images-to-pdf-files-in-net-with-c","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Add Images to PDF with C#?\u003C\u002Fh2>\n\n\u003Cp>The pdfRest \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F'>Add to PDF API Tool\u003C\u002Fa> is a powerful resource for developers looking to automate the process of manipulating PDF files. This API allows you to programmatically add images to PDF documents, which can be useful for generating reports, creating personalized documents, or simply enhancing the visual aspect of your PDFs.\u003C\u002Fp>\n  \n\u003Cp>This tutorial will guide you through the steps of sending an API call to the Add to PDF endpoint using C#.\u003C\u002Fp>\n\n\u003Cp>In the real world, you might use the Add to PDF feature to embed company logos, signatures, or product images into invoices, contracts, or brochures. For example, a real estate agency might use it to add photos of properties to their PDF brochures, or a legal firm might embed signed pages into contract PDFs. This functionality is essential for businesses looking to streamline their document workflows and maintain a high level of professionalism in their digital documents.\u003C\u002Fp>\n\n\u003Ch2>Add Images to PDF with C# Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-csharp\">using System.Text;\n\nusing (var httpClient = new HttpClient { BaseAddress = new Uri(\"https:\u002F\u002Fapi.pdfrest.com\") })\n{\n    using (var request = new HttpRequestMessage(HttpMethod.Post, \"pdf-with-added-image\"))\n    {\n        request.Headers.TryAddWithoutValidation(\"Api-Key\", \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\");\n        request.Headers.Accept.Add(new(\"application\u002Fjson\"));\n        var multipartContent = new MultipartFormDataContent();\n\n        var byteArray = File.ReadAllBytes(\"\u002Fpath\u002Fto\u002Ffile\");\n        var byteAryContent = new ByteArrayContent(byteArray);\n        multipartContent.Add(byteAryContent, \"file\", \"file_name\");\n        byteAryContent.Headers.TryAddWithoutValidation(\"Content-Type\", \"application\u002Fpdf\");\n\n        var byteArray2 = File.ReadAllBytes(\"\u002Fpath\u002Fto\u002Ffile\");\n        var byteAryContent2 = new ByteArrayContent(byteArray2);\n        multipartContent.Add(byteAryContent2, \"image_file\", \"file_name\");\n        byteAryContent2.Headers.TryAddWithoutValidation(\"Content-Type\", \"image\u002Fpng\");\n\n        var byteArrayOption = new ByteArrayContent(Encoding.UTF8.GetBytes(\"1\"));\n        multipartContent.Add(byteArrayOption, \"page\");\n\n        var byteArrayOption2 = new ByteArrayContent(Encoding.UTF8.GetBytes(\"0\"));\n        multipartContent.Add(byteArrayOption2, \"x\");\n        var byteArrayOption3 = new ByteArrayContent(Encoding.UTF8.GetBytes(\"0\"));\n        multipartContent.Add(byteArrayOption3, \"y\");\n\n        request.Content = multipartContent;\n        var response = await httpClient.SendAsync(request);\n\n        var apiResult = await response.Content.ReadAsStringAsync();\n\n        Console.WriteLine(\"API response received.\");\n        Console.WriteLine(apiResult);\n    }\n}\n\u003C\u002Fpre>\n\n\u003Cp>Source: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FDotNET\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fpdf-with-added-image.cs\">pdf-rest-api-samples on GitHub\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>The provided C# code demonstrates how to make a multipart\u002Fform-data POST request to the pdfRest API to add an image to a PDF file. Let's break down the key components:\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">using (var httpClient = new HttpClient { BaseAddress = new Uri(\"https:\u002F\u002Fapi.pdfrest.com\") })\n\u003C\u002Fpre>\n\n\u003Cp>This initializes a new instance of the HttpClient class and sets the base address for the API calls to the pdfRest API.\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">request.Headers.TryAddWithoutValidation(\"Api-Key\", \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\");\n\u003C\u002Fpre>\n\n\u003Cp>An API key is added to the request headers for authentication. Replace the placeholder with your actual pdfRest API key.\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">var multipartContent = new MultipartFormDataContent();\n\u003C\u002Fpre>\n\n\u003Cp>This creates a new instance of MultipartFormDataContent, which will hold the PDF and image files, as well as additional options.\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">multipartContent.Add(byteAryContent, \"file\", \"file_name\");\nbyteAryContent.Headers.TryAddWithoutValidation(\"Content-Type\", \"application\u002Fpdf\");\n\u003C\u002Fpre>\n\n\u003Cp>The PDF file content is added to the multipart form data. The \"file\" key is used for the PDF, and the Content-Type is set to \"application\u002Fpdf\".\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">multipartContent.Add(byteAryContent2, \"image_file\", \"file_name\");\nbyteAryContent2.Headers.TryAddWithoutValidation(\"Content-Type\", \"image\u002Fpng\");\n\u003C\u002Fpre>\n\n\u003Cp>Similarly, the image file content is added with the key \"image_file\", and its Content-Type is set based on the image format (in this case, \"image\u002Fpng\").\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">multipartContent.Add(byteArrayOption, \"page\");\nmultipartContent.Add(byteArrayOption2, \"x\");\nmultipartContent.Add(byteArrayOption3, \"y\");\n\u003C\u002Fpre>\n\n\u003Cp>Additional options are added to specify the page number and the x, y coordinates on the page where the image should be placed. These are encoded as byte arrays and added to the multipart content.\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">var response = await httpClient.SendAsync(request);\n\u003C\u002Fpre>\n\n\u003Cp>The request is sent asynchronously, and the response is awaited.\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">var apiResult = await response.Content.ReadAsStringAsync();\n\u003C\u002Fpre>\n\n\u003Cp>The content of the response is read as a string, which contains the result of the API call.\u003C\u002Fp>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>This tutorial has demonstrated how to use C# to make an API call to the pdfRest Add to PDF endpoint to add an image to a PDF file. By following these steps, you can integrate this functionality into your own applications and automate the process of enhancing PDF documents with images.\u003C\u002Fp>\n\n\u003Cp>To explore further and demo all of the pdfRest API Tools, visit the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. For comprehensive documentation and additional details on the API endpoints, refer to the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">API Reference Guide\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Cp>Note: This is an example of a multipart API call. For code samples using JSON payloads, visit the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FDotNET\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Fpdf-with-added-image.cs\">pdf-rest-api-samples on GitHub\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2024-03-29T19:16:06.000+00:00","2026-09-02T18:26:38.000+00:00","Learn how to use .NET to add an image to a PDF by calling Add to PDF API Tool by pdfRest.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-images-to-pdf-files-in-net-with-c\u002F#article\",\n      \"headline\": \"How to Add Images to PDF Files in .NET with C#\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-images-to-pdf-files-in-net-with-c\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-images-to-pdf-files-in-net-with-c\u002F\",\n      \"datePublished\": \"2024-03-29T19:16:06.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:35.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to use .NET to add an image to a PDF by calling Add to PDF API Tool by pdfRest.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Add to PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fpdf-with-added-image API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fadd-to-pdf\"\n        }\n      ],\n      \"keywords\": \".NET, Add to PDF\",\n      \"dependencies\": \".NET, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Add Images to PDF Files in .NET with C#\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-images-to-pdf-files-in-net-with-c\u002F\"\n        }\n      ]\n    }\n  ]\n}",[2823,2824,2825,2826],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1842,"name":1843,"slug":1844,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2231,"name":2232,"slug":2233,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-add-images-to-pdf-files-in-net-with-c\u002F","How to Add Images to PDF Files in .NET with C#, Tutorial | pdfRest",{"id":2831,"uuid":2832,"title":2833,"slug":2834,"html":2835,"comment_id":2831,"feature_image":48,"featured":284,"visibility":1257,"created_at":2836,"updated_at":2837,"published_at":2836,"custom_excerpt":2838,"codeinjection_head":2839,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":2840,"primary_tag":2845,"url":2846,"excerpt":2838,"reading_time":295,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":2847,"meta_description":2838,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65fdff2b533c9f26b9436cb4","eb7597b4-2f7c-4820-9b63-85c0c02f9ca0","How to Add Images to PDF Files with cURL","how-to-add-images-to-pdf-with-curl","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Add Images to PDF Files with cURL?\u003C\u002Fh2>\n\n\u003Cp>The pdfRest \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F'>Add to PDF API Tool\u003C\u002Fa> is a powerful resource for developers looking to automate the process of adding images to PDF documents. This tool is part of the pdfRest suite of APIs, which provide a range of functionalities for PDF manipulation and conversion. In this tutorial, we will demonstrate how to use cURL, a command-line tool for making HTTP requests, to call the Add to PDF API endpoint. cURL is widely supported and can be used on almost any platform, making it a versatile choice for interacting with web APIs like pdfRest.\u003C\u002Fp>\n\n\u003Cp>Imagine you're developing an application that generates reports and you need to add your company logo or relevant images to the PDFs before they are sent to clients. The Add to PDF API allows you to do just that programmatically, ensuring that each document is branded consistently without manual intervention. This can save time and reduce errors, especially when dealing with a large volume of documents.\u003C\u002Fp>\n\n\u003Ch2>Add Images to PDF Files with cURL Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-bash\">curl -X POST \"https:\u002F\u002Fapi.pdfrest.com\u002Fpdf-with-added-image\" \\\n  -H \"Accept: application\u002Fjson\" \\\n  -H \"Content-Type: multipart\u002Fform-data\" \\\n  -H \"Api-Key: xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\" \\\n  -F \"file=@\u002Fpath\u002Fto\u002Ffile\" \\\n  -F \"image_file=@\u002Fpath\u002Fto\u002Ffile\" \\\n  -F \"output=example_out\" \\\n  -F \"x=10\" \\\n  -F \"y=10\" \\\n  -F \"page=1\"\n\u003C\u002Fpre>\n\n\u003Cp>Reference: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FcURL\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fpdf-with-added-image.sh\">pdfRest API cURL Samples\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>The code provided is a cURL command that makes a POST request to the pdfRest Add to PDF API endpoint. Let's break down the key components of this request:\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">-X POST \"https:\u002F\u002Fapi.pdfrest.com\u002Fpdf-with-added-image\"\n\u003C\u002Fpre>\n\n\u003Cp>This line specifies the HTTP method (POST) and the API endpoint URL.\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">-H \"Accept: application\u002Fjson\"\n-H \"Content-Type: multipart\u002Fform-data\"\n-H \"Api-Key: xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"\n\u003C\u002Fpre>\n\n\u003Cp>The \u003Ccode>-H\u003C\u002Fcode> flag adds HTTP headers to the request. The \"Accept\" header tells the server the client expects JSON in response. The \"Content-Type\" header indicates that the request body will be sent as multipart\u002Fform-data, which is necessary for uploading files. The \"Api-Key\" header is where you would include your unique API key provided by pdfRest.\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">-F \"file=@\u002Fpath\u002Fto\u002Ffile\"\n-F \"image_file=@\u002Fpath\u002Fto\u002Ffile\"\n-F \"output=example_out\"\n-F \"x=10\"\n-F \"y=10\"\n-F \"page=1\"\n\u003C\u002Fpre>\n\n\u003Cp>The \u003Ccode>-F\u003C\u002Fcode> flag is used to specify each part of the multipart request. The \"file\" is the path to the PDF file you want to modify, and \"image_file\" is the path to the image you want to add. The \"output\" field specifies the base name for the output file. The \"x\" and \"y\" fields set the coordinates where the image will be placed on the PDF page (measured in PDF Units, where 1 PDF Unit = 1\u002F72\"). The \"page\" field specifies the page number where the image should be added.\u003C\u002Fp>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>By following the steps in this tutorial, you've learned how to make an API call to pdfRest's Add to PDF endpoint using cURL. This capability enables you to automate the process of adding images to PDF documents, which can be integrated into various workflows and applications.\u003C\u002Fp>\n\n\u003Cp>For further exploration and to demo all of the pdfRest API Tools, visit the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. You can also find more detailed information in the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">API Reference Guide\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Cp>Note: This is an example of a multipart API call. For code samples using JSON payloads, you can visit \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FcURL\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Fpdf-with-added-image.sh\">pdfRest API cURL Samples with JSON Payload\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2024-03-22T21:59:07.000+00:00","2026-09-02T18:26:39.000+00:00","Learn how to add images to PDF using pdfRest Add to PDF API Tool with cURL","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-images-to-pdf-with-curl\u002F#article\",\n      \"headline\": \"How to Add Images to PDF Files with cURL\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-images-to-pdf-with-curl\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-images-to-pdf-with-curl\u002F\",\n      \"datePublished\": \"2024-03-22T21:59:07.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:36.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to add images to PDF using pdfRest Add to PDF API Tool with cURL\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Add to PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fpdf-with-added-image API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fadd-to-pdf\"\n        }\n      ],\n      \"keywords\": \"Add to PDF, cURL\",\n      \"dependencies\": \"cURL, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Add Images to PDF Files with cURL\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-images-to-pdf-with-curl\u002F\"\n        }\n      ]\n    }\n  ]\n}",[2841,2842,2843,2844],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1842,"name":1843,"slug":1844,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2239,"name":2240,"slug":2241,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-add-images-to-pdf-with-curl\u002F","How to Add Images to PDF Files with cURL, Tutorial | pdfRest",{"id":2849,"uuid":2850,"title":2851,"slug":2852,"html":2853,"comment_id":2849,"feature_image":48,"featured":284,"visibility":1257,"created_at":2854,"updated_at":2855,"published_at":2854,"custom_excerpt":2856,"codeinjection_head":2857,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":2858,"primary_tag":2863,"url":2864,"excerpt":2856,"reading_time":320,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":2865,"meta_description":2856,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"6607132e533c9f26b9436e6a","69557d8f-4d1d-49a0-bc20-b865f4d58e2a","How to Add Images to PDF Files with Java","how-to-add-images-to-pdf-files-with-java","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Add Images to PDF with Java?\u003C\u002Fh2>\n\n\u003Cp>The pdfRest \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F'>Add to PDF API Tool\u003C\u002Fa> provides a convenient way to programmatically add images to PDF documents. By using this API, developers can automate the process of manipulating PDF files, which can be particularly useful when dealing with large volumes of documents or when customizing documents on-the-fly.\u003C\u002Fp> \n  \n\u003Cp>This tutorial will guide you through the process of sending an API call to Add to PDF using Java, showcasing how to integrate this functionality into Java applications.\u003C\u002Fp>\n\n\u003Cp>Consider a real-world scenario where a company needs to add their logo to a batch of invoices generated as PDFs, or a user wants to embed scanned signatures into contracts. The Add to PDF API tool simplifies these tasks by allowing users to programmatically insert images into specific locations within a PDF, saving time and reducing the risk of manual errors.\u003C\u002Fp>\n\n\u003Ch2>Add Images to PDF with Java Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-java\">import io.github.cdimascio.dotenv.Dotenv;\nimport java.io.File;\nimport java.io.IOException;\nimport java.util.concurrent.TimeUnit;\nimport okhttp3.*;\nimport org.json.JSONObject;\n\npublic class PDFWithAddedImage {\n\n  \u002F\u002F Specify the path to your file here, or as the first argument when running the program.\n  private static final String DEFAULT_FILE_PATH = \"\u002Fpath\u002Fto\u002Ffile.pdf\";\n\n  \u002F\u002F Specify the path to your image file here, or as the second argument when running the\n  \u002F\u002F program.\n  private static final String DEFAULT_IMAGE_PATH = \"\u002Fpath\u002Fto\u002Ffile.xml\";\n\n  \u002F\u002F Specify your API key here, or in the environment variable PDFREST_API_KEY.\n  \u002F\u002F You can also put the environment variable in a .env file.\n  private static final String DEFAULT_API_KEY = \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\";\n\n  public static void main(String[] args) {\n    File inputFile, imageFile;\n    if (args.length > 1) {\n      inputFile = new File(args[0]);\n      imageFile = new File(args[1]);\n    } else {\n      inputFile = new File(DEFAULT_FILE_PATH);\n      imageFile = new File(DEFAULT_IMAGE_PATH);\n    }\n\n    final Dotenv dotenv = Dotenv.configure().ignoreIfMalformed().ignoreIfMissing().load();\n\n    final RequestBody inputFileRequestBody =\n        RequestBody.create(inputFile, MediaType.parse(\"application\u002Fpdf\"));\n    final RequestBody imageFileRequestBody =\n        RequestBody.create(imageFile, MediaType.parse(\"application\u002Fpng\"));\n    RequestBody requestBody =\n        new MultipartBody.Builder()\n            .setType(MultipartBody.FORM)\n            .addFormDataPart(\"file\", inputFile.getName(), inputFileRequestBody)\n            .addFormDataPart(\"image_file\", imageFile.getName(), imageFileRequestBody)\n            .addFormDataPart(\"page\", \"1\")\n            .addFormDataPart(\"x\", \"0\")\n            .addFormDataPart(\"y\", \"0\")\n            .build();\n    Request request =\n        new Request.Builder()\n            .header(\"Api-Key\", dotenv.get(\"PDFREST_API_KEY\", DEFAULT_API_KEY))\n            .url(\"https:\u002F\u002Fapi.pdfrest.com\u002Fpdf-with-added-image\")\n            .post(requestBody)\n            .build();\n    try {\n      OkHttpClient client =\n          new OkHttpClient().newBuilder().readTimeout(60, TimeUnit.SECONDS).build();\n      Response response = client.newCall(request).execute();\n      System.out.println(\"Result code \" + response.code());\n      if (response.body() != null) {\n        System.out.println(prettyJson(response.body().string()));\n      }\n    } catch (IOException e) {\n      throw new RuntimeException(e);\n    }\n  }\n\n  private static String prettyJson(String json) {\n    \u002F\u002F https:\u002F\u002Fstackoverflow.com\u002Fa\u002F9583835\u002F11996393\n    return new JSONObject(json).toString(4);\n  }\n}\n\u003C\u002Fpre>\n\n\u003Cp>Code source: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FJava\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002FPDFWithAddedImage.java\">GitHub\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>The Java code provided above demonstrates how to make a multipart API call to the pdfRest Add to PDF endpoint. Let's break down the key components:\u003C\u002Fp>\n\n\u003Cpre class=\"language-java\">final Dotenv dotenv = Dotenv.configure().ignoreIfMalformed().ignoreIfMissing().load();\n\u003C\u002Fpre>\n\n\u003Cp>This line initializes the Dotenv library to load the API key from a .env file or an environment variable. It gracefully handles missing or malformed .env files.\u003C\u002Fp>\n\n\u003Cpre class=\"language-java\">RequestBody requestBody = new MultipartBody.Builder()\n  .setType(MultipartBody.FORM)\n  .addFormDataPart(\"file\", inputFile.getName(), inputFileRequestBody)\n  .addFormDataPart(\"image_file\", imageFile.getName(), imageFileRequestBody)\n  .addFormDataPart(\"page\", \"1\")\n  .addFormDataPart(\"x\", \"0\")\n  .addFormDataPart(\"y\", \"0\")\n  .build();\n\u003C\u002Fpre>\n\n\u003Cp>This snippet constructs the multipart request body. It includes the PDF file, the image file, and the parameters specifying the page number and the (x, y) coordinates where the image will be placed on the PDF.\u003C\u002Fp>\n\n\u003Cpre class=\"language-java\">Request request = new Request.Builder()\n  .header(\"Api-Key\", dotenv.get(\"PDFREST_API_KEY\", DEFAULT_API_KEY))\n  .url(\"https:\u002F\u002Fapi.pdfrest.com\u002Fpdf-with-added-image\")\n  .post(requestBody)\n  .build();\n\u003C\u002Fpre>\n\n\u003Cp>This creates the HTTP request with the necessary headers, including the API key, and specifies the POST method with the previously built request body.\u003C\u002Fp>\n\n\u003Cpre class=\"language-java\">Response response = client.newCall(request).execute();\n\u003C\u002Fpre>\n\n\u003Cp>This line sends the HTTP request to the pdfRest API and captures the response. The response code and body are then printed out, with the body being formatted as pretty JSON.\u003C\u002Fp>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>In this tutorial, you've learned how to use Java to make an API call to pdfRest's Add to PDF endpoint to add an image to a PDF document. By understanding how to construct and send a multipart request, you can now integrate this functionality into your own Java applications for various document processing tasks.\u003C\u002Fp>\n\n\u003Cp>To explore and demo all of the pdfRest API Tools, visit the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. For more detailed information, refer to the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">API Reference Guide\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Cp>Note: This is an example of a multipart API call. Code samples using JSON payloads can be found at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FJava\u002FEndpoint%20Examples\u002FJSON%20Payload\u002FPDFWithAddedImage.java\">GitHub\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2024-03-29T19:14:54.000+00:00","2026-09-02T18:26:40.000+00:00","Learn how to use Java to add an image to a PDF by calling Add to PDF API Tool by pdfRest.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-images-to-pdf-files-with-java\u002F#article\",\n      \"headline\": \"How to Add Images to PDF Files with Java\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-images-to-pdf-files-with-java\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-images-to-pdf-files-with-java\u002F\",\n      \"datePublished\": \"2024-03-29T19:14:54.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:36.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to use Java to add an image to a PDF by calling Add to PDF API Tool by pdfRest.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Add to PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fpdf-with-added-image API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fadd-to-pdf\"\n        }\n      ],\n      \"keywords\": \"Add to PDF, Java\",\n      \"dependencies\": \"Java, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Add Images to PDF Files with Java\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-images-to-pdf-files-with-java\u002F\"\n        }\n      ]\n    }\n  ]\n}",[2859,2860,2861,2862],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1842,"name":1843,"slug":1844,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2235,"name":2236,"slug":2237,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-add-images-to-pdf-files-with-java\u002F","How to Add Images to PDF Files with Java, Tutorial | pdfRest",{"id":2867,"uuid":2868,"title":2869,"slug":2870,"html":2871,"comment_id":2867,"feature_image":48,"featured":284,"visibility":1257,"created_at":2872,"updated_at":2855,"published_at":2872,"custom_excerpt":2873,"codeinjection_head":2874,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":2875,"primary_tag":2880,"url":2881,"excerpt":2873,"reading_time":320,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":2882,"meta_description":2873,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"660712a4533c9f26b9436e56","e176a78e-92d3-4225-9e34-13c3699eadbd","How to Add Images to PDF Files with JavaScript in NodeJS","how-to-add-images-to-pdf-files-with-javascript-in-nodejs","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Add Images to PDF with JavaScript?\u003C\u002Fh2>\n\n\u003Cp>The pdfRest \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F'>Add to PDF API Tool\u003C\u002Fa> offers a powerful way to programmatically enhance PDF documents by adding images to them. This tutorial will guide you through the process of sending an API call to Add to PDF using JavaScript, a popular language for web development. By leveraging JavaScript alongside the pdfRest API, developers can seamlessly integrate PDF manipulation capabilities into their web applications or services.\u003C\u002Fp>\n\n\u003Cp>Imagine you are developing a web application for event management. Users can upload their event brochures and add sponsor logos directly onto the brochure PDFs. Using the Add to PDF API, you can automate this process, allowing users to position logos on specific pages and at precise locations within their brochures, all without needing any manual PDF editing tools.\u003C\u002Fp>\n\n\u003Ch2>Add Images to PDF with JavaScript Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-javascript\">\u002F**\n * This request demonstrates how to apply an image to a PDF. Horizontal and vertical offsets of the image are measured in PDF units. (1 inch = 72 PDF units)\n *\u002F\nvar axios = require('axios');\nvar FormData = require('form-data');\nvar fs = require('fs');\n\n\u002F\u002F Create a new form data instance and append the PDF file and parameters to it\nvar data = new FormData();\ndata.append('file', fs.createReadStream('\u002Fpath\u002Fto\u002Ffile'));\ndata.append('image_file', fs.createReadStream('\u002Fpath\u002Fto\u002Ffile'));\ndata.append('x', '0');\ndata.append('y', '0');\ndata.append('page', '1');\ndata.append('output', 'pdfrest_pdf_with_added_image');\n\n\u002F\u002F define configuration options for axios request\nvar config = {\n  method: 'post',\n  maxBodyLength: Infinity, \u002F\u002F set maximum length of the request body\n  url: 'https:\u002F\u002Fapi.pdfrest.com\u002Fpdf-with-added-image', \n  headers: { \n    'Api-Key': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', \u002F\u002F Replace with your API key\n    ...data.getHeaders() \u002F\u002F set headers for the request\n  },\n  data : data \u002F\u002F set the data to be sent with the request\n};\n\n\u002F\u002F send request and handle response or error\naxios(config)\n.then(function (response) {\n  console.log(JSON.stringify(response.data));\n})\n.catch(function (error) {\n  console.log(error); \n});\n\n\u002F\u002F If you would like to download the file instead of getting the JSON response, please see the 'get-resource-id-endpoint.js' sample.\n\u003C\u002Fpre>\n\n\u003Cp>Code provided is sourced from \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FJavaScript\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fpdf-with-added-image.js\">pdf-rest-api-samples\u003C\u002Fa> on GitHub.\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>The code provided above demonstrates how to send a multipart request to the pdfRest API to add an image to a PDF document. Let's break down the key parts:\u003C\u002Fp>\n\n\u003Cpre class=\"language-javascript\">var axios = require('axios');\nvar FormData = require('form-data');\nvar fs = require('fs');\n\u003C\u002Fpre>\n\n\u003Cp>This initializes the required modules: \u003Ccode>axios\u003C\u002Fcode> for making HTTP requests, \u003Ccode>FormData\u003C\u002Fcode> for creating multipart\u002Fform-data payloads, and \u003Ccode>fs\u003C\u002Fcode> for file system operations.\u003C\u002Fp>\n\n\u003Cpre class=\"language-javascript\">var data = new FormData();\ndata.append('file', fs.createReadStream('\u002Fpath\u002Fto\u002Ffile'));\ndata.append('image_file', fs.createReadStream('\u002Fpath\u002Fto\u002Ffile'));\ndata.append('x', '0');\ndata.append('y', '0');\ndata.append('page', '1');\ndata.append('output', 'pdfrest_pdf_with_added_image');\n\u003C\u002Fpre>\n\n\u003Cp>Here, a new \u003Ccode>FormData\u003C\u002Fcode> object is created and populated with the PDF file, image file, and parameters such as the x and y offsets (measured in PDF units), the page number to add the image to, and the desired output filename.\u003C\u002Fp>\n\n\u003Cpre class=\"language-javascript\">var config = {\n  method: 'post',\n  maxBodyLength: Infinity,\n  url: 'https:\u002F\u002Fapi.pdfrest.com\u002Fpdf-with-added-image', \n  headers: { \n    'Api-Key': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',\n    ...data.getHeaders()\n  },\n  data : data\n};\n\u003C\u002Fpre>\n\n\u003Cp>The \u003Ccode>config\u003C\u002Fcode> object contains the settings for the \u003Ccode>axios\u003C\u002Fcode> request, including the API endpoint URL, the API key for authentication, and the form data payload.\u003C\u002Fp>\n\n\u003Cpre class=\"language-javascript\">axios(config)\n.then(function (response) {\n  console.log(JSON.stringify(response.data));\n})\n.catch(function (error) {\n  console.log(error); \n});\n\u003C\u002Fpre>\n\n\u003Cp>The \u003Ccode>axios\u003C\u002Fcode> library is used to send the request and process the response. If successful, the response data is logged to the console; otherwise, the error is logged.\u003C\u002Fp>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>In this tutorial, we've learned how to use JavaScript to make an API call to pdfRest's Add to PDF endpoint, allowing us to add an image to a PDF document. This capability can be integrated into various applications to automate and enhance document workflows.\u003C\u002Fp>\n\n\u003Cp>Feel free to explore and demo all of the pdfRest API Tools in the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. For further details on the API and its capabilities, refer to the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">API Reference Guide\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Cp>Note: This is an example of a multipart API call. Code samples using JSON payloads can be found at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FJavaScript\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Fpdf-with-added-image.js\">pdf-rest-api-samples\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2024-03-29T19:12:36.000+00:00","Learn how to use JavaScript in NodeJS to add an image to a PDF by calling Add to PDF API Tool by pdfRest.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-images-to-pdf-files-with-javascript-in-nodejs\u002F#article\",\n      \"headline\": \"How to Add Images to PDF Files with JavaScript in NodeJS\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-images-to-pdf-files-with-javascript-in-nodejs\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-images-to-pdf-files-with-javascript-in-nodejs\u002F\",\n      \"datePublished\": \"2024-03-29T19:12:36.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:36.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to use JavaScript in NodeJS to add an image to a PDF by calling Add to PDF API Tool by pdfRest.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Add to PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fpdf-with-added-image API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fadd-to-pdf\"\n        }\n      ],\n      \"keywords\": \"Add to PDF, JavaScript\",\n      \"dependencies\": \"JavaScript, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Add Images to PDF Files with JavaScript in NodeJS\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-images-to-pdf-files-with-javascript-in-nodejs\u002F\"\n        }\n      ]\n    }\n  ]\n}",[2876,2877,2878,2879],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1842,"name":1843,"slug":1844,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2223,"name":2224,"slug":2225,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-add-images-to-pdf-files-with-javascript-in-nodejs\u002F","How to Add Images to PDF Files with JavaScript in NodeJS, Tutorial | pdfRest",{"id":2884,"uuid":2885,"title":2886,"slug":2887,"html":2888,"comment_id":2884,"feature_image":48,"featured":284,"visibility":1257,"created_at":2889,"updated_at":2890,"published_at":2889,"custom_excerpt":2891,"codeinjection_head":2892,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":2893,"primary_tag":2898,"url":2899,"excerpt":2891,"reading_time":295,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":2900,"meta_description":2891,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"660710bb533c9f26b9436e4c","e45b6fec-9209-4392-9418-85d39f717da2","How to Add Images to PDF Files with PHP","how-to-add-images-to-pdf-files-with-php","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Add Images to PDF with PHP?\u003C\u002Fh2>\n\n\u003Cp>The pdfRest \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F'>Add to PDF API Tool\u003C\u002Fa> provides a simple and powerful way to manipulate PDF documents programmatically. This tutorial will demonstrate how to send an API call to the Add to PDF endpoint using PHP, which allows developers to seamlessly integrate PDF processing capabilities into their applications. The Add to PDF API Tool is particularly useful for automating the task of adding images or other content to PDF files without the need for manual intervention or complex software.\u003C\u002Fp>\n\n\u003Cp>A real-world example of why a user might use the Add to PDF API could be an online printing service that needs to add branding or watermarks to PDF documents before sending them to print. Another scenario could be an invoicing system where company logos or product images need to be dynamically added to PDF invoices based on customer orders. Utilizing the Add to PDF API, these tasks can be automated, saving time and reducing errors.\u003C\u002Fp>\n\n\u003Ch2>Add Images to PDF with PHP Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-php\">\nrequire 'vendor\u002Fautoload.php';\n\nuse GuzzleHttp\\Client;\nuse GuzzleHttp\\Psr7\\Request;\nuse GuzzleHttp\\Psr7\\Utils;\n\n$client = new Client();\n\n$headers = [\n  'Api-Key' = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'\n];\n\n$options = [\n  'multipart' => [\n    [\n      'name' => 'file',\n      'contents' => Utils::tryFopen('\u002Fpath\u002Fto\u002Ffile', 'r'),\n      'filename' => '\u002Fpath\u002Fto\u002Ffile',\n      'headers' => [\n        'Content-Type' => '\u003Ccontent-type header=\"\">'\n      ]\n    ],\n    [\n      'name' => 'image_file',\n      'contents' => Utils::tryFopen('\u002Fpath\u002Fto\u002Ffile', 'r'),\n      'filename' => '\u002Fpath\u002Fto\u002Ffile',\n      'headers' => [\n        'Content-Type' => '\u003Ccontent-type header=\"\">'\n      ]\n    ],\n    [\n      'name' => 'x',\n      'contents' => '72'\n    ],\n    [\n      'name' => 'y',\n      'contents' => '72'\n    ],\n    [\n      'name' => 'page',\n      'contents' => '1'\n    ],\n    [\n      'name' => 'output',\n      'contents' => 'pdfrest_pdf_with_added_image'\n    ]\n  ]\n];\n\n$request = new Request('POST', 'https:\u002F\u002Fapi.pdfrest.com\u002Fpdf-with-added-image', $headers);\n\n$res = $client->sendAsync($request, $options)->wait();\n\necho $res->getBody();\n\n\u003C\u002Fpre>\n\n\u003Cp>This code is sourced from the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FPHP\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fpdf-with-added-image.php\">pdf-rest-api-samples repository on GitHub\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>The provided PHP code uses the Guzzle HTTP client to make a POST request to the \u003Ccode>https:\u002F\u002Fapi.pdfrest.com\u002Fpdf-with-added-image\u003C\u002Fcode> endpoint. The request is constructed with several key components:\u003C\u002Fp>\n\n\u003Cul>\n  \u003Cli>\u003Cstrong>Headers:\u003C\u002Fstrong> The 'Api-Key' header is used for authentication with the pdfRest API.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Multipart:\u003C\u002Fstrong> The 'multipart' array contains the payload for the request. It includes the main PDF file, the image file to be added, and parameters such as X and Y coordinates, page number, and output options.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>File:\u003C\u002Fstrong> The 'file' part contains the main PDF file to be processed. The 'contents' key uses the \u003Ccode>Utils::tryFopen\u003C\u002Fcode> function to read the file, and 'filename' specifies the file path.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Image File:\u003C\u002Fstrong> Similarly, the 'image_file' part includes the image to be added to the PDF. It also specifies the file path and content type.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>X and Y Coordinates:\u003C\u002Fstrong> These define the position where the image will be placed on the PDF page.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Page:\u003C\u002Fstrong> This specifies the page number where the image should be added.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Output:\u003C\u002Fstrong> This option determines the naming convention for the processed PDF file.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Cp>The \u003Ccode>Request\u003C\u002Fcode> object is created with the 'POST' method, the API endpoint, and the headers. The \u003Ccode>$client->sendAsync\u003C\u002Fcode> method sends the request asynchronously and waits for the response, which is then outputted to the screen.\u003C\u002Fp>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>In this tutorial, we've accomplished sending a multipart API call to the Add to PDF endpoint of the pdfRest API using PHP. The code example demonstrates how to add an image to a PDF document programmatically. Users can now explore other capabilities of the pdfRest API and integrate them into their applications for a wide range of PDF processing needs.\u003C\u002Fp>\n\n\u003Cp>To learn more and experiment with the full range of pdfRest API Tools, visit the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. For detailed documentation and additional resources, refer to the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">API Reference Guide\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Cp>Note: This is an example of a multipart API call. Code samples using JSON payloads can be found at the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FPHP\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Fpdf-with-added-image.php\">pdf-rest-api-samples repository on GitHub\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2024-03-29T19:04:27.000+00:00","2026-09-02T18:26:41.000+00:00","Learn how to use PHP to add an image to a PDF by calling Add to PDF API Tool by pdfRest.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-images-to-pdf-files-with-php\u002F#article\",\n      \"headline\": \"How to Add Images to PDF Files with PHP\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-images-to-pdf-files-with-php\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-images-to-pdf-files-with-php\u002F\",\n      \"datePublished\": \"2024-03-29T19:04:27.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:36.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to use PHP to add an image to a PDF by calling Add to PDF API Tool by pdfRest.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Add to PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fpdf-with-added-image API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fadd-to-pdf\"\n        }\n      ],\n      \"keywords\": \"Add to PDF, PHP\",\n      \"dependencies\": \"PHP, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Add Images to PDF Files with PHP\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-images-to-pdf-files-with-php\u002F\"\n        }\n      ]\n    }\n  ]\n}",[2894,2895,2896,2897],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1842,"name":1843,"slug":1844,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2227,"name":2228,"slug":2229,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-add-images-to-pdf-files-with-php\u002F","How to Add Images to PDF Files with PHP, Tutorial | pdfRest",{"id":2902,"uuid":2903,"title":2904,"slug":2905,"html":2906,"comment_id":2902,"feature_image":48,"featured":284,"visibility":1257,"created_at":2907,"updated_at":2890,"published_at":2907,"custom_excerpt":2908,"codeinjection_head":2909,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":2910,"primary_tag":2915,"url":2916,"excerpt":2908,"reading_time":295,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":2917,"meta_description":2908,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"660712db533c9f26b9436e60","a404cdcb-9917-4d48-b23b-12d986abf91f","How to Add Images to PDF Files with Python","how-to-add-images-to-pdf-files-with-python","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Add Images to PDF with Python?\u003C\u002Fh2>\n\n\u003Cp>The pdfRest \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F'>Add to PDF API Tool\u003C\u002Fa> is a powerful resource for developers looking to automate the process of manipulating PDF documents. This tool allows you to seamlessly add images to existing PDF files, which can be particularly useful for generating reports, customizing documents, or simply adding visual content to your PDFs.\u003C\u002Fp> \n  \n\u003Cp>This tutorial will guide you through the process of sending an API call to the Add to PDF endpoint using Python, enabling you to enhance your PDFs programmatically.\u003C\u002Fp>\n\n\u003Cp>In the real world, a user might need to add a company logo to a batch of invoices, insert a graph or chart into a financial report, or place a signature image onto a contract. Automating this process saves time and reduces the potential for errors that come with manual editing. By using Python, a widely-used programming language for automation, you can integrate this functionality into your applications or workflows with ease.\u003C\u002Fp>\n\n\u003Ch2>Add Images to PDF with Python Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-python\">from requests_toolbelt import MultipartEncoder\nimport requests\nimport json\n\npdf_with_added_image_endpoint_url = 'https:\u002F\u002Fapi.pdfrest.com\u002Fpdf-with-added-image'\n\nmp_encoder_pdfWithAddedImage = MultipartEncoder(\n    fields={\n        'file': ('file_name.pdf', open('\u002Fpath\u002Fto\u002Ffile', 'rb'), 'application\u002Fpdf'),\n        'image_file': ('file_name.jpg', open('\u002Fpath\u002Fto\u002Ffile', 'rb'), 'image\u002Fjpeg'),\n        'output' : 'example_out',\n        'x' : '10',\n        'y' : '10',\n        'page' : '1',\n    }\n)\n\nheaders = {\n    'Accept': 'application\u002Fjson',\n    'Content-Type': mp_encoder_pdfWithAddedImage.content_type,\n    'Api-Key': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' # place your api key here\n}\n\nprint(\"Sending POST request to pdf-with-added-image endpoint...\")\nresponse = requests.post(pdf_with_added_image_endpoint_url, data=mp_encoder_pdfWithAddedImage, headers=headers)\n\nprint(\"Response status code: \" + str(response.status_code))\n\nif response.ok:\n    response_json = response.json()\n    print(json.dumps(response_json, indent = 2))\nelse:\n    print(response.text)\n\u003C\u002Fpre>\n\n\u003Cp>Source code obtained from the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FPython\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fpdf-with-added-image.py\">pdf-rest-api-samples repository on GitHub\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\n\u003Cp>In the provided code, we first import necessary modules: \u003Ccode class=\"language-python\">MultipartEncoder\u003C\u002Fcode> from \u003Ccode class=\"language-python\">requests_toolbelt\u003C\u002Fcode> for encoding multipart form data, \u003Ccode class=\"language-python\">requests\u003C\u002Fcode> for making HTTP requests, and \u003Ccode class=\"language-python\">json\u003C\u002Fcode> for handling JSON data.\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">from requests_toolbelt import MultipartEncoder\nimport requests\nimport json\u003C\u002Fpre>\n\n\n\u003Cp>The \u003Ccode class=\"language-python\">MultipartEncoder\u003C\u002Fcode> is used to create a multipart-encoded payload containing the PDF and image files to be uploaded, along with additional parameters such as the desired output file name, the x and y coordinates for where the image should be placed on the PDF, and the page number where the image should be added.\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">mp_encoder_pdfWithAddedImage = MultipartEncoder(\n    fields={\n        'file': ('file_name.pdf', open('\u002Fpath\u002Fto\u002Ffile', 'rb'), 'application\u002Fpdf'),\n        'image_file': ('file_name.jpg', open('\u002Fpath\u002Fto\u002Ffile', 'rb'), 'image\u002Fjpeg'),\n        'output' : 'example_out',\n        'x' : '10',\n        'y' : '10',\n        'page' : '1',\n    }\n)\u003C\u002Fpre>\n\n\u003Cp>Headers are set to accept JSON responses and to include the content type provided by the \u003Ccode class=\"language-python\">MultipartEncoder\u003C\u002Fcode>. An API key is also included in the headers for authentication. Replace \u003Ccode class=\"language-python\">'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'\u003C\u002Fcode> with your actual pdfRest API key.\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">headers = {\n    'Accept': 'application\u002Fjson',\n    'Content-Type': mp_encoder_pdfWithAddedImage.content_type,\n    'Api-Key': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' # place your api key here\n}\n\u003C\u002Fpre>\n\n\u003Cp>A POST request is then sent to the \u003Ccode class=\"language-python\">pdf_with_added_image_endpoint_url\u003C\u002Fcode> with the encoded data and headers. The response is checked for success, and the resulting JSON is printed out if the request was successful. If not, the error text is displayed.\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">print(\"Sending POST request to pdf-with-added-image endpoint...\")\nresponse = requests.post(pdf_with_added_image_endpoint_url, data=mp_encoder_pdfWithAddedImage, headers=headers)\n\nprint(\"Response status code: \" + str(response.status_code))\n\nif response.ok:\n    response_json = response.json()\n    print(json.dumps(response_json, indent = 2))\nelse:\n    print(response.text)\u003C\u002Fpre>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>By following this tutorial, you've learned how to use Python to send a multipart API call to the pdfRest Add to PDF API Tool to add an image to a PDF. This can be integrated into larger applications or used as a standalone script to automate PDF manipulation tasks.\u003C\u002Fp>\n\n\u003Cp>To explore more capabilities and demo all of the pdfRest API Tools, visit the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. For detailed information about the API, refer to the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">API Reference Guide\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Cp>Note: This is an example of a multipart API call. Code samples using JSON payloads can be found at the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FPython\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Fpdf-with-added-image.py\">pdf-rest-api-samples repository on GitHub\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2024-03-29T19:13:31.000+00:00","Learn how to use Python to add an image to a PDF by calling Add to PDF API Tool by pdfRest.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-images-to-pdf-files-with-python\u002F#article\",\n      \"headline\": \"How to Add Images to PDF Files with Python\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-images-to-pdf-files-with-python\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-images-to-pdf-files-with-python\u002F\",\n      \"datePublished\": \"2024-03-29T19:13:31.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:36.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to use Python to add an image to a PDF by calling Add to PDF API Tool by pdfRest.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Add to PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fpdf-with-added-image API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fadd-to-pdf\"\n        }\n      ],\n      \"keywords\": \"Add to PDF, Python\",\n      \"dependencies\": \"Python, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Add Images to PDF Files with Python\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-images-to-pdf-files-with-python\u002F\"\n        }\n      ]\n    }\n  ]\n}",[2911,2912,2913,2914],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1842,"name":1843,"slug":1844,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2219,"name":2220,"slug":2221,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-add-images-to-pdf-files-with-python\u002F","How to Add Images to PDF Files with Python, Tutorial | pdfRest",{"id":2919,"uuid":2920,"title":2921,"slug":2922,"html":2923,"comment_id":2919,"feature_image":48,"featured":284,"visibility":1257,"created_at":2924,"updated_at":2925,"published_at":2924,"custom_excerpt":2926,"codeinjection_head":2927,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":2928,"primary_tag":2935,"url":2936,"excerpt":2926,"reading_time":345,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":2937,"meta_description":2926,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"6a8890f8533c9f26b943abcb","c18a8f90-d222-4764-bd3f-78b698b52b5a","How to Add Tables to PDF Files in .NET with C#","how-to-add-tables-to-pdf-files-in-net-with-c","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Add Tables to PDF with C#?\u003C\u002Fh2>\n\n\u003Cp>The \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F'>pdfRest Add to PDF API Tool\u003C\u002Fa> is a powerful feature that allows developers to programmatically add tables to PDF documents. This tutorial will guide you through the process of sending an API call to the Add to PDF endpoint using C#. By integrating this tool into your C# applications, you can automate the process of enhancing PDF documents with structured data, such as tables, without manually editing the files.\u003C\u002Fp>\n\n\u003Cp>Businesses often need to generate reports or documents that include tables with data such as project statuses, financial summaries, or inventory lists. Using the Add to PDF API, a company can automatically generate these documents from their applications, ensuring consistency and saving time on manual document creation. This can be particularly useful for project management tools that need to provide stakeholders with up-to-date status reports.\u003C\u002Fp>\n\n\u003Ch2>Add Tables to PDF with C# Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-csharp\">\u002F*\n * What this sample does:\n * - Adds a tagged project-status table with styled headers, status cells, and a footer.\n * - Routed from Program.cs as: `dotnet run -- pdf-with-added-tables-multipart \u003CinputFile>`.\n *\n * Setup (environment):\n * - Copy .env.example to .env\n * - Set PDFREST_API_KEY=your_api_key_here\n * - Optional: set PDFREST_URL to override the API region. For EU\u002FGDPR compliance and proximity, use:\n *     PDFREST_URL=https:\u002F\u002Feu-api.pdfrest.com\n *   For more information visit https:\u002F\u002Fpdfrest.com\u002Fpricing#how-do-eu-gdpr-api-calls-work\n *\u002F\n\nusing Newtonsoft.Json.Linq;\nusing System.Text;\nusing Samples;\n\nnamespace Samples.EndpointExamples.MultipartPayload;\n\npublic static class PdfWithAddedTables\n{\n    public static async Task Execute(string[] args)\n    {\n        var inputPath = SampleInput.RequireFile(args, \"pdf-with-added-tables-multipart\");\n        var apiKey = SampleInput.RequireApiKey();\n        using var client = SampleInput.CreateClient();\n        using var request = new HttpRequestMessage(HttpMethod.Post, \"pdf-with-added-tables\");\n        request.Headers.TryAddWithoutValidation(\"Api-Key\", apiKey);\n        request.Headers.Accept.Add(new(\"application\u002Fjson\"));\n        using var content = new MultipartFormDataContent();\n        content.Add(new ByteArrayContent(await File.ReadAllBytesAsync(inputPath)), \"file\", Path.GetFileName(inputPath));\n        content.Add(new StringContent(CreateTable().ToString(), Encoding.UTF8), \"table_objects\");\n        content.Add(new StringContent(\"true\"), \"tag_enabled\");\n        content.Add(new StringContent(\"en-US\"), \"tag_language\");\n        content.Add(new StringContent(\"project-status\"), \"output\");\n        request.Content = content;\n\n        await SampleInput.PrintResponse(client, request);\n    }\n\n    internal static JArray CreateTable() => JArray.Parse(\"\"\"\n        [{\n          \"page\":1,\"x\":54,\"y\":540,\"width\":504,\n          \"columns\":[{\"width\":210},{\"width\":144},{\"width\":150}],\n          \"tag_structure_type\":\"Table\",\n          \"style\":{\"padding\":{\"top\":6,\"right\":8,\"bottom\":6,\"left\":8},\"text_size\":10},\n          \"header_rows\":[{\"cells\":[\n            {\"text\":\"Milestone\",\"tag_structure_type\":\"TH\",\"style\":{\"background_color_rgb\":[26,72,112],\"text_color_rgb\":[255,255,255]}},\n            {\"text\":\"Owner\",\"tag_structure_type\":\"TH\",\"style\":{\"background_color_rgb\":[26,72,112],\"text_color_rgb\":[255,255,255]}},\n            {\"text\":\"Status\",\"tag_structure_type\":\"TH\",\"style\":{\"background_color_rgb\":[26,72,112],\"text_color_rgb\":[255,255,255]}}\n          ]}],\n          \"rows\":[\n            {\"cells\":[{\"text\":\"Requirements review\"},{\"text\":\"Maya Chen\"},{\"text\":\"Complete\",\"tag_structure_type\":\"TD\",\"style\":{\"background_color_rgb\":[220,252,231]}}]},\n            {\"cells\":[{\"text\":\"Prototype delivery\"},{\"text\":\"Jordan Lee\"},{\"text\":\"In progress\",\"tag_structure_type\":\"TD\",\"style\":{\"background_color_rgb\":[254,249,195]}}]},\n            {\"cells\":[{\"text\":\"Stakeholder approval\"},{\"text\":\"Avery Patel\"},{\"text\":\"Planned\",\"tag_structure_type\":\"TD\",\"style\":{\"background_color_rgb\":[239,246,255]}}]}\n          ],\n          \"footer_rows\":[{\"cells\":[{\"text\":\"Next review: Friday, 10:00 AM\",\"col_span\":3,\"tag_structure_type\":\"TD\",\"style\":{\"background_color_rgb\":[245,247,250],\"text_color_rgb\":[55,65,81]}}]}]\n        }]\n        \"\"\");\n}\n\u003C\u002Fpre>\n\n\u003Cp>Source: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FDotNET\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fpdf-with-added-tables.cs\">GitHub\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>The code begins by setting up the environment and ensuring the necessary API key is available. The `Execute` method is the main function that processes the API call.\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">var inputPath = SampleInput.RequireFile(args, \"pdf-with-added-tables-multipart\");\nvar apiKey = SampleInput.RequireApiKey();\n\u003C\u002Fpre>\n\n\u003Cp>These lines retrieve the input file path and the API key, which are essential for the API call.\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">using var client = SampleInput.CreateClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"pdf-with-added-tables\");\nrequest.Headers.TryAddWithoutValidation(\"Api-Key\", apiKey);\nrequest.Headers.Accept.Add(new(\"application\u002Fjson\"));\n\u003C\u002Fpre>\n\n\u003Cp>A new HTTP client and request are created. The request is configured to POST to the \"pdf-with-added-tables\" endpoint, and the API key is added to the headers for authentication.\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">using var content = new MultipartFormDataContent();\ncontent.Add(new ByteArrayContent(await File.ReadAllBytesAsync(inputPath)), \"file\", Path.GetFileName(inputPath));\ncontent.Add(new StringContent(CreateTable().ToString(), Encoding.UTF8), \"table_objects\");\ncontent.Add(new StringContent(\"true\"), \"tag_enabled\");\ncontent.Add(new StringContent(\"en-US\"), \"tag_language\");\ncontent.Add(new StringContent(\"project-status\"), \"output\");\nrequest.Content = content;\n\u003C\u002Fpre>\n\n\u003Cp>The request content is set up as a multipart form. It includes the PDF file, table objects, and additional parameters such as `tag_enabled`, `tag_language`, and `output` to specify the document's characteristics.\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">internal static JArray CreateTable() => JArray.Parse(\"\"\"\n    [{\n      \"page\":1,\"x\":54,\"y\":540,\"width\":504,\n      \"columns\":[{\"width\":210},{\"width\":144},{\"width\":150}],\n      \"tag_structure_type\":\"Table\",\n      \"style\":{\"padding\":{\"top\":6,\"right\":8,\"bottom\":6,\"left\":8},\"text_size\":10},\n      \"header_rows\":[{\"cells\":[\n        {\"text\":\"Milestone\",\"tag_structure_type\":\"TH\",\"style\":{\"background_color_rgb\":[26,72,112],\"text_color_rgb\":[255,255,255]}},\n        {\"text\":\"Owner\",\"tag_structure_type\":\"TH\",\"style\":{\"background_color_rgb\":[26,72,112],\"text_color_rgb\":[255,255,255]}},\n        {\"text\":\"Status\",\"tag_structure_type\":\"TH\",\"style\":{\"background_color_rgb\":[26,72,112],\"text_color_rgb\":[255,255,255]}}\n      ]}],\n      \"rows\":[\n        {\"cells\":[{\"text\":\"Requirements review\"},{\"text\":\"Maya Chen\"},{\"text\":\"Complete\",\"tag_structure_type\":\"TD\",\"style\":{\"background_color_rgb\":[220,252,231]}}]},\n        {\"cells\":[{\"text\":\"Prototype delivery\"},{\"text\":\"Jordan Lee\"},{\"text\":\"In progress\",\"tag_structure_type\":\"TD\",\"style\":{\"background_color_rgb\":[254,249,195]}}]},\n        {\"cells\":[{\"text\":\"Stakeholder approval\"},{\"text\":\"Avery Patel\"},{\"text\":\"Planned\",\"tag_structure_type\":\"TD\",\"style\":{\"background_color_rgb\":[239,246,255]}}]}\n      ],\n      \"footer_rows\":[{\"cells\":[{\"text\":\"Next review: Friday, 10:00 AM\",\"col_span\":3,\"tag_structure_type\":\"TD\",\"style\":{\"background_color_rgb\":[245,247,250],\"text_color_rgb\":[55,65,81]}}]}]\n    }]\n    \"\"\");\n\u003C\u002Fpre>\n\n\u003Cp>The `CreateTable` method constructs the JSON array that defines the table to be added to the PDF. It specifies the table's position, dimensions, and style, as well as the content of the header, body, and footer rows.\u003C\u002Fp>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>In this tutorial, you learned how to use C# to make an API call to pdfRest's Add to PDF endpoint, adding a structured table to a PDF document. This example illustrates the use of multipart form data to send complex payloads, such as files and JSON objects, to an API.\u003C\u002Fp>\n\n\u003Cp>To explore more capabilities of the pdfRest API, you can demo all the tools available in the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. For further details on API endpoints, refer to the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">API Reference Guide\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Cp>Note: This is an example of a multipart API call. Code samples using JSON payloads can be found at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FDotNET\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Fpdf-with-added-tables.cs\">GitHub\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2026-08-21T17:55:04.000+00:00","2026-09-02T18:26:42.000+00:00","Learn how to use C# and the pdfRest Add to PDF API Tool to create structured tables in PDF documents from .NET applications.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-tables-to-pdf-files-in-net-with-c\u002F#article\",\n      \"headline\": \"How to Add Tables to PDF Files in .NET with C#\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-tables-to-pdf-files-in-net-with-c\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-tables-to-pdf-files-in-net-with-c\u002F\",\n      \"datePublished\": \"2026-08-21T17:55:04.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:04.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to use C# and the pdfRest Add to PDF API Tool to create structured tables in PDF documents from .NET applications.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Add to PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fpdf-with-added-tables API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fadd-to-pdf\"\n        }\n      ],\n      \"keywords\": \".NET, Add to PDF, PDF Generation, Tables\",\n      \"dependencies\": \".NET, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Add Tables to PDF Files in .NET with C#\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-tables-to-pdf-files-in-net-with-c\u002F\"\n        }\n      ]\n    }\n  ]\n}",[2929,2930,2931,2932,2933,2934],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1842,"name":1843,"slug":1844,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2231,"name":2232,"slug":2233,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1858,"name":1859,"slug":1860,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1850,"name":1851,"slug":1852,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-add-tables-to-pdf-files-in-net-with-c\u002F","How to Add Tables to PDF Files in .NET with C#, Tutorial | pdfRest",{"id":2939,"uuid":2940,"title":2941,"slug":2942,"html":2943,"comment_id":2939,"feature_image":48,"featured":284,"visibility":1257,"created_at":2944,"updated_at":2925,"published_at":2944,"custom_excerpt":2945,"codeinjection_head":2946,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":2947,"primary_tag":2954,"url":2955,"excerpt":2945,"reading_time":320,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":2956,"meta_description":2945,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"6a8891ad533c9f26b943abdf","4b991370-5568-486c-b003-006e53b2ade4","How to Add Tables to PDF Files with cURL","how-to-add-tables-to-pdf-files-with-curl","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Add Tables to PDF with cURL?\u003C\u002Fh2>\n\n\u003Cp>The \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F'>pdfRest Add to PDF API Tool\u003C\u002Fa> is a powerful resource for developers looking to programmatically enhance PDF documents by adding tables, images, and other elements. This tutorial will guide you through the process of sending an API call to the Add to PDF endpoint using cURL, a command-line tool for transferring data with URLs. By following this tutorial, you will learn how to integrate this functionality into your applications, enabling automated PDF modifications.\u003C\u002Fp>\n\n\u003Cp>A project manager might use the Add to PDF tool to insert a project status table into a PDF report before distributing it to stakeholders. This table could include milestones, responsible team members, and current status updates, all formatted for clarity and ease of understanding. Automating this process with the Add to PDF API can save time and reduce manual errors, ensuring that documents are consistently updated and formatted.\u003C\u002Fp>\n\n\u003Ch2>Add Tables to PDF with cURL Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-bash\">#!\u002Fbin\u002Fsh\n\n# By default, we use the US-based API service. This is the primary endpoint for global use.\nAPI_URL=\"https:\u002F\u002Fapi.pdfrest.com\"\n\n# For GDPR compliance and enhanced performance for European users, you can switch to the EU-based service by uncommenting the URL below.\n# For more information visit https:\u002F\u002Fpdfrest.com\u002Fpricing#how-do-eu-gdpr-api-calls-work\n# API_URL=\"https:\u002F\u002Feu-api.pdfrest.com\"\n\n# This example adds an accessible project-status table with a header, colored status cells, and a footer.\nTABLE_OBJECTS='[\n  {\n    \"page\": 1,\n    \"x\": 54,\n    \"y\": 540,\n    \"width\": 504,\n    \"columns\": [{\"width\": 210}, {\"width\": 144}, {\"width\": 150}],\n    \"tag_structure_type\": \"Table\",\n    \"style\": {\"padding\": {\"top\": 6, \"right\": 8, \"bottom\": 6, \"left\": 8}, \"text_size\": 10},\n    \"header_rows\": [{\"cells\": [\n      {\"text\": \"Milestone\", \"tag_structure_type\": \"TH\", \"style\": {\"background_color_rgb\": [26,72,112], \"text_color_rgb\": [255,255,255]}},\n      {\"text\": \"Owner\", \"tag_structure_type\": \"TH\", \"style\": {\"background_color_rgb\": [26,72,112], \"text_color_rgb\": [255,255,255]}},\n      {\"text\": \"Status\", \"tag_structure_type\": \"TH\", \"style\": {\"background_color_rgb\": [26,72,112], \"text_color_rgb\": [255,255,255]}}\n    ]}],\n    \"rows\": [\n      {\"cells\": [{\"text\": \"Requirements review\"}, {\"text\": \"Maya Chen\"}, {\"text\": \"Complete\", \"tag_structure_type\": \"TD\", \"style\": {\"background_color_rgb\": [220,252,231]}}]},\n      {\"cells\": [{\"text\": \"Prototype delivery\"}, {\"text\": \"Jordan Lee\"}, {\"text\": \"In progress\", \"tag_structure_type\": \"TD\", \"style\": {\"background_color_rgb\": [254,249,195]}}]},\n      {\"cells\": [{\"text\": \"Stakeholder approval\"}, {\"text\": \"Avery Patel\"}, {\"text\": \"Planned\", \"tag_structure_type\": \"TD\", \"style\": {\"background_color_rgb\": [239,246,255]}}]}\n    ],\n    \"footer_rows\": [{\"cells\": [\n      {\"text\": \"Next review: Friday, 10:00 AM\", \"col_span\": 3, \"tag_structure_type\": \"TD\", \"style\": {\"background_color_rgb\": [245,247,250], \"text_color_rgb\": [55,65,81]}}\n    ]}]\n  }\n]'\n\ncurl -X POST \"$API_URL\u002Fpdf-with-added-tables\" \\\n  -H \"Accept: application\u002Fjson\" \\\n  -H \"Content-Type: multipart\u002Fform-data\" \\\n  -H \"Api-Key: xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\" \\\n  -F \"file=@\u002Fpath\u002Fto\u002Finput.pdf\" \\\n  -F \"table_objects=$TABLE_OBJECTS\" \\\n  -F \"tag_enabled=true\" \\\n  -F \"tag_language=en-US\" \\\n  -F \"output=project-status\"\n\u003C\u002Fpre>\n\n\u003Cp>Source: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FcURL\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fpdf-with-added-tables.sh\">GitHub\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>The script begins by setting the \u003Ccode>API_URL\u003C\u002Fcode> variable to the default US-based service endpoint. This is the primary endpoint for global use. If you need to comply with GDPR or require better performance in Europe, you can switch to the EU-based service by uncommenting the alternative URL.\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">API_URL=\"https:\u002F\u002Fapi.pdfrest.com\"\n# API_URL=\"https:\u002F\u002Feu-api.pdfrest.com\"\n\u003C\u002Fpre>\n\n\u003Cp>The \u003Ccode>TABLE_OBJECTS\u003C\u002Fcode> variable defines the structure of the table to be added to the PDF. It includes details such as page number, position, width, column definitions, and cell styles.\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">TABLE_OBJECTS='[\n  {\n    \"page\": 1,\n    \"x\": 54,\n    \"y\": 540,\n    \"width\": 504,\n    ...\n  }\n]'\n\u003C\u002Fpre>\n\n\u003Cp>The \u003Ccode>curl\u003C\u002Fcode> command is used to send a POST request to the \u003Ccode>pdf-with-added-tables\u003C\u002Fcode> endpoint. The request includes several headers and form fields:\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">curl -X POST \"$API_URL\u002Fpdf-with-added-tables\" \\\n  -H \"Accept: application\u002Fjson\" \\\n  -H \"Content-Type: multipart\u002Fform-data\" \\\n  -H \"Api-Key: xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\" \\\n  -F \"file=@\u002Fpath\u002Fto\u002Finput.pdf\" \\\n  -F \"table_objects=$TABLE_OBJECTS\" \\\n  -F \"tag_enabled=true\" \\\n  -F \"tag_language=en-US\" \\\n  -F \"output=project-status\"\n\u003C\u002Fpre>\n\n\u003Cp>The \u003Ccode>-H\u003C\u002Fcode> flags set the request headers, including the \u003Ccode>Api-Key\u003C\u002Fcode>, which must be replaced with your actual API key. The \u003Ccode>-F\u003C\u002Fcode> flags specify the form data, including the PDF file to be modified, the table objects, and additional parameters such as \u003Ccode>tag_enabled\u003C\u002Fcode> and \u003Ccode>tag_language\u003C\u002Fcode>.\u003C\u002Fp>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>In this tutorial, you learned how to use cURL to send a request to the pdfRest Add to PDF API, adding a table to a PDF document. This example demonstrated the use of multipart form data to include both the PDF file and the table configuration in the request.\u003C\u002Fp>\n\n\u003Cp>To explore further, you can demo all of the pdfRest API Tools in the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. For detailed information on each API tool, refer to the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">API Reference Guide\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Cp>Note: This example uses a multipart API call. Code samples using JSON payloads can be found at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FcURL\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Fpdf-with-added-tables.sh\">GitHub\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2026-08-21T17:58:05.000+00:00","Discover how to send a cURL request to the pdfRest Add to PDF API and insert formatted tables into PDF files.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-tables-to-pdf-files-with-curl\u002F#article\",\n      \"headline\": \"How to Add Tables to PDF Files with cURL\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-tables-to-pdf-files-with-curl\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-tables-to-pdf-files-with-curl\u002F\",\n      \"datePublished\": \"2026-08-21T17:58:05.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:04.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Discover how to send a cURL request to the pdfRest Add to PDF API and insert formatted tables into PDF files.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Add to PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fpdf-with-added-tables API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fadd-to-pdf\"\n        }\n      ],\n      \"keywords\": \"Add to PDF, PDF Generation, Tables, cURL\",\n      \"dependencies\": \"cURL, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Add Tables to PDF Files with cURL\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-tables-to-pdf-files-with-curl\u002F\"\n        }\n      ]\n    }\n  ]\n}",[2948,2949,2950,2951,2952,2953],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1842,"name":1843,"slug":1844,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2239,"name":2240,"slug":2241,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1858,"name":1859,"slug":1860,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1850,"name":1851,"slug":1852,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-add-tables-to-pdf-files-with-curl\u002F","How to Add Tables to PDF Files with cURL, Tutorial | pdfRest",{"id":2958,"uuid":2959,"title":2960,"slug":2961,"html":2962,"comment_id":2958,"feature_image":48,"featured":284,"visibility":1257,"created_at":2963,"updated_at":2925,"published_at":2963,"custom_excerpt":2964,"codeinjection_head":2965,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":2966,"primary_tag":2973,"url":2974,"excerpt":2964,"reading_time":320,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":2975,"meta_description":2964,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"6a8891d1533c9f26b943abe9","98d6ad45-c5af-4012-8ed1-a709c48d2d38","How to Add Tables to PDF Files with Java","how-to-add-tables-to-pdf-files-with-java","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Add Tables to PDF with Java?\u003C\u002Fh2>\n\n\u003Cp>The \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F'>pdfRest Add to PDF API Tool\u003C\u002Fa> allows developers to programmatically add tables to existing PDF documents. This tutorial will guide you through the process of sending an API call to the Add to PDF endpoint using Java. By utilizing this API, you can enhance your PDF documents dynamically, adding structured data in the form of tables, which can be crucial for reports, invoices, or any document requiring tabular data presentation.\u003C\u002Fp>\n\n\u003Cp>A project manager might need to update a project status report with the latest milestones, owners, and status updates. Instead of manually editing the PDF, the manager can use the Add to PDF API to automate the process, ensuring that the report is always up-to-date and distributed efficiently to stakeholders.\u003C\u002Fp>\n\n\u003Ch2>Add Tables to PDF with Java Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-java\">import io.github.cdimascio.dotenv.Dotenv;\nimport java.io.File;\nimport java.io.IOException;\nimport java.util.concurrent.TimeUnit;\nimport okhttp3.MediaType;\nimport okhttp3.MultipartBody;\nimport okhttp3.OkHttpClient;\nimport okhttp3.Request;\nimport okhttp3.RequestBody;\nimport okhttp3.Response;\nimport org.json.JSONArray;\nimport org.json.JSONObject;\n\npublic class PDFWithAddedTables {\n\n  \u002F\u002F By default, we use the US-based API service. This is the primary endpoint for global use.\n  private static final String API_URL = \"https:\u002F\u002Fapi.pdfrest.com\";\n\n  \u002F\u002F For GDPR compliance and enhanced performance for European users, you can switch to the EU-based\n  \u002F\u002F service by commenting out the URL above and uncommenting the URL below.\n  \u002F\u002F For more information visit https:\u002F\u002Fpdfrest.com\u002Fpricing#how-do-eu-gdpr-api-calls-work\n  \u002F\u002F private static final String API_URL = \"https:\u002F\u002Feu-api.pdfrest.com\";\n\n  private static final String DEFAULT_FILE_PATH = \"\u002Fpath\u002Fto\u002Finput.pdf\";\n  private static final String DEFAULT_API_KEY = \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\";\n\n  \u002F\u002F This tagged table uses fixed widths that add up to the table width: 210 + 144 + 150 = 504.\n  private static final String TABLE_OBJECTS =\n      \"\"\"\n      [\n        {\n          \"page\": 1,\n          \"x\": 54,\n          \"y\": 540,\n          \"width\": 504,\n          \"columns\": [{\"width\": 210}, {\"width\": 144}, {\"width\": 150}],\n          \"tag_structure_type\": \"Table\",\n          \"style\": {\n            \"padding\": {\"top\": 6, \"right\": 8, \"bottom\": 6, \"left\": 8},\n            \"text_size\": 10\n          },\n          \"header_rows\": [\n            {\n              \"cells\": [\n                {\"text\": \"Milestone\", \"tag_structure_type\": \"TH\", \"style\": {\"background_color_rgb\": [26, 72, 112], \"text_color_rgb\": [255, 255, 255]}},\n                {\"text\": \"Owner\", \"tag_structure_type\": \"TH\", \"style\": {\"background_color_rgb\": [26, 72, 112], \"text_color_rgb\": [255, 255, 255]}},\n                {\"text\": \"Status\", \"tag_structure_type\": \"TH\", \"style\": {\"background_color_rgb\": [26, 72, 112], \"text_color_rgb\": [255, 255, 255]}}\n              ]\n            }\n          ],\n          \"rows\": [\n            {\"cells\": [{\"text\": \"Requirements review\"}, {\"text\": \"Maya Chen\"}, {\"text\": \"Complete\", \"tag_structure_type\": \"TD\", \"style\": {\"background_color_rgb\": [220, 252, 231]}}]},\n            {\"cells\": [{\"text\": \"Prototype delivery\"}, {\"text\": \"Jordan Lee\"}, {\"text\": \"In progress\", \"tag_structure_type\": \"TD\", \"style\": {\"background_color_rgb\": [254, 249, 195]}}]},\n            {\"cells\": [{\"text\": \"Stakeholder approval\"}, {\"text\": \"Avery Patel\"}, {\"text\": \"Planned\", \"tag_structure_type\": \"TD\", \"style\": {\"background_color_rgb\": [239, 246, 255]}}]}\n          ],\n          \"footer_rows\": [\n            {\n              \"cells\": [\n                {\"text\": \"Next review: Friday, 10:00 AM\", \"col_span\": 3, \"tag_structure_type\": \"TD\", \"style\": {\"background_color_rgb\": [245, 247, 250], \"text_color_rgb\": [55, 65, 81]}}\n              ]\n            }\n          ]\n        }\n      ]\n      \"\"\";\n\n  public static void main(String[] args) {\n    File inputFile = new File(args.length > 0 ? args[0] : DEFAULT_FILE_PATH);\n    Dotenv dotenv = Dotenv.configure().ignoreIfMalformed().ignoreIfMissing().load();\n\n    RequestBody fileBody = RequestBody.create(inputFile, MediaType.parse(\"application\u002Fpdf\"));\n    RequestBody requestBody =\n        new MultipartBody.Builder()\n            .setType(MultipartBody.FORM)\n            .addFormDataPart(\"file\", inputFile.getName(), fileBody)\n            .addFormDataPart(\"table_objects\", new JSONArray(TABLE_OBJECTS).toString())\n            .addFormDataPart(\"tag_enabled\", \"true\")\n            .addFormDataPart(\"tag_language\", \"en-US\")\n            .addFormDataPart(\"output\", \"project-status\")\n            .build();\n    Request request =\n        new Request.Builder()\n            .header(\"Accept\", \"application\u002Fjson\")\n            .header(\"Api-Key\", dotenv.get(\"PDFREST_API_KEY\", DEFAULT_API_KEY))\n            .url(API_URL + \"\u002Fpdf-with-added-tables\")\n            .post(requestBody)\n            .build();\n\n    OkHttpClient client = new OkHttpClient.Builder().readTimeout(60, TimeUnit.SECONDS).build();\n    try (Response response = client.newCall(request).execute()) {\n      System.out.println(\"Response status code: \" + response.code());\n      if (response.body() != null) {\n        System.out.println(new JSONObject(response.body().string()).toString(2));\n      }\n    } catch (IOException error) {\n      throw new RuntimeException(error);\n    }\n  }\n}\n\u003C\u002Fpre>\n\n\u003Cp>Source: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FJava\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002FPDFWithAddedTables.java\">GitHub Repository\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>The code begins by importing necessary libraries for handling environment variables, file I\u002FO, HTTP requests, and JSON manipulation. The \u003Ccode>Dotenv\u003C\u002Fcode> library is used to manage API keys securely.\u003C\u002Fp>\n\n\u003Cpre class=\"language-java\">private static final String API_URL = \"https:\u002F\u002Fapi.pdfrest.com\";\n\u003C\u002Fpre>\n\n\u003Cp>This line sets the base URL for the API. The default is the US-based service, but there's an option to switch to an EU-based service for GDPR compliance.\u003C\u002Fp>\n\n\u003Cpre class=\"language-java\">private static final String DEFAULT_FILE_PATH = \"\u002Fpath\u002Fto\u002Finput.pdf\";\nprivate static final String DEFAULT_API_KEY = \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\";\n\u003C\u002Fpre>\n\n\u003Cp>These lines define default values for the input PDF file path and the API key. The API key is crucial for authenticating requests to the pdfRest service.\u003C\u002Fp>\n\n\u003Cpre class=\"language-java\">private static final String TABLE_OBJECTS = ...\n\u003C\u002Fpre>\n\n\u003Cp>This JSON string defines the table structure to be added to the PDF. It specifies the page, position, dimensions, and styling of the table, as well as the content of the header, body, and footer rows.\u003C\u002Fp>\n\n\u003Cpre class=\"language-java\">RequestBody requestBody = new MultipartBody.Builder()\n\u003C\u002Fpre>\n\n\u003Cp>This block creates a multipart request body, including the PDF file and table data. It sets the form type and adds form data parts for the file, table objects, tagging options, and output file name.\u003C\u002Fp>\n\n\u003Cpre class=\"language-java\">Request request = new Request.Builder()\n\u003C\u002Fpre>\n\n\u003Cp>This snippet constructs the HTTP request, setting headers for content type and API key, and specifies the endpoint URL for adding tables to the PDF.\u003C\u002Fp>\n\n\u003Cpre class=\"language-java\">OkHttpClient client = new OkHttpClient.Builder().readTimeout(60, TimeUnit.SECONDS).build();\n\u003C\u002Fpre>\n\n\u003Cp>An \u003Ccode>OkHttpClient\u003C\u002Fcode> instance is created with a 60-second read timeout, which handles the HTTP request execution.\u003C\u002Fp>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>In this tutorial, you learned how to use Java to send an API request to pdfRest's Add to PDF endpoint, effectively adding tables to a PDF document. This process can be automated to enhance productivity and ensure accuracy in document updates.\u003C\u002Fp>\n\n\u003Cp>To explore more functionalities, try out all the pdfRest API Tools in the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. For detailed documentation, visit the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">API Reference Guide\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Cp>Note: This example demonstrates a multipart API call. For examples using JSON payloads, visit the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FJava\u002FEndpoint%20Examples\u002FJSON%20Payload\u002FPDFWithAddedTables.java\">GitHub Repository\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2026-08-21T17:58:41.000+00:00","Learn how Java applications can call the pdfRest Add to PDF API to generate tables with custom layouts, styles, and data.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-tables-to-pdf-files-with-java\u002F#article\",\n      \"headline\": \"How to Add Tables to PDF Files with Java\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-tables-to-pdf-files-with-java\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-tables-to-pdf-files-with-java\u002F\",\n      \"datePublished\": \"2026-08-21T17:58:41.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:03.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how Java applications can call the pdfRest Add to PDF API to generate tables with custom layouts, styles, and data.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Add to PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fpdf-with-added-tables API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fadd-to-pdf\"\n        }\n      ],\n      \"keywords\": \"Add to PDF, Java, PDF Generation, Tables\",\n      \"dependencies\": \"Java, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Add Tables to PDF Files with Java\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-tables-to-pdf-files-with-java\u002F\"\n        }\n      ]\n    }\n  ]\n}",[2967,2968,2969,2970,2971,2972],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1842,"name":1843,"slug":1844,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2235,"name":2236,"slug":2237,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1858,"name":1859,"slug":1860,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1850,"name":1851,"slug":1852,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-add-tables-to-pdf-files-with-java\u002F","How to Add Tables to PDF Files with Java, Tutorial | pdfRest",{"id":2977,"uuid":2978,"title":2979,"slug":2980,"html":2981,"comment_id":2977,"feature_image":48,"featured":284,"visibility":1257,"created_at":2982,"updated_at":2983,"published_at":2982,"custom_excerpt":2984,"codeinjection_head":2985,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":2986,"primary_tag":2993,"url":2994,"excerpt":2984,"reading_time":320,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":2995,"meta_description":2984,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"6a88912e533c9f26b943abd5","df42e702-8b84-43b7-9852-f3f800271664","How to Add Tables to PDF Files with JavaScript in NodeJS","how-to-add-tables-to-pdf-files-with-javascript-in-nodejs","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Add Tables to PDF with JavaScript?\u003C\u002Fh2>\n\n\u003Cp>The \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F'>pdfRest Add to PDF API Tool\u003C\u002Fa> is a powerful resource that allows developers to programmatically add tables and other elements to PDF documents. This tutorial will guide you through the process of sending an API call to the Add to PDF endpoint using JavaScript, enabling you to enhance your PDF files with structured and styled tables.\u003C\u002Fp>\n\n\u003Cp>A project manager might need to generate a project status report in PDF format that includes a table summarizing tasks, owners, and their current status. By using the Add to PDF API, the manager can automate this process, ensuring that the document is both accessible and visually appealing, complete with headers, colored status cells, and a footer.\u003C\u002Fp>\n\n\u003Ch2>Add Tables to PDF with JavaScript Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-javascript\">\u002F**\n * Add an accessible, styled project-status table to a PDF.\n * The table includes header cells, colored status cells, and a footer row.\n *\u002F\nconst axios = require(\"axios\");\nconst FormData = require(\"form-data\");\nconst fs = require(\"fs\");\n\n\u002F\u002F By default, we use the US-based API service. This is the primary endpoint for global use.\nconst apiUrl = \"https:\u002F\u002Fapi.pdfrest.com\";\n\n\u002F* For GDPR compliance and enhanced performance for European users, you can switch to the EU-based service by uncommenting the URL below.\n * For more information visit https:\u002F\u002Fpdfrest.com\u002Fpricing#how-do-eu-gdpr-api-calls-work\n *\u002F\n\u002F\u002F const apiUrl = \"https:\u002F\u002Feu-api.pdfrest.com\";\n\nconst tables = [\n  {\n    page: 1,\n    x: 54,\n    y: 540,\n    width: 504,\n    columns: [{ width: 210 }, { width: 144 }, { width: 150 }],\n    tag_structure_type: \"Table\",\n    style: {\n      padding: { top: 6, right: 8, bottom: 6, left: 8 },\n      text_size: 10,\n    },\n    header_rows: [\n      {\n        cells: [\n          { text: \"Milestone\", tag_structure_type: \"TH\", style: { background_color_rgb: [26, 72, 112], text_color_rgb: [255, 255, 255] } },\n          { text: \"Owner\", tag_structure_type: \"TH\", style: { background_color_rgb: [26, 72, 112], text_color_rgb: [255, 255, 255] } },\n          { text: \"Status\", tag_structure_type: \"TH\", style: { background_color_rgb: [26, 72, 112], text_color_rgb: [255, 255, 255] } },\n        ],\n      },\n    ],\n    rows: [\n      { cells: [{ text: \"Requirements review\" }, { text: \"Maya Chen\" }, { text: \"Complete\", tag_structure_type: \"TD\", style: { background_color_rgb: [220, 252, 231] } }] },\n      { cells: [{ text: \"Prototype delivery\" }, { text: \"Jordan Lee\" }, { text: \"In progress\", tag_structure_type: \"TD\", style: { background_color_rgb: [254, 249, 195] } }] },\n      { cells: [{ text: \"Stakeholder approval\" }, { text: \"Avery Patel\" }, { text: \"Planned\", tag_structure_type: \"TD\", style: { background_color_rgb: [239, 246, 255] } }] },\n    ],\n    footer_rows: [\n      { cells: [{ text: \"Next review: Friday, 10:00 AM\", col_span: 3, tag_structure_type: \"TD\", style: { background_color_rgb: [245, 247, 250], text_color_rgb: [55, 65, 81] } }] },\n    ],\n  },\n];\n\nconst form = new FormData();\nform.append(\"file\", fs.createReadStream(\"\u002Fpath\u002Fto\u002Finput.pdf\"));\nform.append(\"table_objects\", JSON.stringify(tables));\nform.append(\"tag_enabled\", \"true\");\nform.append(\"tag_language\", \"en-US\");\nform.append(\"output\", \"project-status\");\n\naxios({\n  method: \"post\",\n  maxBodyLength: Infinity,\n  url: `${apiUrl}\u002Fpdf-with-added-tables`,\n  headers: {\n    \"Api-Key\": \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\", \u002F\u002F Replace with your API key.\n    ...form.getHeaders(),\n  },\n  data: form,\n})\n  .then((response) => console.log(JSON.stringify(response.data, null, 2)))\n  .catch((error) => console.log(error.response?.data || error.message));\n\n\u002F\u002F To download the returned file, use the outputId with the get-resource-id endpoint sample.\n\u003C\u002Fpre>\n\n\u003Cp>Source: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FJavaScript\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fpdf-with-added-tables.js\">GitHub Repository\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>The code begins by requiring necessary modules: \u003Ccode>axios\u003C\u002Fcode> for making HTTP requests, \u003Ccode>form-data\u003C\u002Fcode> for handling form submissions, and \u003Ccode>fs\u003C\u002Fcode> for file system operations.\u003C\u002Fp>\n\n\u003Cpre class=\"language-javascript\">const axios = require(\"axios\");\nconst FormData = require(\"form-data\");\nconst fs = require(\"fs\");\n\u003C\u002Fpre>\n\n\u003Cp>The \u003Ccode>apiUrl\u003C\u002Fcode> is set to the US-based endpoint by default. For European users, the EU-based endpoint can be used for GDPR compliance.\u003C\u002Fp>\n\n\u003Cpre class=\"language-javascript\">const apiUrl = \"https:\u002F\u002Fapi.pdfrest.com\";\n\u003C\u002Fpre>\n\n\u003Cp>The \u003Ccode>tables\u003C\u002Fcode> array defines the structure and style of the table to be added to the PDF. It includes details such as page number, position, column widths, and cell styles.\u003C\u002Fp>\n\n\u003Cpre class=\"language-javascript\">const tables = [\n  {\n    page: 1,\n    x: 54,\n    y: 540,\n    width: 504,\n    columns: [{ width: 210 }, { width: 144 }, { width: 150 }],\n    tag_structure_type: \"Table\",\n    style: {\n      padding: { top: 6, right: 8, bottom: 6, left: 8 },\n      text_size: 10,\n    },\n    header_rows: [\n      {\n        cells: [\n          { text: \"Milestone\", tag_structure_type: \"TH\", style: { background_color_rgb: [26, 72, 112], text_color_rgb: [255, 255, 255] } },\n          { text: \"Owner\", tag_structure_type: \"TH\", style: { background_color_rgb: [26, 72, 112], text_color_rgb: [255, 255, 255] } },\n          { text: \"Status\", tag_structure_type: \"TH\", style: { background_color_rgb: [26, 72, 112], text_color_rgb: [255, 255, 255] } },\n        ],\n      },\n    ],\n    rows: [\n      { cells: [{ text: \"Requirements review\" }, { text: \"Maya Chen\" }, { text: \"Complete\", tag_structure_type: \"TD\", style: { background_color_rgb: [220, 252, 231] } }] },\n      { cells: [{ text: \"Prototype delivery\" }, { text: \"Jordan Lee\" }, { text: \"In progress\", tag_structure_type: \"TD\", style: { background_color_rgb: [254, 249, 195] } }] },\n      { cells: [{ text: \"Stakeholder approval\" }, { text: \"Avery Patel\" }, { text: \"Planned\", tag_structure_type: \"TD\", style: { background_color_rgb: [239, 246, 255] } }] },\n    ],\n    footer_rows: [\n      { cells: [{ text: \"Next review: Friday, 10:00 AM\", col_span: 3, tag_structure_type: \"TD\", style: { background_color_rgb: [245, 247, 250], text_color_rgb: [55, 65, 81] } }] },\n    ],\n  },\n];\n\u003C\u002Fpre>\n\n\u003Cp>A \u003Ccode>FormData\u003C\u002Fcode> object is created to hold the PDF file and table data. The \u003Ccode>file\u003C\u002Fcode> field is the PDF to which the table will be added, and \u003Ccode>table_objects\u003C\u002Fcode> contains the table structure.\u003C\u002Fp>\n\n\u003Cpre class=\"language-javascript\">const form = new FormData();\nform.append(\"file\", fs.createReadStream(\"\u002Fpath\u002Fto\u002Finput.pdf\"));\nform.append(\"table_objects\", JSON.stringify(tables));\nform.append(\"tag_enabled\", \"true\");\nform.append(\"tag_language\", \"en-US\");\nform.append(\"output\", \"project-status\");\n\u003C\u002Fpre>\n\n\u003Cp>The \u003Ccode>axios\u003C\u002Fcode> call sends a POST request to the \u003Ccode>pdf-with-added-tables\u003C\u002Fcode> endpoint, including headers for the API key and form data.\u003C\u002Fp>\n\n\u003Cpre class=\"language-javascript\">axios({\n  method: \"post\",\n  maxBodyLength: Infinity,\n  url: `${apiUrl}\u002Fpdf-with-added-tables`,\n  headers: {\n    \"Api-Key\": \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\", \u002F\u002F Replace with your API key.\n    ...form.getHeaders(),\n  },\n  data: form,\n})\n\u003C\u002Fpre>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>In this tutorial, you learned how to use the pdfRest Add to PDF API Tool to add a styled table to a PDF document using JavaScript. This example demonstrates how to structure your API call and handle the response.\u003C\u002Fp>\n\n\u003Cp>To explore further, try out all the pdfRest API Tools in the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. For more detailed information, refer to the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">API Reference Guide\u003C\u002Fa>. This example shows a multipart API call; for JSON payload examples, visit the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FJavaScript\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Fpdf-with-added-tables.js\">GitHub Repository\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2026-08-21T17:55:58.000+00:00","2026-09-02T18:26:43.000+00:00","Find out how to use JavaScript in NodeJS to add dynamic tables to PDF documents through the pdfRest API.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-tables-to-pdf-files-with-javascript-in-nodejs\u002F#article\",\n      \"headline\": \"How to Add Tables to PDF Files with JavaScript in NodeJS\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-tables-to-pdf-files-with-javascript-in-nodejs\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-tables-to-pdf-files-with-javascript-in-nodejs\u002F\",\n      \"datePublished\": \"2026-08-21T17:55:58.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:04.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Find out how to use JavaScript in NodeJS to add dynamic tables to PDF documents through the pdfRest API.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Add to PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fpdf-with-added-tables API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fadd-to-pdf\"\n        }\n      ],\n      \"keywords\": \"Add to PDF, JavaScript, PDF Generation, Tables\",\n      \"dependencies\": \"JavaScript, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Add Tables to PDF Files with JavaScript in NodeJS\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-tables-to-pdf-files-with-javascript-in-nodejs\u002F\"\n        }\n      ]\n    }\n  ]\n}",[2987,2988,2989,2990,2991,2992],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1842,"name":1843,"slug":1844,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2223,"name":2224,"slug":2225,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1858,"name":1859,"slug":1860,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1850,"name":1851,"slug":1852,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-add-tables-to-pdf-files-with-javascript-in-nodejs\u002F","How to Add Tables to PDF Files with JavaScript in NodeJS, Tutorial | pdfRest",{"id":2997,"uuid":2998,"title":2999,"slug":3000,"html":3001,"comment_id":2997,"feature_image":48,"featured":284,"visibility":1257,"created_at":3002,"updated_at":2983,"published_at":3002,"custom_excerpt":3003,"codeinjection_head":3004,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3005,"primary_tag":3012,"url":3013,"excerpt":3003,"reading_time":320,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3014,"meta_description":3003,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"6a88903b533c9f26b943abc1","2b06a85d-d1f3-4018-8f3b-1eb8cc0fcbc2","How to Add Tables to PDF Files with PHP","how-to-add-tables-to-pdf-files-with-php","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Add Tables to PDF with PHP?\u003C\u002Fh2>\n\n\u003Cp>The \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F'>pdfRest Add to PDF API Tool\u003C\u002Fa> provides a robust solution for integrating table data into existing PDF documents. This tutorial will guide you through the process of sending an API call to the Add to PDF endpoint using PHP. By leveraging this tool, developers can programmatically enhance PDFs with structured data, making it a valuable asset for automating document workflows.\u003C\u002Fp>\n\n\u003Cp>Consider a scenario where a project manager needs to regularly update a PDF report with the latest project status, including milestones, owners, and progress. Using the Add to PDF API, they can automate this process, ensuring that the document is always up-to-date with minimal manual intervention. This not only saves time but also reduces the risk of errors in the documentation process.\u003C\u002Fp>\n\n\u003Ch2>Add Tables to PDF with PHP Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-python\">\nrequire 'vendor\u002Fautoload.php';\n\nuse GuzzleHttp\\Client;\nuse GuzzleHttp\\Psr7\\Request;\nuse GuzzleHttp\\Psr7\\Utils;\n\n\u002F\u002F By default, we use the US-based API service. This is the primary endpoint for global use.\n$apiUrl = 'https:\u002F\u002Fapi.pdfrest.com';\n\n\u002F* For GDPR compliance and enhanced performance for European users, you can switch to the EU-based service by uncommenting the URL below.\n * For more information visit https:\u002F\u002Fpdfrest.com\u002Fpricing#how-do-eu-gdpr-api-calls-work\n *\u002F\n\u002F\u002F $apiUrl = 'https:\u002F\u002Feu-api.pdfrest.com';\n\nfunction projectStatusTable(): array\n{\n    $headerStyle = ['background_color_rgb' =--> [26, 72, 112], 'text_color_rgb' => [255, 255, 255]];\n    return [[\n        'page' => 1, 'x' => 54, 'y' => 540, 'width' => 504,\n        'columns' => [['width' => 210], ['width' => 144], ['width' => 150]],\n        'tag_structure_type' => 'Table',\n        'style' => ['padding' => ['top' => 6, 'right' => 8, 'bottom' => 6, 'left' => 8], 'text_size' => 10],\n        'header_rows' => [['cells' => [\n            ['text' => 'Milestone', 'tag_structure_type' => 'TH', 'style' => $headerStyle],\n            ['text' => 'Owner', 'tag_structure_type' => 'TH', 'style' => $headerStyle],\n            ['text' => 'Status', 'tag_structure_type' => 'TH', 'style' => $headerStyle],\n        ]]],\n        'rows' => [\n            ['cells' => [['text' => 'Requirements review'], ['text' => 'Maya Chen'], ['text' => 'Complete', 'tag_structure_type' => 'TD', 'style' => ['background_color_rgb' => [220, 252, 231]]]]],\n            ['cells' => [['text' => 'Prototype delivery'], ['text' => 'Jordan Lee'], ['text' => 'In progress', 'tag_structure_type' => 'TD', 'style' => ['background_color_rgb' => [254, 249, 195]]]]],\n            ['cells' => [['text' => 'Stakeholder approval'], ['text' => 'Avery Patel'], ['text' => 'Planned', 'tag_structure_type' => 'TD', 'style' => ['background_color_rgb' => [239, 246, 255]]]]],\n        ],\n        'footer_rows' => [['cells' => [[\n            'text' => 'Next review: Friday, 10:00 AM', 'col_span' => 3, 'tag_structure_type' => 'TD',\n            'style' => ['background_color_rgb' => [245, 247, 250], 'text_color_rgb' => [55, 65, 81]],\n        ]]],\n    ]]];\n}\n\n\u002F\u002F Add an accessible project-status table with a header, colored status cells, and a footer.\n$request = new Request('POST', $apiUrl . '\u002Fpdf-with-added-tables', [\n    'Api-Key' => 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', \u002F\u002F Replace with your API key.\n]);\n$response = (new Client(['http_errors' => false]))->send($request, [\n    'multipart' => [\n        ['name' => 'file', 'contents' => Utils::tryFopen('\u002Fpath\u002Fto\u002Finput.pdf', 'r'), 'filename' => 'input.pdf'],\n        ['name' => 'table_objects', 'contents' => json_encode(projectStatusTable())],\n        ['name' => 'tag_enabled', 'contents' => 'true'],\n        ['name' => 'tag_language', 'contents' => 'en-US'],\n        ['name' => 'output', 'contents' => 'project-status'],\n    ],\n]);\n\necho $response->getBody() . PHP_EOL;\n\n\u003C\u002Fpre>\n\n\u003Cp>Source: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FPHP\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fpdf-with-added-tables.php\">GitHub\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>The provided PHP script begins by including necessary packages using Composer's autoload feature. It utilizes GuzzleHttp for making HTTP requests, and Psr7 for handling requests and utilities.\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">require 'vendor\u002Fautoload.php';\n\nuse GuzzleHttp\\Client;\nuse GuzzleHttp\\Psr7\\Request;\nuse GuzzleHttp\\Psr7\\Utils;\n\u003C\u002Fpre>\n\n\u003Cp>The API endpoint is set to the US-based service by default. Users in Europe can switch to the EU-based endpoint for GDPR compliance by uncommenting the relevant line.\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">$apiUrl = 'https:\u002F\u002Fapi.pdfrest.com';\n\u002F\u002F $apiUrl = 'https:\u002F\u002Feu-api.pdfrest.com';\n\u003C\u002Fpre>\n\n\u003Cp>The \u003Ccode>projectStatusTable\u003C\u002Fcode> function constructs an array representing the table to be added to the PDF. It specifies the page, position, dimensions, and styles for the table, header, rows, and footer.\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">function projectStatusTable(): array\n{\n    ...\n}\n\u003C\u002Fpre>\n\n\u003Cp>A POST request is created, targeting the \u003Ccode>\u002Fpdf-with-added-tables\u003C\u002Fcode> endpoint. The request includes an API key for authentication.\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">$request = new Request('POST', $apiUrl . '\u002Fpdf-with-added-tables', [\n    'Api-Key' => 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',\n]);\n\u003C\u002Fpre>\n\n\u003Cp>The request payload is multipart, containing the input PDF file, table data, and additional parameters like \u003Ccode>tag_enabled\u003C\u002Fcode> and \u003Ccode>tag_language\u003C\u002Fcode>. These parameters ensure that the PDF is tagged and specifies the language for tagging.\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">$response = (new Client(['http_errors' => false]))->send($request, [\n    'multipart' => [\n        ['name' => 'file', 'contents' => Utils::tryFopen('\u002Fpath\u002Fto\u002Finput.pdf', 'r'), 'filename' => 'input.pdf'],\n        ['name' => 'table_objects', 'contents' => json_encode(projectStatusTable())],\n        ['name' => 'tag_enabled', 'contents' => 'true'],\n        ['name' => 'tag_language', 'contents' => 'en-US'],\n        ['name' => 'output', 'contents' => 'project-status'],\n    ],\n]);\n\u003C\u002Fpre>\n\n\u003Cp>The response from the API is output to the console, displaying the result of the API call.\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">echo $response->getBody() . PHP_EOL;\n\u003C\u002Fpre>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>In this tutorial, we successfully demonstrated how to use PHP to make an API call to pdfRest's Add to PDF tool, adding a table to a PDF document. This example serves as a foundation for integrating more complex features into your PDF workflows.\u003C\u002Fp>\n\n\u003Cp>We encourage you to explore all the pdfRest API Tools in the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. For further details, consult the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">API Reference Guide\u003C\u002Fa>. This example demonstrates a multipart API call; for JSON payloads, refer to the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FPHP\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Fpdf-with-added-tables.php\">GitHub repository\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2026-08-21T17:51:55.000+00:00","Learn how to integrate the pdfRest Add to PDF API with PHP and programmatically insert professional tables into PDF files.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-tables-to-pdf-files-with-php\u002F#article\",\n      \"headline\": \"How to Add Tables to PDF Files with PHP\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-tables-to-pdf-files-with-php\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-tables-to-pdf-files-with-php\u002F\",\n      \"datePublished\": \"2026-08-21T17:51:55.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:04.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to integrate the pdfRest Add to PDF API with PHP and programmatically insert professional tables into PDF files.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Add to PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fpdf-with-added-tables API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fadd-to-pdf\"\n        }\n      ],\n      \"keywords\": \"Add to PDF, PDF Generation, PHP, Tables\",\n      \"dependencies\": \"PHP, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Add Tables to PDF Files with PHP\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-tables-to-pdf-files-with-php\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3006,3007,3008,3009,3010,3011],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1842,"name":1843,"slug":1844,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2227,"name":2228,"slug":2229,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1858,"name":1859,"slug":1860,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1850,"name":1851,"slug":1852,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-add-tables-to-pdf-files-with-php\u002F","How to Add Tables to PDF Files with PHP, Tutorial | pdfRest",{"id":3016,"uuid":3017,"title":3018,"slug":3019,"html":3020,"comment_id":3016,"feature_image":48,"featured":284,"visibility":1257,"created_at":3021,"updated_at":3022,"published_at":3021,"custom_excerpt":3023,"codeinjection_head":3024,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3025,"primary_tag":3032,"url":3033,"excerpt":3023,"reading_time":320,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3034,"meta_description":3023,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"6a888f95533c9f26b943abb7","10d7df34-0492-456f-ab5e-804dbb2206f4","How to Add Tables to PDF Files with Python","how-to-add-tables-to-pdf-files-with-python","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Add Tables to PDF with Python?\u003C\u002Fh2>\n\n\u003Cp>The \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F'>pdfRest Add to PDF API Tool\u003C\u002Fa> is a powerful resource for developers looking to manipulate PDF documents programmatically. This tutorial will guide you through the process of making an API call to the Add to PDF endpoint using Python. By leveraging this tool, you can automate the addition of tables and other elements to your PDFs, enhancing their utility and presentation.\u003C\u002Fp>\n\n\u003Cp>Imagine you're managing a project and need to regularly update stakeholders with the latest project status in a PDF format. Using the Add to PDF API, you can programmatically insert a table into a PDF document that outlines project milestones, owners, and statuses. This can save significant time and ensure that your documents are consistently formatted and up-to-date.\u003C\u002Fp>\n\n\u003Ch2>Add Tables to PDF with Python Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-python\">import json\n\nimport requests\nfrom requests_toolbelt import MultipartEncoder\n\n# By default, we use the US-based API service. This is the primary endpoint for global use.\napi_url = \"https:\u002F\u002Fapi.pdfrest.com\"\n\n# For GDPR compliance and enhanced performance for European users, you can switch to the EU-based service by uncommenting the URL below.\n# For more information visit https:\u002F\u002Fpdfrest.com\u002Fpricing#how-do-eu-gdpr-api-calls-work\n# api_url = \"https:\u002F\u002Feu-api.pdfrest.com\"\n\n# Add an accessible project-status table with a header, colored status cells, and a footer.\ntable_objects = [\n    {\n        \"page\": 1,\n        \"x\": 54,\n        \"y\": 540,\n        \"width\": 504,\n        \"columns\": [{\"width\": 210}, {\"width\": 144}, {\"width\": 150}],\n        \"tag_structure_type\": \"Table\",\n        \"style\": {\n            \"padding\": {\"top\": 6, \"right\": 8, \"bottom\": 6, \"left\": 8},\n            \"text_size\": 10,\n        },\n        \"header_rows\": [\n            {\n                \"cells\": [\n                    {\"text\": \"Milestone\", \"tag_structure_type\": \"TH\", \"style\": {\"background_color_rgb\": [26, 72, 112], \"text_color_rgb\": [255, 255, 255]}},\n                    {\"text\": \"Owner\", \"tag_structure_type\": \"TH\", \"style\": {\"background_color_rgb\": [26, 72, 112], \"text_color_rgb\": [255, 255, 255]}},\n                    {\"text\": \"Status\", \"tag_structure_type\": \"TH\", \"style\": {\"background_color_rgb\": [26, 72, 112], \"text_color_rgb\": [255, 255, 255]}},\n                ]\n            }\n        ],\n        \"rows\": [\n            {\"cells\": [{\"text\": \"Requirements review\"}, {\"text\": \"Maya Chen\"}, {\"text\": \"Complete\", \"tag_structure_type\": \"TD\", \"style\": {\"background_color_rgb\": [220, 252, 231]}}]},\n            {\"cells\": [{\"text\": \"Prototype delivery\"}, {\"text\": \"Jordan Lee\"}, {\"text\": \"In progress\", \"tag_structure_type\": \"TD\", \"style\": {\"background_color_rgb\": [254, 249, 195]}}]},\n            {\"cells\": [{\"text\": \"Stakeholder approval\"}, {\"text\": \"Avery Patel\"}, {\"text\": \"Planned\", \"tag_structure_type\": \"TD\", \"style\": {\"background_color_rgb\": [239, 246, 255]}}]},\n        ],\n        \"footer_rows\": [\n            {\"cells\": [{\"text\": \"Next review: Friday, 10:00 AM\", \"col_span\": 3, \"tag_structure_type\": \"TD\", \"style\": {\"background_color_rgb\": [245, 247, 250], \"text_color_rgb\": [55, 65, 81]}}]}\n        ],\n    }\n]\n\nwith open(\"\u002Fpath\u002Fto\u002Finput.pdf\", \"rb\") as input_file:\n    multipart = MultipartEncoder(\n        fields={\n            \"file\": (\"input.pdf\", input_file, \"application\u002Fpdf\"),\n            \"table_objects\": json.dumps(table_objects),\n            \"tag_enabled\": \"true\",\n            \"tag_language\": \"en-US\",\n            \"output\": \"project-status\",\n        }\n    )\n    response = requests.post(\n        f\"{api_url}\u002Fpdf-with-added-tables\",\n        data=multipart,\n        headers={\n            \"Accept\": \"application\u002Fjson\",\n            \"Api-Key\": \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",  # Replace with your API key.\n            \"Content-Type\": multipart.content_type,\n        },\n    )\n\nprint(f\"Response status code: {response.status_code}\")\nprint(json.dumps(response.json(), indent=2) if response.ok else response.text)\n\u003C\u002Fpre>\n\n\u003Cp>Source: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FPython\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fpdf-with-added-tables.py\">GitHub Repository\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>The code begins by importing necessary libraries, including \u003Ccode>json\u003C\u002Fcode> for handling JSON data and \u003Ccode>requests\u003C\u002Fcode> along with \u003Ccode>MultipartEncoder\u003C\u002Fcode> from \u003Ccode>requests_toolbelt\u003C\u002Fcode> for making multipart HTTP requests.\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">api_url = \"https:\u002F\u002Fapi.pdfrest.com\"\n\u003C\u002Fpre>\n\n\u003Cp>This line sets the base URL for the API. The default is the US-based service, but there's an option for a GDPR-compliant EU-based service.\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">table_objects = [\n    {\n        \"page\": 1,\n        \"x\": 54,\n        \"y\": 540,\n        \"width\": 504,\n        \"columns\": [{\"width\": 210}, {\"width\": 144}, {\"width\": 150}],\n        \"tag_structure_type\": \"Table\",\n        \"style\": {\n            \"padding\": {\"top\": 6, \"right\": 8, \"bottom\": 6, \"left\": 8},\n            \"text_size\": 10,\n        },\n        ...\n    }\n]\n\u003C\u002Fpre>\n\n\u003Cp>This dictionary defines the table to be added to the PDF. It specifies the page number, coordinates, dimensions, and style of the table. The \u003Ccode>tag_structure_type\u003C\u002Fcode> is set to \"Table\", indicating the structure of the content.\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">with open(\"\u002Fpath\u002Fto\u002Finput.pdf\", \"rb\") as input_file:\n    multipart = MultipartEncoder(\n        fields={\n            \"file\": (\"input.pdf\", input_file, \"application\u002Fpdf\"),\n            \"table_objects\": json.dumps(table_objects),\n            \"tag_enabled\": \"true\",\n            \"tag_language\": \"en-US\",\n            \"output\": \"project-status\",\n        }\n    )\n\u003C\u002Fpre>\n\n\u003Cp>This section opens the input PDF file and prepares the multipart form data. The \u003Ccode>fields\u003C\u002Fcode> dictionary includes the file, table objects, tagging options, and output file name. The \u003Ccode>json.dumps()\u003C\u002Fcode> function converts the \u003Ccode>table_objects\u003C\u002Fcode> dictionary into a JSON string.\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">response = requests.post(\n    f\"{api_url}\u002Fpdf-with-added-tables\",\n    data=multipart,\n    headers={\n        \"Accept\": \"application\u002Fjson\",\n        \"Api-Key\": \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",  # Replace with your API key.\n        \"Content-Type\": multipart.content_type,\n    },\n)\n\u003C\u002Fpre>\n\n\u003Cp>This block sends the POST request to the API endpoint, including necessary headers such as the API key and content type. The response from the API is captured in the \u003Ccode>response\u003C\u002Fcode> variable.\u003C\u002Fp>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>In this tutorial, you learned how to use Python to make a multipart API call to the pdfRest Add to PDF endpoint, adding a table to a PDF document. This example demonstrates the flexibility of the pdfRest API in automating PDF manipulations.\u003C\u002Fp>\n\n\u003Cp>To explore further, try out all the pdfRest API Tools in the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. For more detailed information, refer to the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">API Reference Guide\u003C\u002Fa>. This example is a multipart API call. For examples using JSON payloads, visit the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FPython\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Fpdf-with-added-tables.py\">GitHub Repository\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2026-08-21T17:49:09.000+00:00","2026-09-02T18:26:44.000+00:00","Learn how to use Python and the pdfRest API to add structured, formatted tables to PDF documents programmatically.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-tables-to-pdf-files-with-python\u002F#article\",\n      \"headline\": \"How to Add Tables to PDF Files with Python\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-tables-to-pdf-files-with-python\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-tables-to-pdf-files-with-python\u002F\",\n      \"datePublished\": \"2026-08-21T17:49:09.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:04.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to use Python and the pdfRest API to add structured, formatted tables to PDF documents programmatically.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Add to PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fpdf-with-added-tables API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fadd-to-pdf\"\n        }\n      ],\n      \"keywords\": \"Add to PDF, PDF Generation, Python, Tables\",\n      \"dependencies\": \"Python, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Add Tables to PDF Files with Python\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-tables-to-pdf-files-with-python\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3026,3027,3028,3029,3030,3031],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1842,"name":1843,"slug":1844,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2219,"name":2220,"slug":2221,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1858,"name":1859,"slug":1860,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1850,"name":1851,"slug":1852,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-add-tables-to-pdf-files-with-python\u002F","How to Add Tables to PDF Files with Python, Tutorial | pdfRest",{"id":3036,"uuid":3037,"title":3038,"slug":3039,"html":3040,"comment_id":3036,"feature_image":48,"featured":284,"visibility":1257,"created_at":3041,"updated_at":3022,"published_at":3041,"custom_excerpt":3042,"codeinjection_head":3043,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3044,"primary_tag":3049,"url":3050,"excerpt":3042,"reading_time":295,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3051,"meta_description":3042,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"672a96ea533c9f26b9438b9e","65f3bc8f-2888-494c-a3a7-492d059a5da2","How to Add Text to PDF Files in .NET with C#","how-to-add-text-to-pdf-files-in-net-with-c","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Add Text to PDF Files with C#?\u003C\u002Fh2>\n\n\u003Cp>The pdfRest \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F'>Add to PDF API Tool\u003C\u002Fa> is a powerful resource for developers looking to programmatically add text to PDF documents. This tutorial will guide you through the process of sending an API call to the Add to PDF endpoint using C#. By integrating this tool into your C# applications, you can automate the process of modifying PDF files, making it easier to manage and update documents without manual intervention.\u003C\u002Fp>\n\n\u003Cp>A user might need to add text to a PDF for various reasons, such as personalizing documents with user-specific information, adding annotations or comments, or dynamically generating reports with specific data. For instance, a company could use this API to automatically add customer names and order details to invoices before sending them out, ensuring each document is customized and accurate.\u003C\u002Fp>\n\n\u003Ch2>Add Text to PDF Files with C# Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-csharp\">using Newtonsoft.Json;\nusing Newtonsoft.Json.Linq;\nusing System.Text;\n\nusing (var httpClient = new HttpClient { BaseAddress = new Uri(\"https:\u002F\u002Fapi.pdfrest.com\") })\n{\n    using (var request = new HttpRequestMessage(HttpMethod.Post, \"pdf-with-added-text\"))\n    {\n        request.Headers.TryAddWithoutValidation(\"Api-Key\", \"xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\");\n        request.Headers.Accept.Add(new(\"application\u002Fjson\"));\n        var multipartContent = new MultipartFormDataContent();\n\n        var byteArray = File.ReadAllBytes(\"\u002Fpath\u002Fto\u002Ffile\");\n        var byteAryContent = new ByteArrayContent(byteArray);\n        multipartContent.Add(byteAryContent, \"file\", \"file_name\");\n        byteAryContent.Headers.TryAddWithoutValidation(\"Content-Type\", \"application\u002Fpdf\");\n\n        var text_option_array = new JArray();\n        var text_options = new JObject\n        {\n            [\"font\"] = \"Times New Roman\",\n            [\"max_width\"] = \"175\",\n            [\"opacity\"] = \"1\",\n            [\"page\"] = \"1\",\n            [\"rotation\"] = \"0\",\n            [\"text\"] = \"sample text in PDF\",\n            [\"text_color_rgb\"] = \"0,0,0\",\n            [\"text_size\"] = \"30\",\n            [\"x\"] = \"72\",\n            [\"y\"] = \"144\"\n        };\n        text_option_array.Add(text_options);\n        var byteArrayOption = new ByteArrayContent(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(text_option_array)));\n        multipartContent.Add(byteArrayOption, \"text_objects\");\n\n\n        request.Content = multipartContent;\n        var response = await httpClient.SendAsync(request);\n\n        var apiResult = await response.Content.ReadAsStringAsync();\n\n        Console.WriteLine(\"API response received.\");\n        Console.WriteLine(apiResult);\n    }\n}\n\u003C\u002Fpre>\n\n\u003Cp>Source: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FDotNET\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fpdf-with-added-text.cs\">GitHub Repository\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>The code begins by setting up an \u003Ccode>HttpClient\u003C\u002Fcode> with a base address pointing to the pdfRest API:\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">using (var httpClient = new HttpClient { BaseAddress = new Uri(\"https:\u002F\u002Fapi.pdfrest.com\") })\n\u003C\u002Fpre>\n\n\u003Cp>Next, an \u003Ccode>HttpRequestMessage\u003C\u002Fcode> is created to send a POST request to the \u003Ccode>pdf-with-added-text\u003C\u002Fcode> endpoint:\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">using (var request = new HttpRequestMessage(HttpMethod.Post, \"pdf-with-added-text\"))\n\u003C\u002Fpre>\n\n\u003Cp>The API key is added to the request headers for authentication:\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">request.Headers.TryAddWithoutValidation(\"Api-Key\", \"xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\");\n\u003C\u002Fpre>\n\n\u003Cp>A \u003Ccode>MultipartFormDataContent\u003C\u002Fcode> object is created to hold the file and text options. The PDF file is read as a byte array and added to the multipart content:\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">var byteArray = File.ReadAllBytes(\"\u002Fpath\u002Fto\u002Ffile\");\nvar byteAryContent = new ByteArrayContent(byteArray);\nmultipartContent.Add(byteAryContent, \"file\", \"file_name\");\nbyteAryContent.Headers.TryAddWithoutValidation(\"Content-Type\", \"application\u002Fpdf\");\n\u003C\u002Fpre>\n\n\u003Cp>The text options are defined in a JSON object, specifying parameters like font, size, color, and position:\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">var text_options = new JObject\n{\n    [\"font\"] = \"Times New Roman\",\n    [\"max_width\"] = \"175\",\n    [\"opacity\"] = \"1\",\n    [\"page\"] = \"1\",\n    [\"rotation\"] = \"0\",\n    [\"text\"] = \"sample text in PDF\",\n    [\"text_color_rgb\"] = \"0,0,0\",\n    [\"text_size\"] = \"30\",\n    [\"x\"] = \"72\",\n    [\"y\"] = \"144\"\n};\n\u003C\u002Fpre>\n\n\u003Cp>These options are serialized to JSON and added to the multipart content:\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">var byteArrayOption = new ByteArrayContent(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(text_option_array)));\nmultipartContent.Add(byteArrayOption, \"text_objects\");\n\u003C\u002Fpre>\n\n\u003Cp>The request is sent, and the response is read and printed to the console:\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">var response = await httpClient.SendAsync(request);\nvar apiResult = await response.Content.ReadAsStringAsync();\n\u003C\u002Fpre>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>In this tutorial, you've learned how to use C# to make an API call to pdfRest's Add to PDF endpoint, allowing you to add text to PDF files programmatically. This is a practical solution for automating PDF modifications in your applications.\u003C\u002Fp>\n\n\u003Cp>To explore more capabilities of the pdfRest API Tools, visit the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. For detailed documentation, refer to the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">API Reference Guide\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Cp>Note: This example demonstrates a multipart API call. Code samples using JSON payloads can be found at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FDotNET\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Fpdf-with-added-text.cs\">GitHub Repository\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2024-11-05T22:06:34.000+00:00","Learn how use pdfRest Add to PDF API Tool to insert text into a PDF with C#","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-pdf-files-in-net-with-c\u002F#article\",\n      \"headline\": \"How to Add Text to PDF Files in .NET with C#\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-pdf-files-in-net-with-c\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-pdf-files-in-net-with-c\u002F\",\n      \"datePublished\": \"2024-11-05T22:06:34.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:23.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how use pdfRest Add to PDF API Tool to insert text into a PDF with C#\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Add to PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fpdf-with-added-text API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fadd-to-pdf\"\n        }\n      ],\n      \"keywords\": \".NET, Add to PDF\",\n      \"dependencies\": \".NET, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Add Text to PDF Files in .NET with C#\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-pdf-files-in-net-with-c\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3045,3046,3047,3048],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1842,"name":1843,"slug":1844,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2231,"name":2232,"slug":2233,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-add-text-to-pdf-files-in-net-with-c\u002F","How to Add Text to PDF Files in .NET with C#, Tutorial | pdfRest",{"id":3053,"uuid":3054,"title":3055,"slug":3056,"html":3057,"comment_id":3053,"feature_image":48,"featured":284,"visibility":1257,"created_at":3058,"updated_at":3059,"published_at":3058,"custom_excerpt":3060,"codeinjection_head":3061,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3062,"primary_tag":3068,"url":3069,"excerpt":3060,"reading_time":295,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3070,"meta_description":3060,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"672a9da6533c9f26b9438bb8","2c84f07a-cec7-4123-8acf-ea1cc71600ea","How to Add Text to PDF Files with cURL","how-to-add-text-to-pdf-files-with-curl","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Add Text to PDF Files with cURL?\u003C\u002Fh2>\n\n\u003Cp>The pdfRest \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F'>Add to PDF API Tool\u003C\u002Fa> is a powerful resource for developers who need to programmatically add text to PDF documents. This tutorial will guide you through the process of sending an API call to the Add to PDF endpoint using cURL, a command line tool for transferring data with URLs. By learning how to use cURL with pdfRest, you can automate the process of modifying PDFs, making it efficient and scalable for various applications.\u003C\u002Fp>\n\n\u003Cp>Imagine you are working for a company that needs to generate personalized reports for hundreds of clients. Each report is a PDF document that requires the client's name and unique data to be added to specific locations within the document. Using the Add to PDF API with cURL, you can automate this process, ensuring accuracy and saving time by eliminating the need for manual editing.\u003C\u002Fp>\n\n\u003Ch2>Add Text to PDF Files with cURL Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-bash\">TEXT_OPTIONS='[{\"font\":\"Times New Roman\",\"max_width\":\"175\",\"opacity\":\"1\",\"page\":\"1\",\"rotation\":\"0\",\"text\":\"sample text in PDF\",\"text_color_rgb\":\"0,0,0\",\"text_size\":\"30\",\"x\":\"72\",\"y\":\"144\"}]'\n\ncurl -X POST \"https:\u002F\u002Fapi.pdfrest.com\u002Fpdf-with-added-text\" \\\n  -H \"Accept: application\u002Fjson\" \\\n  -H \"Content-Type: multipart\u002Fform-data\" \\\n  -H \"Api-Key: xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\" \\\n  -F \"file=@\u002Fpath\u002Fto\u002Ffile\" \\\n  -F \"text_objects=$TEXT_OPTIONS\" \\\n  -F \"output=example_out\"\n\u003C\u002Fpre>\n\n\u003Cp>Source: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FcURL\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fpdf-with-added-text.sh\">GitHub Repository\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>Let's break down the provided cURL command to understand how it works:\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">TEXT_OPTIONS='[{\"font\":\"Times New Roman\",\"max_width\":\"175\",\"opacity\":\"1\",\"page\":\"1\",\"rotation\":\"0\",\"text\":\"sample text in PDF\",\"text_color_rgb\":\"0,0,0\",\"text_size\":\"30\",\"x\":\"72\",\"y\":\"144\"}]'\n\u003C\u002Fpre>\n\n\u003Cp>This line defines a shell variable \u003Ccode>TEXT_OPTIONS\u003C\u002Fcode> containing a JSON string. This JSON specifies the text properties to be added to the PDF, such as font, size, color, and position.\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">curl -X POST \"https:\u002F\u002Fapi.pdfrest.com\u002Fpdf-with-added-text\"\n\u003C\u002Fpre>\n\n\u003Cp>This line initiates a POST request to the pdfRest API endpoint for adding text to PDFs.\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">-H \"Accept: application\u002Fjson\"\n\u003C\u002Fpre>\n\n\u003Cp>This header specifies that the client expects a JSON response from the server.\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">-H \"Content-Type: multipart\u002Fform-data\"\n\u003C\u002Fpre>\n\n\u003Cp>This header indicates that the request body will be sent as \u003Ccode>multipart\u002Fform-data\u003C\u002Fcode>, which is necessary for file uploads.\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">-H \"Api-Key: xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"\n\u003C\u002Fpre>\n\n\u003Cp>This header includes the API key, which is required for authentication. You must replace the placeholder with your actual API key.\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">-F \"file=@\u002Fpath\u002Fto\u002Ffile\"\n\u003C\u002Fpre>\n\n\u003Cp>This option specifies the file to upload. Replace \u003Ccode>\u002Fpath\u002Fto\u002Ffile\u003C\u002Fcode> with the path to your PDF file.\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">-F \"text_objects=$TEXT_OPTIONS\"\n\u003C\u002Fpre>\n\n\u003Cp>This option sends the text options defined earlier as part of the form data.\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">-F \"output=example_out\"\n\u003C\u002Fpre>\n\n\u003Cp>This option specifies the output file name for the processed PDF.\u003C\u002Fp>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>In this tutorial, you learned how to make a multipart API call to add text to a PDF using the pdfRest Add to PDF API Tool with cURL. This process allows for efficient and automated PDF modifications. To explore more features and tools, try out all the pdfRest API Tools in the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. For detailed information on each API, refer to the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">API Reference Guide\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Cp>Note: This is an example of a multipart API call. Code samples using JSON payloads can be found at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FcURL\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Fpdf-with-added-text.sh\">GitHub JSON Payload Examples\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2024-11-05T22:35:18.000+00:00","2026-09-02T18:26:45.000+00:00","Learn how to add text to a PDF using pdfRest Add to PDF API Tool with cURL","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-pdf-files-with-curl\u002F#article\",\n      \"headline\": \"How to Add Text to PDF Files with cURL\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-pdf-files-with-curl\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-pdf-files-with-curl\u002F\",\n      \"datePublished\": \"2024-11-05T22:35:18.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:22.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to add text to a PDF using pdfRest Add to PDF API Tool with cURL\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Add to PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fpdf-with-added-text API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fadd-to-pdf\"\n        }\n      ],\n      \"keywords\": \"Add to PDF, Text, cURL\",\n      \"dependencies\": \"cURL, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Add Text to PDF Files with cURL\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-pdf-files-with-curl\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3063,3064,3065,3066,3067],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1842,"name":1843,"slug":1844,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2239,"name":2240,"slug":2241,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1480,"name":1481,"slug":1482,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-add-text-to-pdf-files-with-curl\u002F","How to Add Text to PDF Files with cURL, Tutorial | pdfRest",{"id":3072,"uuid":3073,"title":3074,"slug":3075,"html":3076,"comment_id":3072,"feature_image":48,"featured":284,"visibility":1257,"created_at":3077,"updated_at":3059,"published_at":2746,"custom_excerpt":3078,"codeinjection_head":3079,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3080,"primary_tag":3086,"url":3087,"excerpt":3078,"reading_time":345,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3088,"meta_description":3078,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"6a970c55533c9f26b943b47f","e98c7cc8-285b-4f44-98df-2f21fe373dd3","How to Add Text to PDF Files with Java","how-to-add-text-to-pdf-files-with-java","\n\u003C!--kg-card-begin: html-->\n\u003Cp>This tutorial shows you how to add text to PDF files from a Java application with the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F\">Add to PDF API Tool\u003C\u002Fa>. The example builds a \u003Ccode>text_objects\u003C\u002Fcode> profile that controls placement and appearance before posting the PDF and instructions together. The walkthrough gives you a practical starting point that you can adapt when you need to add text to PDF files in your own document workflow.\u003C\u002Fp>\n\n\u003Ch2>Why Add Text to PDF Files with Java?\u003C\u002Fh2>\n\n\u003Cp>A case-management service may need to stamp a case number and review date onto an incoming document before it enters an approval queue. Adding text programmatically makes the identifier visible on the page and repeatable across every processed file.\u003C\u002Fp>\n\n\u003Cp>The \u003Ccode>text_objects\u003C\u002Fcode> JSON array controls page number, coordinates, font, text size, color, opacity, rotation, and wrapping width. Coordinate values are expressed in PDF points.\u003C\u002Fp>\n\n\u003Ch2>Java Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-java\">import io.github.cdimascio.dotenv.Dotenv;\nimport java.io.File;\nimport java.io.IOException;\nimport java.util.concurrent.TimeUnit;\nimport okhttp3.*;\nimport org.json.JSONObject;\n\npublic class PDFWithAddedText {\n\n  \u002F\u002F By default, we use the US-based API service. This is the primary endpoint for global use.\n  private static final String API_URL = \"https:\u002F\u002Fapi.pdfrest.com\";\n\n  \u002F\u002F For GDPR compliance and enhanced performance for European users, you can switch to the EU-based\n  \u002F\u002F service by commenting out the URL above and uncommenting the URL below.\n  \u002F\u002F For more information visit https:\u002F\u002Fpdfrest.com\u002Fpricing#how-do-eu-gdpr-api-calls-work\n  \u002F\u002F private static final String API_URL = \"https:\u002F\u002Feu-api.pdfrest.com\";\n\n  \u002F\u002F Specify the path to your file here, or as the first argument when running the program.\n  private static final String DEFAULT_FILE_PATH = \"\u002Fpath\u002Fto\u002Ffile\";\n\n  \u002F\u002F Specify your API key here, or in the environment variable PDFREST_API_KEY.\n  \u002F\u002F You can also put the environment variable in a .env file.\n  private static final String DEFAULT_API_KEY = \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\";\n\n  public static void main(String[] args) {\n    File inputFile;\n    if (args.length > 0) {\n      inputFile = new File(args[0]);\n    } else {\n      inputFile = new File(DEFAULT_FILE_PATH);\n    }\n\n    final Dotenv dotenv = Dotenv.configure().ignoreIfMalformed().ignoreIfMissing().load();\n\n    final String text_options =\n        \"[{\\\"font\\\":\\\"Times New Roman\\\",\\\"max_width\\\":\\\"175\\\",\\\"opacity\\\":\\\"1\\\",\\\"page\\\":\\\"1\\\",\\\"rotation\\\":\\\"0\\\",\\\"text\\\":\\\"sample text in PDF\\\",\\\"text_color_rgb\\\":\\\"0,0,0\\\",\\\"text_size\\\":\\\"30\\\",\\\"x\\\":\\\"72\\\",\\\"y\\\":\\\"144\\\"}]\";\n    final RequestBody inputFileRequestBody =\n        RequestBody.create(inputFile, MediaType.parse(\"application\u002Fpdf\"));\n    RequestBody requestBody =\n        new MultipartBody.Builder()\n            .setType(MultipartBody.FORM)\n            .addFormDataPart(\"file\", inputFile.getName(), inputFileRequestBody)\n            .addFormDataPart(\"text_objects\", text_options)\n            .addFormDataPart(\"output\", \"pdfrest_added_text\")\n            .build();\n    Request request =\n        new Request.Builder()\n            .header(\"Api-Key\", dotenv.get(\"PDFREST_API_KEY\", DEFAULT_API_KEY))\n            .url(API_URL + \"\u002Fpdf-with-added-text\")\n            .post(requestBody)\n            .build();\n    try {\n      OkHttpClient client =\n          new OkHttpClient().newBuilder().readTimeout(60, TimeUnit.SECONDS).build();\n\n      Response response = client.newCall(request).execute();\n      System.out.println(\"Result code \" + response.code());\n      if (response.body() != null) {\n        System.out.println(prettyJson(response.body().string()));\n      }\n    } catch (IOException e) {\n      throw new RuntimeException(e);\n    }\n  }\n\n  private static String prettyJson(String json) {\n    \u002F\u002F https:\u002F\u002Fstackoverflow.com\u002Fa\u002F9583835\u002F11996393\n    return new JSONObject(json).toString(4);\n  }\n}\u003C\u002Fpre>\n\n\u003Cp>Source: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FJava\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002FPDFWithAddedText.java\">Java sample on GitHub\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Ch3>Load the Java HTTP and JSON dependencies\u003C\u002Fh3>\n\n\u003Cpre class=\"language-java\">import io.github.cdimascio.dotenv.Dotenv;\nimport java.io.File;\nimport java.io.IOException;\nimport java.util.concurrent.TimeUnit;\nimport okhttp3.*;\nimport org.json.JSONObject;\u003C\u002Fpre>\n\n\u003Cp>This dependency set combines OkHttp networking with dotenv configuration and \u003Ccode>org.json\u003C\u002Fcode> processing.\u003C\u002Fp>\n\n\u003Ch3>Choose the input and load credentials\u003C\u002Fh3>\n\n\u003Cpre class=\"language-java\">\u002F\u002F service by commenting out the URL above and uncommenting the URL below.\n  \u002F\u002F For more information visit https:\u002F\u002Fpdfrest.com\u002Fpricing#how-do-eu-gdpr-api-calls-work\n  \u002F\u002F private static final String API_URL = \"https:\u002F\u002Feu-api.pdfrest.com\";\n\n  \u002F\u002F Specify the path to your file here, or as the first argument when running the program.\n  private static final String DEFAULT_FILE_PATH = \"\u002Fpath\u002Fto\u002Ffile\";\n\n  \u002F\u002F Specify your API key here, or in the environment variable PDFREST_API_KEY.\n  \u002F\u002F You can also put the environment variable in a .env file.\n  private static final String DEFAULT_API_KEY = \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\";\n\n  public static void main(String[] args) {\n    File inputFile;\n    if (args.length > 0) {\n      inputFile = new File(args[0]);\n    } else {\n      inputFile = new File(DEFAULT_FILE_PATH);\n    }\n\n    final Dotenv dotenv = Dotenv.configure().ignoreIfMalformed().ignoreIfMissing().load();\n\n    final String text_options =\u003C\u002Fpre>\n\n\u003Cp>The startup code separates file selection from authentication so either value can change without rewriting the request.\u003C\u002Fp>\n\n\u003Ch3>Build the multipart request body\u003C\u002Fh3>\n\n\u003Cpre class=\"language-java\">final RequestBody inputFileRequestBody =\n        RequestBody.create(inputFile, MediaType.parse(\"application\u002Fpdf\"));\n    RequestBody requestBody =\n        new MultipartBody.Builder()\n            .setType(MultipartBody.FORM)\n            .addFormDataPart(\"file\", inputFile.getName(), inputFileRequestBody)\n            .addFormDataPart(\"text_objects\", text_options)\n            .addFormDataPart(\"output\", \"pdfrest_added_text\")\n            .build();\n    Request request =\n        new Request.Builder()\n            .header(\"Api-Key\", dotenv.get(\"PDFREST_API_KEY\", DEFAULT_API_KEY))\n            .url(API_URL + \"\u002Fpdf-with-added-text\")\n            .post(requestBody)\n            .build();\n    try {\n      OkHttpClient client =\u003C\u002Fpre>\n\n\u003Cp>The \u003Ccode>text_objects\u003C\u002Fcode> JSON array controls page number, coordinates, font, text size, color, opacity, rotation, and wrapping width. Coordinate values are expressed in PDF points. The multipart section uses the form multipart type required for combining uploaded content with operation parameters.\u003C\u002Fp>\n\n\u003Ch3>Send the request to pdfRest\u003C\u002Fh3>\n\n\u003Cpre class=\"language-java\">.build();\n    Request request =\n        new Request.Builder()\n            .header(\"Api-Key\", dotenv.get(\"PDFREST_API_KEY\", DEFAULT_API_KEY))\n            .url(API_URL + \"\u002Fpdf-with-added-text\")\n            .post(requestBody)\n            .build();\n    try {\n      OkHttpClient client =\n          new OkHttpClient().newBuilder().readTimeout(60, TimeUnit.SECONDS).build();\u003C\u002Fpre>\n\n\u003Cp>The request builder adds the API key header, selects the operation URL, and attaches the prepared body; changing the base constant switches between US and EU service hosts.\u003C\u002Fp>\n\n\u003Ch3>Read the API response\u003C\u002Fh3>\n\n\u003Cpre class=\"language-java\">OkHttpClient client =\n          new OkHttpClient().newBuilder().readTimeout(60, TimeUnit.SECONDS).build();\n\n      Response response = client.newCall(request).execute();\n      System.out.println(\"Result code \" + response.code());\n      if (response.body() != null) {\n        System.out.println(prettyJson(response.body().string()));\n      }\n    } catch (IOException e) {\n      throw new RuntimeException(e);\n    }\n  }\n\n  private static String prettyJson(String json) {\n    \u002F\u002F https:\u002F\u002Fstackoverflow.com\u002Fa\u002F9583835\u002F11996393\n    return new JSONObject(json).toString(4);\u003C\u002Fpre>\n\n\u003Cp>The response block shows the raw outcome for learning purposes; production code can retain output IDs and branch on reported errors.\u003C\u002Fp>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>You have now seen how to add text to PDF files from a Java application. With that foundation, you can adapt the text-object array for document IDs, status labels, page-specific notices, or generated headings.\u003C\u002Fp>\n\n\u003Cp>When you move beyond the sample, keep in mind that pDF coordinates are measured in points, so placement should be tested against the actual page dimensions and rotation of representative inputs. For variable text, calculate wrapping width and position from document data rather than assuming every identifier or notice occupies the same space.\u003C\u002Fp>\n\n\u003Cp>You can experiment with the Add Text to PDF operation in \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. The \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fadd-to-pdf\u002F\">Add to PDF API Tool documentation\u003C\u002Fa> describes the full parameter and response contract.\u003C\u002Fp>\n\n\u003Cp>Note: The Add Text to PDF example above uses multipart form data; to avoid transferring the same input again, compare the multipart call with the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FJava\u002FEndpoint%20Examples\u002FJSON%20Payload\u002FPDFWithAddedText.java\">JSON payload example\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2026-09-01T17:33:09.000+00:00","Place positioned text on an existing PDF with Java using configurable fonts, size, color, and coordinates.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-pdf-files-with-java\u002F#article\",\n      \"headline\": \"How to Add Text to PDF Files with Java\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-pdf-files-with-java\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-pdf-files-with-java\u002F\",\n      \"datePublished\": \"2026-09-01T21:57:31.000Z\",\n      \"dateModified\": \"2026-09-01T21:57:31.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Place positioned text on an existing PDF with Java using configurable fonts, size, color, and coordinates.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Add to PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fpdf-with-added-text API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fadd-to-pdf\"\n        }\n      ],\n      \"keywords\": \"Add to PDF, Java, Text\",\n      \"dependencies\": \"Java, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Add Text to PDF Files with Java\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-pdf-files-with-java\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3081,3082,3083,3084,3085],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1842,"name":1843,"slug":1844,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1480,"name":1481,"slug":1482,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2235,"name":2236,"slug":2237,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-add-text-to-pdf-files-with-java\u002F","Add Text to PDF Files with Java | pdfRest",{"id":3090,"uuid":3091,"title":3092,"slug":3093,"html":3094,"comment_id":3090,"feature_image":48,"featured":284,"visibility":1257,"created_at":3095,"updated_at":3059,"published_at":3095,"custom_excerpt":3096,"codeinjection_head":3097,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3098,"primary_tag":3104,"url":3105,"excerpt":3096,"reading_time":295,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3106,"meta_description":3096,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"672a9738533c9f26b9438ba8","2e9d62fb-5446-48db-ac41-413049f3c0c1","How to Add Text to PDF Files with JavaScript in NodeJS","how-to-add-text-to-pdf-files-with-javascript-in-nodejs","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Add Text to PDF Files with JavaScript?\u003C\u002Fh2>\n\n\u003Cp>The pdfRest \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F'>Add to PDF API Tool\u003C\u002Fa> is a powerful solution for developers looking to programmatically add text to PDF documents. By using JavaScript, you can easily integrate this functionality into your web applications, allowing for dynamic PDF content updates. This tutorial will guide you through the process of sending an API call to the Add to PDF endpoint using JavaScript.\u003C\u002Fp>\n\n\u003Cp>Imagine a scenario where a company needs to generate personalized invoices for its clients. By using the Add to PDF API, the company can automate the process of adding client-specific details, such as names and billing information, directly onto a PDF template. This not only saves time but also reduces the possibility of errors that can occur with manual entry.\u003C\u002Fp>\n\n\u003Ch2>Add Text to PDF Files with JavaScript Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-javascript\">\u002F**\n * This request demonstrates how to add text to a PDF.\n * Horizontal and vertical offsets of the text are measured in PDF units. (1 inch = 72 PDF units)\n *\u002F\nvar axios = require('axios');\nvar FormData = require('form-data');\nvar fs = require('fs');\n\n\u002F\u002F Create a new form data instance and append the PDF file and parameters to it\nvar data = new FormData();\ndata.append('file', fs.createReadStream('\u002Fpath\u002Fto\u002Ffile'));\nvar text_option_array = [];\nvar text_options = {\n    \"font\":\"Times New Roman\",\n    \"max_width\":\"175\",\n    \"opacity\":\"1\",\n    \"page\":\"1\",\n    \"rotation\":\"0\",\n    \"text\":\"sample text in PDF\",\n    \"text_color_rgb\":\"0,0,0\",\n    \"text_size\":\"30\",\n    \"x\":\"72\",\n    \"y\":\"144\"\n};\ntext_option_array.push(text_options);\ndata.append('text_objects', JSON.stringify(text_option_array));\ndata.append('output', 'pdfrest_pdf_with_added_text');\n\n\u002F\u002F define configuration options for axios request\nvar config = {\n  method: 'post',\n  maxBodyLength: Infinity, \u002F\u002F set maximum length of the request body\n  url: 'https:\u002F\u002Fapi.pdfrest.com\u002Fpdf-with-added-text', \n  headers: { \n    'Api-Key': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', \u002F\u002F Replace with your API key\n    ...data.getHeaders() \u002F\u002F set headers for the request\n  },\n  data : data \u002F\u002F set the data to be sent with the request\n};\n\n\u002F\u002F send request and handle response or error\naxios(config)\n.then(function (response) {\n  console.log(JSON.stringify(response.data));\n})\n.catch(function (error) {\n  console.log(error); \n});\n\n\u002F\u002F If you would like to download the file instead of getting the JSON response, please see the 'get-resource-id-endpoint.js' sample.\n\u003C\u002Fpre>\n\n\u003Cp>Source: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FJavaScript\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fpdf-with-added-text.js\">GitHub Repository\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>The code begins by requiring necessary modules: \u003Ccode>axios\u003C\u002Fcode> for HTTP requests, \u003Ccode>form-data\u003C\u002Fcode> for handling form data, and \u003Ccode>fs\u003C\u002Fcode> for file system operations.\u003C\u002Fp>\n\n\u003Cpre class=\"language-javascript\">var data = new FormData();\ndata.append('file', fs.createReadStream('\u002Fpath\u002Fto\u002Ffile'));\n\u003C\u002Fpre>\n\n\u003Cp>Here, a new instance of \u003Ccode>FormData\u003C\u002Fcode> is created. The PDF file to be processed is appended to this instance using a file stream. Ensure the file path is correct.\u003C\u002Fp>\n\n\u003Cpre class=\"language-javascript\">var text_options = {\n    \"font\":\"Times New Roman\",\n    \"max_width\":\"175\",\n    \"opacity\":\"1\",\n    \"page\":\"1\",\n    \"rotation\":\"0\",\n    \"text\":\"sample text in PDF\",\n    \"text_color_rgb\":\"0,0,0\",\n    \"text_size\":\"30\",\n    \"x\":\"72\",\n    \"y\":\"144\"\n};\n\u003C\u002Fpre>\n\n\u003Cp>The \u003Ccode>text_options\u003C\u002Fcode> object specifies the text attributes to be added to the PDF. Each parameter is crucial: \n\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>font\u003C\u002Fcode>: The font type for the text.\u003C\u002Fli>\n\u003Cli>\u003Ccode>max_width\u003C\u002Fcode>: Maximum width of the text box in PDF units.\u003C\u002Fli>\n\u003Cli>\u003Ccode>opacity\u003C\u002Fcode>: Opacity level of the text.\u003C\u002Fli>\n\u003Cli>\u003Ccode>page\u003C\u002Fcode>: Page number where the text will be added.\u003C\u002Fli>\n\u003Cli>\u003Ccode>rotation\u003C\u002Fcode>: Rotation angle of the text.\u003C\u002Fli>\n\u003Cli>\u003Ccode>text\u003C\u002Fcode>: The actual text content to be added.\u003C\u002Fli>\n\u003Cli>\u003Ccode>text_color_rgb\u003C\u002Fcode>: RGB color values for the text.\u003C\u002Fli>\n\u003Cli>\u003Ccode>text_size\u003C\u002Fcode>: Size of the text.\u003C\u002Fli>\n\u003Cli>\u003Ccode>x\u003C\u002Fcode> and \u003Ccode>y\u003C\u002Fcode>: Coordinates for text placement.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Cp>\u003C\u002Fp>\n\n\u003Cpre class=\"language-javascript\">var config = {\n  method: 'post',\n  maxBodyLength: Infinity,\n  url: 'https:\u002F\u002Fapi.pdfrest.com\u002Fpdf-with-added-text', \n  headers: { \n    'Api-Key': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',\n    ...data.getHeaders()\n  },\n  data : data\n};\n\u003C\u002Fpre>\n\n\u003Cp>The \u003Ccode>config\u003C\u002Fcode> object defines the request parameters, including the HTTP method, endpoint URL, headers, and the data payload. The API key must be replaced with a valid key.\u003C\u002Fp>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>In this tutorial, you learned how to use JavaScript to send an API request to pdfRest's Add to PDF endpoint, allowing you to add text to a PDF document programmatically. This can be a valuable tool for automating document processing tasks.\u003C\u002Fp>\n\n\u003Cp>Explore more about pdfRest's capabilities by trying out all the API Tools in the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. For detailed information, refer to the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">API Reference Guide\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Cp>Note: This is an example of a multipart API call. Code samples using JSON payloads can be found \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FJavaScript\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Fpdf-with-added-text.js\">here\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2024-11-05T22:07:52.000+00:00","Learn how to insert text into a PDF with JavaScript using pdfRest Add to PDF API Tool","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-pdf-files-with-javascript-in-nodejs\u002F#article\",\n      \"headline\": \"How to Add Text to PDF Files with JavaScript in NodeJS\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-pdf-files-with-javascript-in-nodejs\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-pdf-files-with-javascript-in-nodejs\u002F\",\n      \"datePublished\": \"2024-11-05T22:07:52.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:23.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to insert text into a PDF with JavaScript using pdfRest Add to PDF API Tool\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Add to PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fpdf-with-added-text API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fadd-to-pdf\"\n        }\n      ],\n      \"keywords\": \"Add to PDF, JavaScript, Text\",\n      \"dependencies\": \"JavaScript, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Add Text to PDF Files with JavaScript in NodeJS\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-pdf-files-with-javascript-in-nodejs\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3099,3100,3101,3102,3103],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1842,"name":1843,"slug":1844,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2223,"name":2224,"slug":2225,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1480,"name":1481,"slug":1482,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-add-text-to-pdf-files-with-javascript-in-nodejs\u002F","How to Add Text to PDF Files with JavaScript in NodeJS, Tutorial | pdfRest",{"id":3108,"uuid":3109,"title":3110,"slug":3111,"html":3112,"comment_id":3108,"feature_image":48,"featured":284,"visibility":1257,"created_at":3113,"updated_at":3114,"published_at":3113,"custom_excerpt":3115,"codeinjection_head":3116,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3117,"primary_tag":3123,"url":3124,"excerpt":3115,"reading_time":320,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3125,"meta_description":3115,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"672a965d533c9f26b9438b94","f0f9eaee-5379-4647-9912-a131deea0d38","How to Add Text to PDF Files with PHP","how-to-add-text-to-a-pdf-with-php","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Add Text to PDF Files with PHP?\u003C\u002Fh2>\n\n\u003Cp>The pdfRest \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F'>Add to PDF API Tool\u003C\u002Fa> is a powerful solution for developers looking to programmatically add text to PDF documents. This tutorial demonstrates how to send an API call to the Add to PDF endpoint using PHP. By leveraging this tool, users can automate the process of editing PDFs, making it an efficient option for applications that require dynamic PDF content generation.\u003C\u002Fp>\n\n\u003Cp>In a real-world scenario, a business might use the Add to PDF API to automatically generate invoices or reports that include custom text, such as customer names, dates, or transaction details. This can streamline workflows by eliminating the need for manual PDF editing, ensuring that documents are consistently formatted and delivered in a timely manner.\u003C\u002Fp>\n\n\u003Ch2>Add Text to PDF Files with PHP Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-python\">\nrequire 'vendor\u002Fautoload.php'; \u002F\u002F Require the autoload file to load Guzzle HTTP client.\n\nuse GuzzleHttp\\Client; \u002F\u002F Import the Guzzle HTTP client namespace.\nuse GuzzleHttp\\Psr7\\Request; \u002F\u002F Import the PSR-7 Request class.\nuse GuzzleHttp\\Psr7\\Utils; \u002F\u002F Import the PSR-7 Utils class for working with streams.\n\n$client = new Client(); \u002F\u002F Create a new instance of the Guzzle HTTP client.\n\n$headers = [\n  'Api-Key' =--> 'xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' \u002F\u002F Set the API key in the headers for authentication.\n];\n\n$options = [\n  'multipart' => [\n    [\n      'name' => 'file', \u002F\u002F Specify the field name for the file.\n      'contents' => Utils::tryFopen('\u002Fpath\u002Fto\u002Ffile', 'r'), \u002F\u002F Open the file specified by the '\u002Fpath\u002Fto\u002Ffile' for reading.\n      'filename' => '\u002Fpath\u002Fto\u002Ffile', \u002F\u002F Set the filename for the file to be processed, in this case, '\u002Fpath\u002Fto\u002Ffile'.\n      'headers' => [\n        'Content-Type' => '\u003Ccontent-type header=\"\">' \u002F\u002F Set the Content-Type header for the file.\n      ]\n    ],\n    [\n      'name' => 'text_objects', \u002F\u002F Specify the field name for the text options.\n      'contents' => '[{\"font\":\"Times New Roman\",\"max_width\":\"175\",\"opacity\":\"1\",\"page\":\"1\",\"rotation\":\"0\",\"text\":\"sample text in PDF\",\"text_color_rgb\":\"0,0,0\",\"text_size\":\"30\",\"x\":\"72\",\"y\":\"144\"}]' \u002F\u002F Set the value for the text_objects option. This is a JSON-formatted string consisting of an array with sets of text options.\n    ],\n    [\n      'name' => 'output', \u002F\u002F Specify the field name for the output option.\n      'contents' => 'pdfrest_pdf_with_added_text' \u002F\u002F Set the value for the output option (in this case, 'pdfrest_pdf_with_added_text').\n    ]\n  ]\n];\n\n$request = new Request('POST', 'https:\u002F\u002Fapi.pdfrest.com\u002Fpdf-with-added-text', $headers); \u002F\u002F Create a new HTTP POST request with the API endpoint and headers.\n\n$res = $client->sendAsync($request, $options)->wait(); \u002F\u002F Send the asynchronous request and wait for the response.\n\necho $res->getBody(); \u002F\u002F Output the response body, which contains the PDF with new text.\n\n\u003C\u002Fcontent-type>\u003C\u002Fpre>\n\n\u003Cp>Source: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FPHP\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fpdf-with-added-text.php\">GitHub Repository\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>The code begins by requiring the autoload file to load the Guzzle HTTP client, which is necessary for making HTTP requests:\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">require 'vendor\u002Fautoload.php';\n\u003C\u002Fpre>\n\n\u003Cp>Next, we import the necessary classes from the Guzzle library:\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">use GuzzleHttp\\Client;\nuse GuzzleHttp\\Psr7\\Request;\nuse GuzzleHttp\\Psr7\\Utils;\n\u003C\u002Fpre>\n\n\u003Cp>We then create a new instance of the Guzzle HTTP client:\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">$client = new Client();\n\u003C\u002Fpre>\n\n\u003Cp>The headers for the request are set, including the API key for authentication:\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">$headers = [\n  'Api-Key' => 'xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'\n];\n\u003C\u002Fpre>\n\n\u003Cp>The options array is configured with multipart data, which includes the file to be processed, the text objects to add, and the output format:\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">$options = [\n  'multipart' => [\n    [\n      'name' => 'file',\n      'contents' => Utils::tryFopen('\u002Fpath\u002Fto\u002Ffile', 'r'),\n      'filename' => '\u002Fpath\u002Fto\u002Ffile',\n      'headers' => [\n        'Content-Type' => '\u003Ccontent-type header=\"\">'\n      ]\n    ],\n    [\n      'name' => 'text_objects',\n      'contents' => '[{\"font\":\"Times New Roman\",\"max_width\":\"175\",\"opacity\":\"1\",\"page\":\"1\",\"rotation\":\"0\",\"text\":\"sample text in PDF\",\"text_color_rgb\":\"0,0,0\",\"text_size\":\"30\",\"x\":\"72\",\"y\":\"144\"}]'\n    ],\n    [\n      'name' => 'output',\n      'contents' => 'pdfrest_pdf_with_added_text'\n    ]\n  ]\n];\n\u003C\u002Fcontent-type>\u003C\u002Fpre>\n\n\u003Cp>A new HTTP POST request is created with the specified endpoint and headers:\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">$request = new Request('POST', 'https:\u002F\u002Fapi.pdfrest.com\u002Fpdf-with-added-text', $headers);\n\u003C\u002Fpre>\n\n\u003Cp>The request is sent asynchronously, and the response is awaited and outputted:\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">$res = $client->sendAsync($request, $options)->wait();\necho $res->getBody();\n\u003C\u002Fpre>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>In this tutorial, we demonstrated how to use PHP to make an API call to the pdfRest Add to PDF endpoint, allowing you to add text to a PDF document programmatically. This can be a valuable tool for automating document processing tasks.\u003C\u002Fp>\n\n\u003Cp>To further explore the capabilities of the pdfRest API, we encourage you to try out all the available tools in the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. For more detailed information, refer to the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">API Reference Guide\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Cp>Note: This example demonstrates a multipart API call. Code samples using JSON payloads can be found at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FPHP\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Fpdf-with-added-text.php\">this GitHub repository\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2024-11-05T22:04:13.000+00:00","2026-09-02T18:26:46.000+00:00","Learn how use pdfRest Add to PDF API Tool with PHP to insert text into a PDF","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-a-pdf-with-php\u002F#article\",\n      \"headline\": \"How to Add Text to PDF Files with PHP\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-a-pdf-with-php\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-a-pdf-with-php\u002F\",\n      \"datePublished\": \"2024-11-05T22:04:13.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:23.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how use pdfRest Add to PDF API Tool with PHP to insert text into a PDF\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Add to PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fpdf-with-added-text API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fadd-to-pdf\"\n        }\n      ],\n      \"keywords\": \"Add to PDF, PHP, Text\",\n      \"dependencies\": \"PHP, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Add Text to PDF Files with PHP\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-a-pdf-with-php\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3118,3119,3120,3121,3122],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1842,"name":1843,"slug":1844,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2227,"name":2228,"slug":2229,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1480,"name":1481,"slug":1482,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-add-text-to-a-pdf-with-php\u002F","How to Add Text to a PDF with PHP, Tutorial | pdfRest",{"id":3127,"uuid":3128,"title":3129,"slug":3130,"html":3131,"comment_id":3127,"feature_image":48,"featured":284,"visibility":1257,"created_at":3132,"updated_at":3114,"published_at":3132,"custom_excerpt":3133,"codeinjection_head":3134,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3135,"primary_tag":3141,"url":3142,"excerpt":3133,"reading_time":295,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3143,"meta_description":3133,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"672a9634533c9f26b9438b8a","c8a54afb-bdb0-4e92-b48c-af682e4d27c8","How to Add Text to PDF Files with Python","how-to-add-text-to-pdf-files-with-python","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Add to PDF Files with Python?\u003C\u002Fh2>\n\n\u003Cp>The pdfRest \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F'>Add to PDF API Tool\u003C\u002Fa> is a powerful resource for developers looking to programmatically add text to PDF documents. This tutorial will guide you through the process of sending an API call to the Add to PDF endpoint using Python. By leveraging this tool, you can automate the process of modifying PDF files, which is particularly useful for applications that require dynamic PDF content generation or updates.\u003C\u002Fp>\n\n\u003Cp>Consider a scenario where a business needs to generate personalized invoices for its customers. By using the Add to PDF API, the business can automatically insert customer names, addresses, and invoice details into a PDF template, streamlining the invoicing process and reducing the potential for manual errors. This approach not only enhances efficiency but also ensures a consistent and professional appearance for all generated documents.\u003C\u002Fp>\n\n\u003Ch2>Add Text to PDF Files with Python Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-python\">from requests_toolbelt import MultipartEncoder\nimport requests\nimport json\n\npdf_with_added_text_endpoint_url = 'https:\u002F\u002Fapi.pdfrest.com\u002Fpdf-with-added-text'\n\ntext_options = [{\n    \"font\":\"Times New Roman\",\n    \"max_width\":\"175\",\n    \"opacity\":\"1\",\n    \"page\":\"1\",\n    \"rotation\":\"0\",\n    \"text\":\"sample text in PDF\",\n    \"text_color_rgb\":\"0,0,0\",\n    \"text_size\":\"30\",\n    \"x\":\"72\",\n    \"y\":\"144\"\n}]\n\nmp_encoder_addedtextPDF = MultipartEncoder(\n    fields={\n        'file': ('file_name.pdf', open('\u002Fpath\u002Fto\u002Ffile', 'rb'), 'application\u002Fpdf'),\n        'text_objects': json.dumps(text_options),\n        'output' : 'example_out'\n    }\n)\n\nheaders = {\n    'Accept': 'application\u002Fjson',\n    'Content-Type': mp_encoder_addedtextPDF.content_type,\n    'Api-Key': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' # place your api key here\n}\n\nprint(\"Sending POST request to pdf-with-added-text endpoint...\")\nresponse = requests.post(pdf_with_added_text_endpoint_url, data=mp_encoder_addedtextPDF, headers=headers)\n\nprint(\"Response status code: \" + str(response.status_code))\n\nif response.ok:\n    response_json = response.json()\n    print(json.dumps(response_json, indent = 2))\nelse:\n    print(response.text)\n\u003C\u002Fpre>\n\n\u003Cp>Source: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FPython\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fpdf-with-added-text.py\">GitHub Repository\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>The code begins by importing necessary libraries: \u003Ccode>requests_toolbelt\u003C\u002Fcode> for handling multipart encoding, \u003Ccode>requests\u003C\u002Fcode> for making HTTP requests, and \u003Ccode>json\u003C\u002Fcode> for handling JSON data.\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">pdf_with_added_text_endpoint_url = 'https:\u002F\u002Fapi.pdfrest.com\u002Fpdf-with-added-text'\n\u003C\u002Fpre>\n\n\u003Cp>This line sets the endpoint URL for the Add to PDF API.\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">text_options = [{\n    \"font\":\"Times New Roman\",\n    \"max_width\":\"175\",\n    \"opacity\":\"1\",\n    \"page\":\"1\",\n    \"rotation\":\"0\",\n    \"text\":\"sample text in PDF\",\n    \"text_color_rgb\":\"0,0,0\",\n    \"text_size\":\"30\",\n    \"x\":\"72\",\n    \"y\":\"144\"\n}]\n\u003C\u002Fpre>\n\n\u003Cp>The \u003Ccode>text_options\u003C\u002Fcode> dictionary specifies the text attributes to be added to the PDF. Each key-value pair defines a property such as \u003Ccode>font\u003C\u002Fcode>, \u003Ccode>max_width\u003C\u002Fcode>, \u003Ccode>opacity\u003C\u002Fcode>, \u003Ccode>page\u003C\u002Fcode>, \u003Ccode>rotation\u003C\u002Fcode>, \u003Ccode>text\u003C\u002Fcode>, \u003Ccode>text_color_rgb\u003C\u002Fcode>, \u003Ccode>text_size\u003C\u002Fcode>, \u003Ccode>x\u003C\u002Fcode>, and \u003Ccode>y\u003C\u002Fcode>. These options allow precise control over the appearance and placement of the text.\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">mp_encoder_addedtextPDF = MultipartEncoder(\n    fields={\n        'file': ('file_name.pdf', open('\u002Fpath\u002Fto\u002Ffile', 'rb'), 'application\u002Fpdf'),\n        'text_objects': json.dumps(text_options),\n        'output' : 'example_out'\n    }\n)\n\u003C\u002Fpre>\n\n\u003Cp>The \u003Ccode>MultipartEncoder\u003C\u002Fcode> is used to prepare the multipart form-data payload. The \u003Ccode>fields\u003C\u002Fcode> parameter includes the PDF file, the JSON-encoded \u003Ccode>text_objects\u003C\u002Fcode>, and the desired \u003Ccode>output\u003C\u002Fcode> filename.\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">headers = {\n    'Accept': 'application\u002Fjson',\n    'Content-Type': mp_encoder_addedtextPDF.content_type,\n    'Api-Key': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' # place your api key here\n}\n\u003C\u002Fpre>\n\n\u003Cp>The \u003Ccode>headers\u003C\u002Fcode> dictionary sets the request headers, including the \u003Ccode>Accept\u003C\u002Fcode> type, \u003Ccode>Content-Type\u003C\u002Fcode> derived from the \u003Ccode>MultipartEncoder\u003C\u002Fcode>, and the \u003Ccode>Api-Key\u003C\u002Fcode>, which you need to replace with your actual API key.\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">response = requests.post(pdf_with_added_text_endpoint_url, data=mp_encoder_addedtextPDF, headers=headers)\n\u003C\u002Fpre>\n\n\u003Cp>This line sends the POST request to the API endpoint, passing the encoded data and headers.\u003C\u002Fp>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>In this tutorial, you successfully learned how to use Python to send an API request to the pdfRest Add to PDF endpoint, allowing you to add text to a PDF document programmatically. This is a versatile tool that can be integrated into various applications requiring PDF modifications.\u003C\u002Fp>\n\n\u003Cp>For further exploration, you can demo all of the pdfRest API Tools in the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. Additionally, the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">API Reference Guide\u003C\u002Fa> provides comprehensive details on all available endpoints and parameters.\u003C\u002Fp>\n\n\u003Cp>Note: This is an example of a multipart API call. Code samples using JSON payloads can be found at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FPython\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Fpdf-with-added-text.py\">GitHub Repository\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2024-11-05T22:03:32.000+00:00","Learn how to insert text into a PDF using pdfRest Add to PDF API Tool with Python","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-pdf-files-with-python\u002F#article\",\n      \"headline\": \"How to Add Text to PDF Files with Python\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-pdf-files-with-python\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-pdf-files-with-python\u002F\",\n      \"datePublished\": \"2024-11-05T22:03:32.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:23.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to insert text into a PDF using pdfRest Add to PDF API Tool with Python\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Add to PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fpdf-with-added-text API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fadd-to-pdf\"\n        }\n      ],\n      \"keywords\": \"Add to PDF, Python, Text\",\n      \"dependencies\": \"Python, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Add Text to PDF Files with Python\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-text-to-pdf-files-with-python\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3136,3137,3138,3139,3140],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1842,"name":1843,"slug":1844,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2219,"name":2220,"slug":2221,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1480,"name":1481,"slug":1482,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-add-text-to-pdf-files-with-python\u002F","How to Add Text to PDF Files with Python, Tutorial | pdfRest",{"id":3145,"uuid":3146,"title":3147,"slug":3148,"html":3149,"comment_id":3145,"feature_image":48,"featured":284,"visibility":1257,"created_at":3150,"updated_at":3151,"published_at":3150,"custom_excerpt":3152,"codeinjection_head":3153,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3154,"primary_tag":3160,"url":3161,"excerpt":3152,"reading_time":320,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3162,"meta_description":3152,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"6a860318533c9f26b943ab65","5e99b9eb-6e8b-476c-b3dc-a753b71b9fb9","How to Add Vector Lines and Rectangles to PDF Files in .NET with C#","how-to-add-vector-lines-and-rectangles-to-pdf-files-in-net-with-c","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Add Vector Lines and Rectangles to PDF Files with C#?\u003C\u002Fh2>\n\n\u003Cp>The \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F'>pdfRest Add to PDF API Tool\u003C\u002Fa> is a powerful resource for developers who need to manipulate PDF documents programmatically. By using this tool, you can add shapes such as rectangles and lines to existing PDF files, which can be useful for highlighting areas, adding annotations, or creating custom layouts. This tutorial will guide you through the process of sending an API call to Add to PDF using C#.\u003C\u002Fp>\n\n\u003Cp>Consider a real-world scenario where a company needs to create a review panel on a PDF document for internal audits. By using the Add to PDF API, they can programmatically add shapes like rectangles for background and lines for dividers, ensuring consistency and saving time compared to manual editing. This automation can be especially beneficial when dealing with large volumes of documents.\u003C\u002Fp>\n\n\u003Ch2>Add Vector Lines and Rectangles to PDF Files with C# Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-csharp\">\u002F*\n * What this sample does:\n * - Adds a review-panel background and divider line to a PDF via multipart\u002Fform-data.\n * - Routed from Program.cs as: `dotnet run -- pdf-with-added-shapes-multipart \u003Cinputfile>`.\n *\n * Setup (environment):\n * - Copy .env.example to .env\n * - Set PDFREST_API_KEY=your_api_key_here\n * - Optional: set PDFREST_URL to override the API region. For EU\u002FGDPR compliance and proximity, use:\n *     PDFREST_URL=https:\u002F\u002Feu-api.pdfrest.com\n *   For more information visit https:\u002F\u002Fpdfrest.com\u002Fpricing#how-do-eu-gdpr-api-calls-work\n *\u002F\n\nusing Newtonsoft.Json.Linq;\nusing System.Text;\nusing Samples;\n\nnamespace Samples.EndpointExamples.MultipartPayload;\n\npublic static class PdfWithAddedShapes\n{\n    public static async Task Execute(string[] args)\n    {\n        var inputPath = SampleInput.RequireFile(args, \"pdf-with-added-shapes-multipart\");\n        var apiKey = SampleInput.RequireApiKey();\n        var shapes = JArray.Parse(\"\"\"\n            [\n              {\"type\":\"rectangle\",\"page\":1,\"x\":54,\"y\":540,\"width\":504,\"height\":108,\"fill_color_rgb\":\"245,247,250\",\"stroke_color_rgb\":\"26,72,112\",\"stroke_width\":1,\"tag_is_artifact\":true},\n              {\"type\":\"line\",\"page\":1,\"x1\":72,\"y1\":576,\"x2\":540,\"y2\":576,\"stroke_color_rgb\":\"26,72,112\",\"stroke_width\":1.5,\"tag_actual_text\":\"Review section divider\",\"tag_structure_type\":\"Figure\"}\n            ]\n            \"\"\");\n\n        using var client = SampleInput.CreateClient();\n        using var request = new HttpRequestMessage(HttpMethod.Post, \"pdf-with-added-shapes\");\n        request.Headers.TryAddWithoutValidation(\"Api-Key\", apiKey);\n        request.Headers.Accept.Add(new(\"application\u002Fjson\"));\n        using var content = new MultipartFormDataContent();\n        content.Add(new ByteArrayContent(await File.ReadAllBytesAsync(inputPath)), \"file\", Path.GetFileName(inputPath));\n        content.Add(new StringContent(shapes.ToString(), Encoding.UTF8), \"shape_objects\");\n        content.Add(new StringContent(\"true\"), \"tag_enabled\");\n        content.Add(new StringContent(\"review-panel\"), \"output\");\n        request.Content = content;\n\n        await SampleInput.PrintResponse(client, request);\n    }\n}\n\u003C\u002Finputfile>\u003C\u002Fpre>\n\n\u003Cp>Source: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FDotNET\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fpdf-with-added-shapes.cs\">GitHub\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>The code begins by setting up the environment and requiring necessary inputs such as the input file path and API key:\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">var inputPath = SampleInput.RequireFile(args, \"pdf-with-added-shapes-multipart\");\nvar apiKey = SampleInput.RequireApiKey();\n\u003C\u002Fpre>\n\n\u003Cp>Next, a JSON array defines the shapes to be added, specifying attributes like type, page, coordinates, colors, and more:\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">var shapes = JArray.Parse(\"\"\"\n    [\n      {\"type\":\"rectangle\",\"page\":1,\"x\":54,\"y\":540,\"width\":504,\"height\":108,\"fill_color_rgb\":\"245,247,250\",\"stroke_color_rgb\":\"26,72,112\",\"stroke_width\":1,\"tag_is_artifact\":true},\n      {\"type\":\"line\",\"page\":1,\"x1\":72,\"y1\":576,\"x2\":540,\"y2\":576,\"stroke_color_rgb\":\"26,72,112\",\"stroke_width\":1.5,\"tag_actual_text\":\"Review section divider\",\"tag_structure_type\":\"Figure\"}\n    ]\n    \"\"\");\n\u003C\u002Fpre>\n\n\u003Cp>The HttpClient and HttpRequestMessage are initialized for making the API call. The API key is added to the request header:\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">using var client = SampleInput.CreateClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"pdf-with-added-shapes\");\nrequest.Headers.TryAddWithoutValidation(\"Api-Key\", apiKey);\nrequest.Headers.Accept.Add(new(\"application\u002Fjson\"));\n\u003C\u002Fpre>\n\n\u003Cp>The content of the request is created using MultipartFormDataContent, which includes the PDF file and shape objects:\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">using var content = new MultipartFormDataContent();\ncontent.Add(new ByteArrayContent(await File.ReadAllBytesAsync(inputPath)), \"file\", Path.GetFileName(inputPath));\ncontent.Add(new StringContent(shapes.ToString(), Encoding.UTF8), \"shape_objects\");\ncontent.Add(new StringContent(\"true\"), \"tag_enabled\");\ncontent.Add(new StringContent(\"review-panel\"), \"output\");\nrequest.Content = content;\n\u003C\u002Fpre>\n\n\u003Cp>Finally, the response from the API call is printed:\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">await SampleInput.PrintResponse(client, request);\n\u003C\u002Fpre>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>In this tutorial, you learned how to use C# to make an API call to pdfRest's Add to PDF tool, adding shapes to a PDF document. This example demonstrates how to enhance PDF documents programmatically, which can be useful for various applications like creating templates or adding annotations.\u003C\u002Fp>\n\n\u003Cp>I encourage you to explore all the pdfRest API Tools available in the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. For more detailed information, refer to the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">API Reference Guide\u003C\u002Fa>. Note that this is an example of a multipart API call, and code samples using JSON payloads can be found at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FDotNET\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Fpdf-with-added-shapes.cs\">GitHub\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2026-08-19T19:25:12.000+00:00","2026-09-02T18:26:47.000+00:00","Learn how to use pdfRest Add to PDF API Tool with C# to add vector shapes to PDF documents.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-in-net-with-c\u002F#article\",\n      \"headline\": \"How to Add Vector Lines and Rectangles to PDF Files in .NET with C#\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-in-net-with-c\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-in-net-with-c\u002F\",\n      \"datePublished\": \"2026-08-19T19:25:12.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:05.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to use pdfRest Add to PDF API Tool with C# to add vector shapes to PDF documents.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Add to PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fpdf-with-added-shapes API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fadd-to-pdf\"\n        }\n      ],\n      \"keywords\": \".NET, Add to PDF, PDF Generation\",\n      \"dependencies\": \".NET, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Add Vector Lines and Rectangles to PDF Files in .NET with C#\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-in-net-with-c\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3155,3156,3157,3158,3159],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1842,"name":1843,"slug":1844,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2231,"name":2232,"slug":2233,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1850,"name":1851,"slug":1852,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-in-net-with-c\u002F","How to Add Vector Lines and Rectangles to PDF Files in .NET with C#, Tutorial | pdfRest",{"id":3164,"uuid":3165,"title":3166,"slug":3167,"html":3168,"comment_id":3164,"feature_image":48,"featured":284,"visibility":1257,"created_at":3169,"updated_at":3151,"published_at":3169,"custom_excerpt":3170,"codeinjection_head":3171,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3172,"primary_tag":3178,"url":3179,"excerpt":3170,"reading_time":295,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3180,"meta_description":3170,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"6a86073c533c9f26b943ab79","ee5c7e41-fdd6-4704-917e-555ad49001fe","How to Add Vector Lines and Rectangles to PDF Files with cURL","how-to-add-vector-lines-and-rectangles-to-pdf-files-with-curl","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Add Vector Lines and Rectangles to PDF Files with cURL?\u003C\u002Fh2>\n\n\u003Cp>The \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F'>pdfRest Add to PDF API Tool\u003C\u002Fa> is a powerful resource for developers looking to enhance PDFs by programmatically adding shapes such as lines, rectangles, and more. This tutorial will guide you through the process of making an API call to the Add to PDF endpoint using cURL, a command-line tool for transferring data with URLs. With this tool, you can automate the customization of PDF documents, making it easier to integrate PDF editing capabilities into your applications.\u003C\u002Fp>\n\n\u003Cp>In real-world scenarios, a user might use the Add to PDF tool to insert graphical elements into a PDF for various purposes. For example, a company might want to automatically add branded headers or footers to documents before distribution, or a teacher could add annotations or highlight sections of a PDF for educational purposes. By using cURL, these tasks can be scripted and automated, saving time and ensuring consistency.\u003C\u002Fp>\n\n\u003Ch2>Add Vector Lines and Rectangles to PDF Files with cURL Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-bash\">#!\u002Fbin\u002Fsh\n\n# By default, we use the US-based API service. This is the primary endpoint for global use.\nAPI_URL=\"https:\u002F\u002Fapi.pdfrest.com\"\n\n# For GDPR compliance and enhanced performance for European users, you can switch to the EU-based service by uncommenting the URL below.\n# For more information visit https:\u002F\u002Fpdfrest.com\u002Fpricing#how-do-eu-gdpr-api-calls-work\n# API_URL=\"https:\u002F\u002Feu-api.pdfrest.com\"\n\n# This example adds a lightly shaded review panel and a divider line to page one.\n# Coordinates are measured from the lower-left corner in PDF units (72 units = 1 inch).\nSHAPE_OBJECTS='[\n  {\n    \"type\": \"rectangle\",\n    \"page\": 1,\n    \"x\": 54,\n    \"y\": 540,\n    \"width\": 504,\n    \"height\": 108,\n    \"fill_color_rgb\": \"245,247,250\",\n    \"stroke_color_rgb\": \"26,72,112\",\n    \"stroke_width\": 1,\n    \"tag_is_artifact\": true\n  },\n  {\n    \"type\": \"line\",\n    \"page\": 1,\n    \"x1\": 72,\n    \"y1\": 576,\n    \"x2\": 540,\n    \"y2\": 576,\n    \"stroke_color_rgb\": \"26,72,112\",\n    \"stroke_width\": 1.5,\n    \"tag_actual_text\": \"Review section divider\",\n    \"tag_structure_type\": \"Figure\"\n  }\n]'\n\ncurl -X POST \"$API_URL\u002Fpdf-with-added-shapes\" \\\n  -H \"Accept: application\u002Fjson\" \\\n  -H \"Content-Type: multipart\u002Fform-data\" \\\n  -H \"Api-Key: xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\" \\\n  -F \"file=@\u002Fpath\u002Fto\u002Finput.pdf\" \\\n  -F \"shape_objects=$SHAPE_OBJECTS\" \\\n  -F \"tag_enabled=true\" \\\n  -F \"output=review-panel\"\n\u003C\u002Fpre>\n\n\u003Cp>Source: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FcURL\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fpdf-with-added-shapes.sh\">GitHub Repository\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>The script begins by setting the \u003Ccode>API_URL\u003C\u002Fcode> variable to the US-based endpoint \u003Ccode>\"https:\u002F\u002Fapi.pdfrest.com\"\u003C\u002Fcode>. This is the default for global users, but there's an option to switch to an EU-based endpoint for GDPR compliance.\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">API_URL=\"https:\u002F\u002Fapi.pdfrest.com\"\n\u003C\u002Fpre>\n\n\u003Cp>The \u003Ccode>SHAPE_OBJECTS\u003C\u002Fcode> variable contains a JSON array defining the shapes to be added to the PDF. It specifies a rectangle and a line, detailing their positions, dimensions, and colors. The rectangle is filled with a light shade and outlined, while the line serves as a divider.\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">SHAPE_OBJECTS='[\n  {\n    \"type\": \"rectangle\",\n    \"page\": 1,\n    ...\n  },\n  {\n    \"type\": \"line\",\n    \"page\": 1,\n    ...\n  }\n]'\n\u003C\u002Fpre>\n\n\u003Cp>The \u003Ccode>curl\u003C\u002Fcode> command sends a POST request to the \u003Ccode>pdf-with-added-shapes\u003C\u002Fcode> endpoint. It includes headers for accepting JSON responses and specifying multipart form data. An API key is required for authentication.\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">curl -X POST \"$API_URL\u002Fpdf-with-added-shapes\" \\\n  -H \"Accept: application\u002Fjson\" \\\n  -H \"Content-Type: multipart\u002Fform-data\" \\\n  -H \"Api-Key: xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\" \\\n  ...\n\u003C\u002Fpre>\n\n\u003Cp>The \u003Ccode>-F\u003C\u002Fcode> flags specify form data: the PDF file to modify, the shape objects to add, enabling tagging, and the output file name.\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">-F \"file=@\u002Fpath\u002Fto\u002Finput.pdf\" \\\n-F \"shape_objects=$SHAPE_OBJECTS\" \\\n-F \"tag_enabled=true\" \\\n-F \"output=review-panel\"\n\u003C\u002Fpre>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>In this tutorial, you learned how to use cURL to call the pdfRest Add to PDF API, adding shapes to a PDF document. This example demonstrates the flexibility and power of automating PDF modifications through API calls.\u003C\u002Fp>\n\n\u003Cp>To further explore the capabilities of pdfRest, try out all the API Tools in the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. For detailed information on each endpoint, refer to the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">API Reference Guide\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Cp>Note: This is an example of a multipart API call. For code samples using JSON payloads, visit \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FcURL\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Fpdf-with-added-shapes.sh\">this GitHub repository\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2026-08-19T19:42:52.000+00:00","Learn how to work with the pdfRest Add to PDF API Tool to add vector shapes to PDF documents using cURL.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-with-curl\u002F#article\",\n      \"headline\": \"How to Add Vector Lines and Rectangles to PDF Files with cURL\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-with-curl\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-with-curl\u002F\",\n      \"datePublished\": \"2026-08-19T19:42:52.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:05.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to work with the pdfRest Add to PDF API Tool to add vector shapes to PDF documents using cURL.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Add to PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fpdf-with-added-shapes API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fadd-to-pdf\"\n        }\n      ],\n      \"keywords\": \"Add to PDF, PDF Generation, cURL\",\n      \"dependencies\": \"cURL, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Add Vector Lines and Rectangles to PDF Files with cURL\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-with-curl\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3173,3174,3175,3176,3177],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1842,"name":1843,"slug":1844,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2239,"name":2240,"slug":2241,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1850,"name":1851,"slug":1852,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-with-curl\u002F","How to Add Vector Lines and Rectangles to PDF Files with cURL, Tutorial | pdfRest",{"id":3182,"uuid":3183,"title":3184,"slug":3185,"html":3186,"comment_id":3182,"feature_image":48,"featured":284,"visibility":1257,"created_at":3187,"updated_at":3188,"published_at":3187,"custom_excerpt":3189,"codeinjection_head":3190,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3191,"primary_tag":3197,"url":3198,"excerpt":3189,"reading_time":345,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3199,"meta_description":3189,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"6a8607aa533c9f26b943ab83","582edc6e-e3bc-42d0-8d24-84f8b37c91fc","How to Add Vector Lines and Rectangles to PDF Files with Java","how-to-add-vector-lines-and-rectangles-to-pdf-files-with-java","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Add Vector Lines and Rectangles to PDF Files with Java?\u003C\u002Fh2>\n\n\u003Cp>The \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F'>pdfRest Add to PDF API Tool\u003C\u002Fa> is a powerful resource for developers looking to programmatically add shapes, annotations, or other elements to PDF documents. By using this tool, you can enhance PDFs with custom graphics, making them more interactive and visually appealing. This tutorial will guide you through the process of sending an API call to the Add to PDF endpoint using Java, demonstrating how to integrate this functionality into your applications.\u003C\u002Fp>\n\n\u003Cp>In a real-world scenario, imagine a publishing company that needs to add review panels and divider lines to PDF documents before they are finalized. By using the Add to PDF API, they can automate this process, ensuring consistency and saving time. This capability is particularly useful for businesses that regularly handle large volumes of documents and require a streamlined workflow for document enhancement.\u003C\u002Fp>\n\n\u003Ch2>Add Vector Lines and Rectangles to PDF Files with Java Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-java\">import io.github.cdimascio.dotenv.Dotenv;\nimport java.io.File;\nimport java.io.IOException;\nimport java.util.concurrent.TimeUnit;\nimport okhttp3.MediaType;\nimport okhttp3.MultipartBody;\nimport okhttp3.OkHttpClient;\nimport okhttp3.Request;\nimport okhttp3.RequestBody;\nimport okhttp3.Response;\nimport org.json.JSONArray;\nimport org.json.JSONObject;\n\npublic class PDFWithAddedShapes {\n\n  \u002F\u002F By default, we use the US-based API service. This is the primary endpoint for global use.\n  private static final String API_URL = \"https:\u002F\u002Fapi.pdfrest.com\";\n\n  \u002F\u002F For GDPR compliance and enhanced performance for European users, you can switch to the EU-based\n  \u002F\u002F service by commenting out the URL above and uncommenting the URL below.\n  \u002F\u002F For more information visit https:\u002F\u002Fpdfrest.com\u002Fpricing#how-do-eu-gdpr-api-calls-work\n  \u002F\u002F private static final String API_URL = \"https:\u002F\u002Feu-api.pdfrest.com\";\n\n  private static final String DEFAULT_FILE_PATH = \"\u002Fpath\u002Fto\u002Finput.pdf\";\n  private static final String DEFAULT_API_KEY = \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\";\n\n  public static void main(String[] args) {\n    File inputFile = new File(args.length > 0 ? args[0] : DEFAULT_FILE_PATH);\n    Dotenv dotenv = Dotenv.configure().ignoreIfMalformed().ignoreIfMissing().load();\n\n    \u002F\u002F Add a lightly shaded review panel and a divider line to page one.\n    \u002F\u002F Coordinates are measured from the lower-left corner in PDF units (72 units = 1 inch).\n    JSONArray shapes =\n        new JSONArray()\n            .put(\n                new JSONObject()\n                    .put(\"type\", \"rectangle\")\n                    .put(\"page\", 1)\n                    .put(\"x\", 54)\n                    .put(\"y\", 540)\n                    .put(\"width\", 504)\n                    .put(\"height\", 108)\n                    .put(\"fill_color_rgb\", \"245,247,250\")\n                    .put(\"stroke_color_rgb\", \"26,72,112\")\n                    .put(\"stroke_width\", 1)\n                    .put(\"tag_is_artifact\", true))\n            .put(\n                new JSONObject()\n                    .put(\"type\", \"line\")\n                    .put(\"page\", 1)\n                    .put(\"x1\", 72)\n                    .put(\"y1\", 576)\n                    .put(\"x2\", 540)\n                    .put(\"y2\", 576)\n                    .put(\"stroke_color_rgb\", \"26,72,112\")\n                    .put(\"stroke_width\", 1.5)\n                    .put(\"tag_actual_text\", \"Review section divider\")\n                    .put(\"tag_structure_type\", \"Figure\"));\n\n    RequestBody fileBody = RequestBody.create(inputFile, MediaType.parse(\"application\u002Fpdf\"));\n    RequestBody requestBody =\n        new MultipartBody.Builder()\n            .setType(MultipartBody.FORM)\n            .addFormDataPart(\"file\", inputFile.getName(), fileBody)\n            .addFormDataPart(\"shape_objects\", shapes.toString())\n            .addFormDataPart(\"tag_enabled\", \"true\")\n            .addFormDataPart(\"output\", \"review-panel\")\n            .build();\n    Request request =\n        new Request.Builder()\n            .header(\"Accept\", \"application\u002Fjson\")\n            .header(\"Api-Key\", dotenv.get(\"PDFREST_API_KEY\", DEFAULT_API_KEY))\n            .url(API_URL + \"\u002Fpdf-with-added-shapes\")\n            .post(requestBody)\n            .build();\n\n    OkHttpClient client = new OkHttpClient.Builder().readTimeout(60, TimeUnit.SECONDS).build();\n    try (Response response = client.newCall(request).execute()) {\n      System.out.println(\"Response status code: \" + response.code());\n      if (response.body() != null) {\n        System.out.println(new JSONObject(response.body().string()).toString(2));\n      }\n    } catch (IOException error) {\n      throw new RuntimeException(error);\n    }\n  }\n}\n\u003C\u002Fpre>\n\n\u003Cp>Source: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FJava\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002FPDFWithAddedShapes.java\">GitHub\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>The code begins by importing necessary libraries and defining constants. The \u003Ccode>API_URL\u003C\u002Fcode> is set to the US-based endpoint by default, but an EU-based endpoint is available for GDPR compliance. The \u003Ccode>DEFAULT_FILE_PATH\u003C\u002Fcode> and \u003Ccode>DEFAULT_API_KEY\u003C\u002Fcode> are placeholders for the PDF file path and API key, respectively.\u003C\u002Fp>\n\n\u003Cpre class=\"language-java\">File inputFile = new File(args.length > 0 ? args[0] : DEFAULT_FILE_PATH);\nDotenv dotenv = Dotenv.configure().ignoreIfMalformed().ignoreIfMissing().load();\n\u003C\u002Fpre>\n\n\u003Cp>Here, the code checks if a file path is provided as an argument; otherwise, it uses the default path. The \u003Ccode>Dotenv\u003C\u002Fcode> library loads environment variables, which can include sensitive information like the API key.\u003C\u002Fp>\n\n\u003Cpre class=\"language-java\">JSONArray shapes = new JSONArray()\n    .put(new JSONObject()\n        .put(\"type\", \"rectangle\")\n        .put(\"page\", 1)\n        .put(\"x\", 54)\n        .put(\"y\", 540)\n        .put(\"width\", 504)\n        .put(\"height\", 108)\n        .put(\"fill_color_rgb\", \"245,247,250\")\n        .put(\"stroke_color_rgb\", \"26,72,112\")\n        .put(\"stroke_width\", 1)\n        .put(\"tag_is_artifact\", true))\n    .put(new JSONObject()\n        .put(\"type\", \"line\")\n        .put(\"page\", 1)\n        .put(\"x1\", 72)\n        .put(\"y1\", 576)\n        .put(\"x2\", 540)\n        .put(\"y2\", 576)\n        .put(\"stroke_color_rgb\", \"26,72,112\")\n        .put(\"stroke_width\", 1.5)\n        .put(\"tag_actual_text\", \"Review section divider\")\n        .put(\"tag_structure_type\", \"Figure\"));\n\u003C\u002Fpre>\n\n\u003Cp>This snippet creates a JSON array of shapes to be added to the PDF. The shapes include a rectangle and a line, each with specific properties such as type, page, coordinates, color, and stroke width. These properties define how and where the shapes will appear on the PDF.\u003C\u002Fp>\n\n\u003Cpre class=\"language-java\">RequestBody fileBody = RequestBody.create(inputFile, MediaType.parse(\"application\u002Fpdf\"));\nRequestBody requestBody = new MultipartBody.Builder()\n    .setType(MultipartBody.FORM)\n    .addFormDataPart(\"file\", inputFile.getName(), fileBody)\n    .addFormDataPart(\"shape_objects\", shapes.toString())\n    .addFormDataPart(\"tag_enabled\", \"true\")\n    .addFormDataPart(\"output\", \"review-panel\")\n    .build();\n\u003C\u002Fpre>\n\n\u003Cp>This part constructs the multipart request body. It includes the PDF file, the shapes JSON array, and additional parameters like \u003Ccode>tag_enabled\u003C\u002Fcode> and \u003Ccode>output\u003C\u002Fcode>. The \u003Ccode>tag_enabled\u003C\u002Fcode> parameter, when set to true, ensures that tags are applied to the shapes, while \u003Ccode>output\u003C\u002Fcode> specifies the desired output format.\u003C\u002Fp>\n\n\u003Cpre class=\"language-java\">Request request = new Request.Builder()\n    .header(\"Accept\", \"application\u002Fjson\")\n    .header(\"Api-Key\", dotenv.get(\"PDFREST_API_KEY\", DEFAULT_API_KEY))\n    .url(API_URL + \"\u002Fpdf-with-added-shapes\")\n    .post(requestBody)\n    .build();\n\u003C\u002Fpre>\n\n\u003Cp>A request object is created with headers for content type and API key, and it specifies the endpoint URL. The \u003Ccode>POST\u003C\u002Fcode> method is used to send the request with the constructed request body.\u003C\u002Fp>\n\n\u003Cpre class=\"language-java\">OkHttpClient client = new OkHttpClient.Builder().readTimeout(60, TimeUnit.SECONDS).build();\ntry (Response response = client.newCall(request).execute()) {\n  System.out.println(\"Response status code: \" + response.code());\n  if (response.body() != null) {\n    System.out.println(new JSONObject(response.body().string()).toString(2));\n  }\n} catch (IOException error) {\n  throw new RuntimeException(error);\n}\n\u003C\u002Fpre>\n\n\u003Cp>The \u003Ccode>OkHttpClient\u003C\u002Fcode> is configured to handle the request, with a read timeout of 60 seconds. The response is then processed, printing the status code and response body if available.\u003C\u002Fp>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>In this tutorial, you learned how to use Java to make an API call to pdfRest's Add to PDF endpoint, allowing you to add custom shapes to a PDF document. This example demonstrated the use of a multipart API call, which is useful for handling file uploads and complex data structures.\u003C\u002Fp>\n\n\u003Cp>To further explore the capabilities of pdfRest, you can demo all of the API Tools in the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. For more detailed information, refer to the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">API Reference Guide\u003C\u002Fa>. Note that this tutorial is an example of a multipart API call, and code samples using JSON payloads can be found on \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FJava\u002FEndpoint%20Examples\u002FJSON%20Payload\u002FPDFWithAddedShapes.java\">GitHub\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2026-08-19T19:44:42.000+00:00","2026-09-02T18:26:48.000+00:00","Learn how to add vector shapes to PDF documents with Java using the pdfRest Add to PDF API Tool.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-with-java\u002F#article\",\n      \"headline\": \"How to Add Vector Lines and Rectangles to PDF Files with Java\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-with-java\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-with-java\u002F\",\n      \"datePublished\": \"2026-08-19T19:44:42.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:05.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to add vector shapes to PDF documents with Java using the pdfRest Add to PDF API Tool.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Add to PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fpdf-with-added-shapes API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fadd-to-pdf\"\n        }\n      ],\n      \"keywords\": \"Add to PDF, Java, PDF Generation\",\n      \"dependencies\": \"Java, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Add Vector Lines and Rectangles to PDF Files with Java\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-with-java\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3192,3193,3194,3195,3196],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1842,"name":1843,"slug":1844,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2235,"name":2236,"slug":2237,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1850,"name":1851,"slug":1852,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-with-java\u002F","How to Add Vector Lines and Rectangles to PDF Files with Java, Tutorial | pdfRest",{"id":3201,"uuid":3202,"title":3203,"slug":3204,"html":3205,"comment_id":3201,"feature_image":48,"featured":284,"visibility":1257,"created_at":3206,"updated_at":3188,"published_at":3206,"custom_excerpt":3207,"codeinjection_head":3208,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3209,"primary_tag":3215,"url":3216,"excerpt":3207,"reading_time":320,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3217,"meta_description":3207,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"6a860408533c9f26b943ab6f","2a96da4c-8ba7-443e-8474-1c99a8bc6528","How to Add Vector Lines and Rectangles to PDF Files with JavaScript in NodeJS","how-to-add-vector-lines-and-rectangles-to-pdf-files-with-javascript-in-nodejs","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Add Vector Lines and Rectangles to PDF Files with JavaScript?\u003C\u002Fh2>\n\n\u003Cp>The \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F'>pdfRest Add to PDF API Tool\u003C\u002Fa> is a powerful utility that allows developers to programmatically add shapes and annotations to PDF documents using JavaScript. This tutorial will guide you through the process of sending an API call to the Add to PDF endpoint using JavaScript, enabling you to enhance PDF documents with custom shapes and designs.\u003C\u002Fp>\n\n\u003Cp>In real-world scenarios, a user might use the Add to PDF functionality to enhance reports or documents with visual elements such as dividers, highlights, or annotations. For example, a company could use this tool to automatically add branding elements or review sections to PDF reports generated from their data analytics platform.\u003C\u002Fp>\n\n\u003Ch2>Add Vector Lines and Rectangles to PDF Files with JavaScript Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-javascript\">\u002F**\n * Add a review-panel background and divider line to a PDF.\n * PDF coordinates begin at the lower-left corner; 72 PDF units equal one inch.\n *\u002F\nconst axios = require(\"axios\");\nconst FormData = require(\"form-data\");\nconst fs = require(\"fs\");\n\n\u002F\u002F By default, we use the US-based API service. This is the primary endpoint for global use.\nconst apiUrl = \"https:\u002F\u002Fapi.pdfrest.com\";\n\n\u002F* For GDPR compliance and enhanced performance for European users, you can switch to the EU-based service by uncommenting the URL below.\n * For more information visit https:\u002F\u002Fpdfrest.com\u002Fpricing#how-do-eu-gdpr-api-calls-work\n *\u002F\n\u002F\u002F const apiUrl = \"https:\u002F\u002Feu-api.pdfrest.com\";\n\nconst shapes = [\n  {\n    type: \"rectangle\",\n    page: 1,\n    x: 54,\n    y: 540,\n    width: 504,\n    height: 108,\n    fill_color_rgb: \"245,247,250\",\n    stroke_color_rgb: \"26,72,112\",\n    stroke_width: 1,\n    tag_is_artifact: true,\n  },\n  {\n    type: \"line\",\n    page: 1,\n    x1: 72,\n    y1: 576,\n    x2: 540,\n    y2: 576,\n    stroke_color_rgb: \"26,72,112\",\n    stroke_width: 1.5,\n    tag_actual_text: \"Review section divider\",\n    tag_structure_type: \"Figure\",\n  },\n];\n\nconst form = new FormData();\nform.append(\"file\", fs.createReadStream(\"\u002Fpath\u002Fto\u002Finput.pdf\"));\nform.append(\"shape_objects\", JSON.stringify(shapes));\nform.append(\"tag_enabled\", \"true\");\nform.append(\"output\", \"review-panel\");\n\naxios({\n  method: \"post\",\n  maxBodyLength: Infinity,\n  url: `${apiUrl}\u002Fpdf-with-added-shapes`,\n  headers: {\n    \"Api-Key\": \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\", \u002F\u002F Replace with your API key.\n    ...form.getHeaders(),\n  },\n  data: form,\n})\n  .then((response) => console.log(JSON.stringify(response.data, null, 2)))\n  .catch((error) => console.log(error.response?.data || error.message));\n\n\u002F\u002F To download the returned file, use the outputId with the get-resource-id endpoint sample.\n\u003C\u002Fpre>\n\n\u003Cp>Source: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FJavaScript\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fpdf-with-added-shapes.js\">GitHub Repository\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>The code begins by importing necessary modules: \u003Ccode>axios\u003C\u002Fcode> for making HTTP requests, \u003Ccode>form-data\u003C\u002Fcode> for handling form submissions, and \u003Ccode>fs\u003C\u002Fcode> for file system operations.\u003C\u002Fp>\n\n\u003Cpre class=\"language-javascript\">const apiUrl = \"https:\u002F\u002Fapi.pdfrest.com\";\n\u003C\u002Fpre>\n\n\u003Cp>This line sets the API endpoint URL. For European users concerned with GDPR compliance, a separate EU endpoint is available.\u003C\u002Fp>\n\n\u003Cpre class=\"language-javascript\">const shapes = [\n  {\n    type: \"rectangle\",\n    page: 1,\n    x: 54,\n    y: 540,\n    width: 504,\n    height: 108,\n    fill_color_rgb: \"245,247,250\",\n    stroke_color_rgb: \"26,72,112\",\n    stroke_width: 1,\n    tag_is_artifact: true,\n  },\n  {\n    type: \"line\",\n    page: 1,\n    x1: 72,\n    y1: 576,\n    x2: 540,\n    y2: 576,\n    stroke_color_rgb: \"26,72,112\",\n    stroke_width: 1.5,\n    tag_actual_text: \"Review section divider\",\n    tag_structure_type: \"Figure\",\n  },\n];\n\u003C\u002Fpre>\n\n\u003Cp>This array defines the shapes to be added to the PDF. Each shape object includes properties such as type, position, dimensions, and styling attributes. The \u003Ccode>tag_is_artifact\u003C\u002Fcode> and \u003Ccode>tag_actual_text\u003C\u002Fcode> fields are used for accessibility tagging.\u003C\u002Fp>\n\n\u003Cpre class=\"language-javascript\">form.append(\"file\", fs.createReadStream(\"\u002Fpath\u002Fto\u002Finput.pdf\"));\nform.append(\"shape_objects\", JSON.stringify(shapes));\nform.append(\"tag_enabled\", \"true\");\nform.append(\"output\", \"review-panel\");\n\u003C\u002Fpre>\n\n\u003Cp>These lines append the PDF file, shape definitions, and additional parameters to the form data. The \u003Ccode>tag_enabled\u003C\u002Fcode> parameter enables tagging for accessibility, and \u003Ccode>output\u003C\u002Fcode> specifies the output file name.\u003C\u002Fp>\n\n\u003Cpre class=\"language-javascript\">axios({\n  method: \"post\",\n  maxBodyLength: Infinity,\n  url: `${apiUrl}\u002Fpdf-with-added-shapes`,\n  headers: {\n    \"Api-Key\": \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\", \u002F\u002F Replace with your API key.\n    ...form.getHeaders(),\n  },\n  data: form,\n})\n\u003C\u002Fpre>\n\n\u003Cp>This snippet sends a POST request to the API endpoint, including the form data and headers. The \u003Ccode>Api-Key\u003C\u002Fcode> must be replaced with your actual API key.\u003C\u002Fp>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>In this tutorial, you learned how to use JavaScript to call the pdfRest Add to PDF API and add custom shapes to a PDF document. This example demonstrates how to enhance PDF files with visual elements programmatically.\u003C\u002Fp>\n\n\u003Cp>To explore further, you can demo all of the pdfRest API Tools in the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. For more detailed information, refer to the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">API Reference Guide\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Cp>Note: This is an example of a multipart API call. Code samples using JSON payloads can be found at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FJavaScript\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Fpdf-with-added-shapes.js\">GitHub Repository\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2026-08-19T19:29:12.000+00:00","Learn how to add vector shapes to PDF documents with JavaScript using Add to PDF API Tool from pdfRest.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-with-javascript-in-nodejs\u002F#article\",\n      \"headline\": \"How to Add Vector Lines and Rectangles to PDF Files with JavaScript in NodeJS\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-with-javascript-in-nodejs\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-with-javascript-in-nodejs\u002F\",\n      \"datePublished\": \"2026-08-19T19:29:12.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:05.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to add vector shapes to PDF documents with JavaScript using Add to PDF API Tool from pdfRest.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Add to PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fpdf-with-added-shapes API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fadd-to-pdf\"\n        }\n      ],\n      \"keywords\": \"Add to PDF, JavaScript, PDF Generation\",\n      \"dependencies\": \"JavaScript, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Add Vector Lines and Rectangles to PDF Files with JavaScript in NodeJS\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-with-javascript-in-nodejs\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3210,3211,3212,3213,3214],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1842,"name":1843,"slug":1844,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2223,"name":2224,"slug":2225,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1850,"name":1851,"slug":1852,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-with-javascript-in-nodejs\u002F","How to Add Vector Lines and Rectangles to PDF Files with JavaScript in NodeJS, Tutorial | pdfRest",{"id":3219,"uuid":3220,"title":3221,"slug":3222,"html":3223,"comment_id":3219,"feature_image":48,"featured":284,"visibility":1257,"created_at":3224,"updated_at":3188,"published_at":3224,"custom_excerpt":3225,"codeinjection_head":3226,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3227,"primary_tag":3233,"url":3234,"excerpt":3225,"reading_time":295,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3235,"meta_description":3225,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"6a860299533c9f26b943ab5b","bf0ddb45-21ae-4664-b727-d3f791d1fafb","How to Add Vector Lines and Rectangles to PDF Files with PHP","how-to-add-vector-lines-and-rectangles-to-pdf-files-with-php","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Add Vector Lines and Rectangles to PDF Files with PHP?\u003C\u002Fh2>\n\n\u003Cp>The \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F'>pdfRest Add to PDF API Tool\u003C\u002Fa> is a powerful resource for developers who need to programmatically add shapes to PDF documents. This tutorial will guide you through the process of making an API call to the Add to PDF endpoint using PHP, allowing you to enhance your PDF files with custom shapes and annotations.\u003C\u002Fp>\n\n\u003Cp>Imagine you're a developer working on a document management system that requires adding review panels or annotations to PDFs for collaborative editing. The Add to PDF API can streamline this process by enabling you to programmatically insert shapes, such as lines and rectangles, into your PDFs, thus enhancing the document's utility and readability.\u003C\u002Fp>\n\n\u003Ch2>Add Vector Lines and Rectangles to PDF Files with PHP Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-python\">\nrequire 'vendor\u002Fautoload.php';\n\nuse GuzzleHttp\\Client;\nuse GuzzleHttp\\Psr7\\Request;\nuse GuzzleHttp\\Psr7\\Utils;\n\n\u002F\u002F By default, we use the US-based API service. This is the primary endpoint for global use.\n$apiUrl = 'https:\u002F\u002Fapi.pdfrest.com';\n\n\u002F* For GDPR compliance and enhanced performance for European users, you can switch to the EU-based service by uncommenting the URL below.\n * For more information visit https:\u002F\u002Fpdfrest.com\u002Fpricing#how-do-eu-gdpr-api-calls-work\n *\u002F\n\u002F\u002F $apiUrl = 'https:\u002F\u002Feu-api.pdfrest.com';\n\n\u002F\u002F Add a lightly shaded review panel and a divider line to page one.\n\u002F\u002F Coordinates are measured from the lower-left corner in PDF units (72 units = 1 inch).\n$shapeObjects = [\n    [\n        'type' =--> 'rectangle', 'page' => 1, 'x' => 54, 'y' => 540, 'width' => 504, 'height' => 108,\n        'fill_color_rgb' => '245,247,250', 'stroke_color_rgb' => '26,72,112', 'stroke_width' => 1,\n        'tag_is_artifact' => true,\n    ],\n    [\n        'type' => 'line', 'page' => 1, 'x1' => 72, 'y1' => 576, 'x2' => 540, 'y2' => 576,\n        'stroke_color_rgb' => '26,72,112', 'stroke_width' => 1.5,\n        'tag_actual_text' => 'Review section divider', 'tag_structure_type' => 'Figure',\n    ],\n];\n\n$request = new Request('POST', $apiUrl . '\u002Fpdf-with-added-shapes', [\n    'Api-Key' => 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', \u002F\u002F Replace with your API key.\n]);\n$response = (new Client(['http_errors' => false]))->send($request, [\n    'multipart' => [\n        ['name' => 'file', 'contents' => Utils::tryFopen('\u002Fpath\u002Fto\u002Finput.pdf', 'r'), 'filename' => 'input.pdf'],\n        ['name' => 'shape_objects', 'contents' => json_encode($shapeObjects)],\n        ['name' => 'tag_enabled', 'contents' => 'true'],\n        ['name' => 'output', 'contents' => 'review-panel'],\n    ],\n]);\n\necho $response->getBody() . PHP_EOL;\n\n\u002F\u002F To download the returned file, use the outputId with the get-resource-id endpoint sample.\n\n\u003C\u002Fpre>\n\n\u003Cp>Source: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FPHP\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fpdf-with-added-shapes.php\">GitHub\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>The code begins by importing necessary libraries using \u003Ccode>require 'vendor\u002Fautoload.php';\u003C\u002Fcode> and setting up the Guzzle HTTP client for making HTTP requests.\u003C\u002Fp>\n\n\u003Cp>The API endpoint URL is set with \u003Ccode>$apiUrl = 'https:\u002F\u002Fapi.pdfrest.com';\u003C\u002Fcode>. This is the default US-based endpoint, but an EU-based endpoint is available for GDPR compliance.\u003C\u002Fp>\n\n\u003Cp>The \u003Ccode>$shapeObjects\u003C\u002Fcode> array defines the shapes to be added to the PDF. Each shape is specified with attributes like \u003Ccode>type\u003C\u002Fcode>, \u003Ccode>page\u003C\u002Fcode>, \u003Ccode>x\u003C\u002Fcode>, \u003Ccode>y\u003C\u002Fcode>, \u003Ccode>width\u003C\u002Fcode>, \u003Ccode>height\u003C\u002Fcode>, and color specifications. These attributes define the appearance and placement of the shapes on the PDF.\u003C\u002Fp>\n\n\u003Cp>A \u003Ccode>Request\u003C\u002Fcode> object is created with the HTTP method 'POST' and the endpoint \u003Ccode>\u002Fpdf-with-added-shapes\u003C\u002Fcode>. The request headers include an \u003Ccode>Api-Key\u003C\u002Fcode> for authentication.\u003C\u002Fp>\n\n\u003Cp>The \u003Ccode>send\u003C\u002Fcode> method of the \u003Ccode>Client\u003C\u002Fcode> object sends the request with a multipart payload. This payload includes the PDF file, shape objects, and additional parameters like \u003Ccode>tag_enabled\u003C\u002Fcode> and \u003Ccode>output\u003C\u002Fcode>.\u003C\u002Fp>\n\n\u003Cp>The response from the API call is captured and printed using \u003Ccode>echo $response->getBody() . PHP_EOL;\u003C\u002Fcode>.\u003C\u002Fp>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>In this tutorial, you learned how to use PHP to call the pdfRest Add to PDF API and add shapes to a PDF document. This functionality can be leveraged to enhance PDFs with annotations, review panels, or other graphical elements.\u003C\u002Fp>\n\n\u003Cp>To explore more features of the pdfRest API, visit the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. For detailed documentation, refer to the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">API Reference Guide\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Cp>Note: This example demonstrates a multipart API call. For code samples using JSON payloads, visit \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FPHP\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Fpdf-with-added-shapes.php\">GitHub\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2026-08-19T19:23:05.000+00:00","Learn how to add vector shapes to PDF documents using Add to PDF API Tool from pdfRest with Python.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-with-php\u002F#article\",\n      \"headline\": \"How to Add Vector Lines and Rectangles to PDF Files with PHP\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-with-php\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-with-php\u002F\",\n      \"datePublished\": \"2026-08-19T19:23:05.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:05.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to add vector shapes to PDF documents using Add to PDF API Tool from pdfRest with Python.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Add to PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fpdf-with-added-shapes API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fadd-to-pdf\"\n        }\n      ],\n      \"keywords\": \"Add to PDF, PDF Generation, PHP\",\n      \"dependencies\": \"PHP, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Add Vector Lines and Rectangles to PDF Files with PHP\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-with-php\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3228,3229,3230,3231,3232],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1842,"name":1843,"slug":1844,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2227,"name":2228,"slug":2229,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1850,"name":1851,"slug":1852,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-with-php\u002F","How to Add Vector Lines and Rectangles to PDF Files with PHP, Tutorial | pdfRest",{"id":3237,"uuid":3238,"title":3239,"slug":3240,"html":3241,"comment_id":3237,"feature_image":48,"featured":284,"visibility":1257,"created_at":3242,"updated_at":3243,"published_at":3242,"custom_excerpt":3244,"codeinjection_head":3245,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3246,"primary_tag":3252,"url":3253,"excerpt":3244,"reading_time":320,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3254,"meta_description":3244,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"6a85fd06533c9f26b943ab51","595cf983-1a3b-4518-aa8c-467dd575db3d","How to Add Vector Lines and Rectangles to PDF Files with Python","how-to-add-vector-lines-and-rectangles-to-pdf-files-with-python","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Add Vector Lines and Rectangles to PDF Files with Python?\u003C\u002Fh2>\n\n\u003Cp>The \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F'>pdfRest Add to PDF API Tool\u003C\u002Fa> is a powerful feature that allows developers to programmatically add shapes, such as rectangles and lines, to existing PDF documents. This tutorial will guide you through the process of sending an API call to the Add to PDF endpoint using Python, enabling you to enhance your PDFs with custom graphical elements seamlessly.\u003C\u002Fp>\n\n\u003Cp>In a real-world scenario, a user might want to use the Add to PDF feature to annotate documents with review panels or highlight sections of a report for emphasis. For instance, a project manager could add shaded rectangles to a project proposal PDF to draw attention to key sections or use lines to divide different parts of a document, making it more visually organized and easier to navigate for stakeholders.\u003C\u002Fp>\n\n\u003Ch2>Add Vector Lines and Rectangles to PDF Files with Python Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-python\">import json\n\nimport requests\nfrom requests_toolbelt import MultipartEncoder\n\n# By default, we use the US-based API service. This is the primary endpoint for global use.\napi_url = \"https:\u002F\u002Fapi.pdfrest.com\"\n\n# For GDPR compliance and enhanced performance for European users, you can switch to the EU-based service by uncommenting the URL below.\n# For more information visit https:\u002F\u002Fpdfrest.com\u002Fpricing#how-do-eu-gdpr-api-calls-work\n# api_url = \"https:\u002F\u002Feu-api.pdfrest.com\"\n\n# Add a lightly shaded review panel and a divider line to page one.\n# Coordinates are measured from the lower-left corner in PDF units (72 units = 1 inch).\nshape_objects = [\n    {\n        \"type\": \"rectangle\",\n        \"page\": 1,\n        \"x\": 54,\n        \"y\": 540,\n        \"width\": 504,\n        \"height\": 108,\n        \"fill_color_rgb\": \"245,247,250\",\n        \"stroke_color_rgb\": \"26,72,112\",\n        \"stroke_width\": 1,\n        \"tag_is_artifact\": True,\n    },\n    {\n        \"type\": \"line\",\n        \"page\": 1,\n        \"x1\": 72,\n        \"y1\": 576,\n        \"x2\": 540,\n        \"y2\": 576,\n        \"stroke_color_rgb\": \"26,72,112\",\n        \"stroke_width\": 1.5,\n        \"tag_actual_text\": \"Review section divider\",\n        \"tag_structure_type\": \"Figure\",\n    },\n]\n\nwith open(\"\u002Fpath\u002Fto\u002Finput.pdf\", \"rb\") as input_file:\n    multipart = MultipartEncoder(\n        fields={\n            \"file\": (\"input.pdf\", input_file, \"application\u002Fpdf\"),\n            \"shape_objects\": json.dumps(shape_objects),\n            \"tag_enabled\": \"true\",\n            \"output\": \"review-panel\",\n        }\n    )\n    response = requests.post(\n        f\"{api_url}\u002Fpdf-with-added-shapes\",\n        data=multipart,\n        headers={\n            \"Accept\": \"application\u002Fjson\",\n            \"Api-Key\": \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",  # Replace with your API key.\n            \"Content-Type\": multipart.content_type,\n        },\n    )\n\nprint(f\"Response status code: {response.status_code}\")\nprint(json.dumps(response.json(), indent=2) if response.ok else response.text)\n\n# To download the returned file, use the outputId with the get-resource-id endpoint sample.\n\u003C\u002Fpre>\n\n\u003Cp>Source: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FPython\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fpdf-with-added-shapes.py\">GitHub\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>The code begins by importing necessary libraries: \u003Ccode>json\u003C\u002Fcode> for handling JSON data, \u003Ccode>requests\u003C\u002Fcode> for making HTTP requests, and \u003Ccode>MultipartEncoder\u003C\u002Fcode> from \u003Ccode>requests_toolbelt\u003C\u002Fcode> for encoding multipart form data.\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">api_url = \"https:\u002F\u002Fapi.pdfrest.com\"\n\u003C\u002Fpre>\n\n\u003Cp>This line sets the API URL to the US-based service. If you need GDPR compliance, you can switch to the EU-based service by using the commented URL.\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">shape_objects = [\n    {\n        \"type\": \"rectangle\",\n        \"page\": 1,\n        \"x\": 54,\n        \"y\": 540,\n        \"width\": 504,\n        \"height\": 108,\n        \"fill_color_rgb\": \"245,247,250\",\n        \"stroke_color_rgb\": \"26,72,112\",\n        \"stroke_width\": 1,\n        \"tag_is_artifact\": True,\n    },\n    {\n        \"type\": \"line\",\n        \"page\": 1,\n        \"x1\": 72,\n        \"y1\": 576,\n        \"x2\": 540,\n        \"y2\": 576,\n        \"stroke_color_rgb\": \"26,72,112\",\n        \"stroke_width\": 1.5,\n        \"tag_actual_text\": \"Review section divider\",\n        \"tag_structure_type\": \"Figure\",\n    },\n]\n\u003C\u002Fpre>\n\n\u003Cp>The \u003Ccode>shape_objects\u003C\u002Fcode> list contains dictionaries defining the shapes to be added to the PDF. Each dictionary specifies the shape type, position, dimensions, color, and additional tagging information.\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">with open(\"\u002Fpath\u002Fto\u002Finput.pdf\", \"rb\") as input_file:\n    multipart = MultipartEncoder(\n        fields={\n            \"file\": (\"input.pdf\", input_file, \"application\u002Fpdf\"),\n            \"shape_objects\": json.dumps(shape_objects),\n            \"tag_enabled\": \"true\",\n            \"output\": \"review-panel\",\n        }\n    )\n\u003C\u002Fpre>\n\n\u003Cp>This snippet opens the input PDF file and creates a \u003Ccode>MultipartEncoder\u003C\u002Fcode> object with the file and shape data. The \u003Ccode>tag_enabled\u003C\u002Fcode> field is set to \"true\" to enable tagging, and the \u003Ccode>output\u003C\u002Fcode> field specifies the output file name.\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">response = requests.post(\n    f\"{api_url}\u002Fpdf-with-added-shapes\",\n    data=multipart,\n    headers={\n        \"Accept\": \"application\u002Fjson\",\n        \"Api-Key\": \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",  # Replace with your API key.\n        \"Content-Type\": multipart.content_type,\n    },\n)\n\u003C\u002Fpre>\n\n\u003Cp>The API call is made using \u003Ccode>requests.post()\u003C\u002Fcode>, sending the multipart data to the endpoint. Headers include the API key and content type.\u003C\u002Fp>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>In this tutorial, you learned how to use Python to send an API call to the pdfRest Add to PDF endpoint, allowing you to add shapes to a PDF document. This powerful feature can be used to enhance documents with custom graphics and annotations.\u003C\u002Fp>\n\n\u003Cp>To explore more functionalities, try out all the pdfRest API Tools in the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. For more detailed information, refer to the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">API Reference Guide\u003C\u002Fa>. Note that this is an example of a multipart API call, and code samples using JSON payloads can be found \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FPython\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Fpdf-with-added-shapes.py\">here\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2026-08-19T18:59:18.000+00:00","2026-09-02T18:26:49.000+00:00","Learn how to use Add to PDF API Tool from pdfRest with Python to add vector shapes to PDF documents.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-with-python\u002F#article\",\n      \"headline\": \"How to Add Vector Lines and Rectangles to PDF Files with Python\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-with-python\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-with-python\u002F\",\n      \"datePublished\": \"2026-08-19T18:59:18.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:05.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to use Add to PDF API Tool from pdfRest with Python to add vector shapes to PDF documents.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Add to PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fadd-to-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fpdf-with-added-shapes API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fadd-to-pdf\"\n        }\n      ],\n      \"keywords\": \"Add to PDF, PDF Generation, Python\",\n      \"dependencies\": \"Python, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Add Vector Lines and Rectangles to PDF Files with Python\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-with-python\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3247,3248,3249,3250,3251],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1842,"name":1843,"slug":1844,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2219,"name":2220,"slug":2221,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1850,"name":1851,"slug":1852,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-add-vector-lines-and-rectangles-to-pdf-files-with-python\u002F","How to Add Vector Lines and Rectangles to PDF Files with Python, Tutorial | pdfRest",{"id":3256,"uuid":3257,"title":3258,"slug":3259,"html":3260,"comment_id":3256,"feature_image":48,"featured":284,"visibility":1257,"created_at":3261,"updated_at":3243,"published_at":3261,"custom_excerpt":3262,"codeinjection_head":3263,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3264,"primary_tag":3269,"url":3270,"excerpt":3262,"reading_time":295,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3271,"meta_description":3262,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"69ebb699533c9f26b943a9d7","32df503a-d77d-4fd7-8443-c7b797392dd4","How to Apply TDM Reservations to PDF in .NET with C#","how-to-apply-tdm-reservations-to-pdf-in-net-with-c","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Use TDM Reserve PDF with C#?\u003C\u002Fh2>\n\n\u003Cp>The \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Ftdm-reserve-pdf\u002F\">pdfRest TDM Reserve PDF API Tool\u003C\u002Fa> provides .NET developers with a robust method to shield digital documents from automated scraping bots. This tutorial demonstrates how to construct and send an API call to the TDM Reserve endpoint using C#. By utilizing this endpoint, you can automatically inject compliant TDMRep metadata into your PDFs, effectively telling AI training models and web crawlers to bypass your proprietary content.\u003C\u002Fp>\n\n\u003Cp>For example, a financial services enterprise might use a C# application to generate and distribute proprietary market analysis reports to their premium clients. To ensure these highly valuable insights aren't scraped and summarized by third-party AI tools, the development team can implement the TDM Reserve API as a final step in their document generation pipeline. This guarantees every outgoing report is embedded with a machine-readable \"Do Not Mine\" directive, securing the firm's competitive advantage and intellectual property.\u003C\u002Fp>\n\n\u003Ch2>TDM Reserve PDF with C# Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-csharp\">\u002F*\n * What this sample does:\n * - Applies TDM rights metadata to a PDF via multipart\u002Fform-data.\n * - Routed from Program.cs as: `dotnet run -- tdm-reserved-pdf-multipart \u003Cinputfile>`.\n *\n * Setup (environment):\n * - Copy .env.example to .env\n * - Set PDFREST_API_KEY=your_api_key_here\n * - Optional: set PDFREST_URL to override the API region. For EU\u002FGDPR compliance and proximity, use:\n *     PDFREST_URL=https:\u002F\u002Feu-api.pdfrest.com\n *   For more information visit https:\u002F\u002Fpdfrest.com\u002Fpricing#how-do-eu-gdpr-api-calls-work\n *\n * Usage:\n *   dotnet run -- tdm-reserved-pdf-multipart \u002Fpath\u002Fto\u002Finput.pdf\n *\n * Output:\n * - Prints the JSON response. Validation errors (args\u002Fenv) exit non-zero.\n *\u002F\n\nusing System.Text;\n\nnamespace Samples.EndpointExamples.MultipartPayload\n{\n    public static class TdmReservedPdf\n    {\n        public static async Task Execute(string[] args)\n        {\n            if (args == null || args.Length \u003C 1)\n            {\n                Console.Error.WriteLine(\"tdm-reserved-pdf-multipart requires \u003Cinputfile>\");\n                Environment.Exit(1);\n                return;\n            }\n            var inputPath = args[0];\n            if (!File.Exists(inputPath))\n            {\n                Console.Error.WriteLine($\"File not found: {inputPath}\");\n                Environment.Exit(1);\n                return;\n            }\n            var apiKey = Environment.GetEnvironmentVariable(\"PDFREST_API_KEY\");\n            if (string.IsNullOrWhiteSpace(apiKey))\n            {\n                Console.Error.WriteLine(\"Missing required environment variable: PDFREST_API_KEY\");\n                Environment.Exit(1);\n                return;\n            }\n            var baseUrl = Environment.GetEnvironmentVariable(\"PDFREST_URL\") ?? \"https:\u002F\u002Fapi.pdfrest.com\";\n\n            using (var httpClient = new HttpClient { BaseAddress = new Uri(baseUrl) })\n            using (var tdmReservedPdfRequest = new HttpRequestMessage(HttpMethod.Post, \"tdm-reserved-pdf\"))\n            {\n                tdmReservedPdfRequest.Headers.TryAddWithoutValidation(\"Api-Key\", apiKey);\n                tdmReservedPdfRequest.Headers.Accept.Add(new(\"application\u002Fjson\"));\n                var multipartContent = new MultipartFormDataContent();\n\n                var byteArray = File.ReadAllBytes(inputPath);\n                var byteAryContent = new ByteArrayContent(byteArray);\n                multipartContent.Add(byteAryContent, \"file\", Path.GetFileName(inputPath));\n                byteAryContent.Headers.TryAddWithoutValidation(\"Content-Type\", \"application\u002Foctet-stream\");\n\n                var policyValue = new ByteArrayContent(Encoding.UTF8.GetBytes(\"https:\u002F\u002Fexample.com\u002Ftdm-policy\"));\n                multipartContent.Add(policyValue, \"policy\");\n\n                tdmReservedPdfRequest.Content = multipartContent;\n                var response = await httpClient.SendAsync(tdmReservedPdfRequest);\n                var apiResult = await response.Content.ReadAsStringAsync();\n\n                Console.WriteLine(\"TDM metadata response received.\");\n                Console.WriteLine(apiResult);\n            }\n        }\n    }\n}\n\u003C\u002Finputfile>\u003C\u002Finputfile>\u003C\u002Fpre>\n\n\u003Cp>Source: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FDotNET\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Ftdm-reserved-pdf.cs\">GitHub\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>The code begins by checking if the input arguments are valid:\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">if (args == null || args.Length \u003C 1)\n{\n    Console.Error.WriteLine(\"tdm-reserved-pdf-multipart requires \u003Cinputfile>\");\n    Environment.Exit(1);\n    return;\n}\n\u003C\u002Finputfile>\u003C\u002Fpre>\n\n\u003Cp>This ensures that a file path is provided as an argument. If not, it exits with an error message.\u003C\u002Fp>\n\n\u003Cp>Next, it verifies the existence of the specified file:\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">var inputPath = args[0];\nif (!File.Exists(inputPath))\n{\n    Console.Error.WriteLine($\"File not found: {inputPath}\");\n    Environment.Exit(1);\n    return;\n}\n\u003C\u002Fpre>\n\n\u003Cp>This step is crucial to avoid processing a non-existent file.\u003C\u002Fp>\n\n\u003Cp>The code then retrieves the API key from environment variables:\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">var apiKey = Environment.GetEnvironmentVariable(\"PDFREST_API_KEY\");\nif (string.IsNullOrWhiteSpace(apiKey))\n{\n    Console.Error.WriteLine(\"Missing required environment variable: PDFREST_API_KEY\");\n    Environment.Exit(1);\n    return;\n}\n\u003C\u002Fpre>\n\n\u003Cp>Without a valid API key, the request cannot be authenticated.\u003C\u002Fp>\n\n\u003Cp>The base URL for the API is set, with an option to override it:\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">var baseUrl = Environment.GetEnvironmentVariable(\"PDFREST_URL\") ?? \"https:\u002F\u002Fapi.pdfrest.com\";\n\u003C\u002Fpre>\n\n\u003Cp>This allows for regional API endpoint customization.\u003C\u002Fp>\n\n\u003Cp>The code constructs an HTTP POST request with multipart form data:\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">using (var httpClient = new HttpClient { BaseAddress = new Uri(baseUrl) })\nusing (var tdmReservedPdfRequest = new HttpRequestMessage(HttpMethod.Post, \"tdm-reserved-pdf\"))\n{\n    tdmReservedPdfRequest.Headers.TryAddWithoutValidation(\"Api-Key\", apiKey);\n    tdmReservedPdfRequest.Headers.Accept.Add(new(\"application\u002Fjson\"));\n    var multipartContent = new MultipartFormDataContent();\n\n    var byteArray = File.ReadAllBytes(inputPath);\n    var byteAryContent = new ByteArrayContent(byteArray);\n    multipartContent.Add(byteAryContent, \"file\", Path.GetFileName(inputPath));\n    byteAryContent.Headers.TryAddWithoutValidation(\"Content-Type\", \"application\u002Foctet-stream\");\n\n    var policyValue = new ByteArrayContent(Encoding.UTF8.GetBytes(\"https:\u002F\u002Fexample.com\u002Ftdm-policy\"));\n    multipartContent.Add(policyValue, \"policy\");\n\n    tdmReservedPdfRequest.Content = multipartContent;\n    var response = await httpClient.SendAsync(tdmReservedPdfRequest);\n    var apiResult = await response.Content.ReadAsStringAsync();\n\n    Console.WriteLine(\"TDM metadata response received.\");\n    Console.WriteLine(apiResult);\n}\n\u003C\u002Fpre>\n\n\u003Cp>This snippet sends the PDF file along with a policy URL to the API, receiving a JSON response with the result.\u003C\u002Fp>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>In this tutorial, you learned how to make a multipart API call to the pdfRest TDM Reserve PDF endpoint using C#. This process involves setting up environment variables, preparing the file and policy data, and handling the API response. To explore more, you can demo all of the pdfRest API Tools in the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. For further details, refer to the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">API Reference Guide\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Cp>Note: This is an example of a multipart API call. Code samples using JSON payloads can be found at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FDotNET\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Ftdm-reserved-pdf.cs\">GitHub\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2026-04-24T18:29:45.000+00:00","Learn how to use C# with pdfRest TDM Reserve PDF API to protect documents from AI data mining.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-apply-tdm-reservations-to-pdf-in-net-with-c\u002F#article\",\n      \"headline\": \"How to Apply TDM Reservations to PDF in .NET with C#\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-apply-tdm-reservations-to-pdf-in-net-with-c\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-apply-tdm-reservations-to-pdf-in-net-with-c\u002F\",\n      \"datePublished\": \"2026-04-24T18:29:45.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:06.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to use C# with pdfRest TDM Reserve PDF API to protect documents from AI data mining.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"TDM Reserve PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Ftdm-reserve-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Ftdm-reserved-pdf API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Ftdm-reserve-pdf\"\n        }\n      ],\n      \"keywords\": \".NET, TDM Reserve PDF\",\n      \"dependencies\": \".NET, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Apply TDM Reservations to PDF in .NET with C#\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-apply-tdm-reservations-to-pdf-in-net-with-c\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3265,3266,3267,3268],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":2029,"name":2030,"slug":2031,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2231,"name":2232,"slug":2233,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-apply-tdm-reservations-to-pdf-in-net-with-c\u002F","How to Apply TDM Reservations to PDF in .NET with C#, Tutorial | pdfRest",{"id":3273,"uuid":3274,"title":3275,"slug":3276,"html":3277,"comment_id":3273,"feature_image":48,"featured":284,"visibility":1257,"created_at":3278,"updated_at":3279,"published_at":3278,"custom_excerpt":3280,"codeinjection_head":3281,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3282,"primary_tag":3287,"url":3288,"excerpt":3280,"reading_time":295,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3289,"meta_description":3280,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"69ebb723533c9f26b943a9eb","7db1f93e-c3bf-456d-a6fe-ef02899673ff","How to Apply TDM Reservations to PDF with cURL","how-to-apply-tdm-reservations-to-pdf-with-curl","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Use TDM Reserve PDF with cURL?\u003C\u002Fh2>\n\n\u003Cp>The \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Ftdm-reserve-pdf\u002F\">pdfRest TDM Reserve PDF API tool\u003C\u002Fa> equips users with the ability to secure their PDF documents against unauthorized data extraction and AI scraping. This tutorial offers a step-by-step guide on how to send a request to the TDM Reserve PDF endpoint using cURL, a highly versatile command-line utility for transferring data. By executing this API call, you can rapidly inject standardized W3C TDMRep metadata into your files, formally asserting your right to opt out of automated text and data mining.\u003C\u002Fp>\n\n\u003Cp>For instance, a system administrator managing a large public archive of legal records or historical documents may need to ensure these files aren't harvested by AI companies to train language models. By incorporating the TDM Reserve PDF API into a simple bash script via cURL, they can easily batch process thousands of documents. This embeds a strict \"No-AI\" policy URL directly into the metadata of the entire repository, legally safeguarding the content before it is synced to a public-facing web server.\u003C\u002Fp>\n\n\u003Ch2>TDM Reserve PDF with cURL Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-bash\"># By default, we use the US-based API service. This is the primary endpoint for global use.\nAPI_URL=\"https:\u002F\u002Fapi.pdfrest.com\"\n\n# For GDPR compliance and enhanced performance for European users, you can switch to the EU-based service by uncommenting the URL below.\n# For more information visit https:\u002F\u002Fpdfrest.com\u002Fpricing#how-do-eu-gdpr-api-calls-work\n# API_URL=\"https:\u002F\u002Feu-api.pdfrest.com\"\n\n# This request applies metadata declaring Text and Data Mining (TDM) rights.\ncurl -X POST \"$API_URL\u002Ftdm-reserved-pdf\" \\\n  -H \"Accept: application\u002Fjson\" \\\n  -H \"Content-Type: multipart\u002Fform-data\" \\\n  -H \"Api-Key: xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\" \\\n  -F \"file=@\u002Fpath\u002Fto\u002Ffile\" \\\n  -F \"output=example_tdm_reserved_pdf_out\" \\\n  -F \"policy=https:\u002F\u002Fexample.com\u002Ftdm-policy\" \\\n\u003C\u002Fpre>\n\n\u003Cp>Source: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FcURL\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Ftdm-reserved-pdf.sh\">GitHub\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>The code begins by setting the \u003Ccode>API_URL\u003C\u002Fcode> variable to the US-based API service endpoint:\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">API_URL=\"https:\u002F\u002Fapi.pdfrest.com\"\n\u003C\u002Fpre>\n\n\u003Cp>This is the default endpoint for global use. If you are located in Europe and require GDPR compliance, you can switch to the EU-based service by uncommenting the alternative URL:\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\"># API_URL=\"https:\u002F\u002Feu-api.pdfrest.com\"\n\u003C\u002Fpre>\n\n\u003Cp>The cURL command is used to make a POST request to the \u003Ccode>\u002Ftdm-reserved-pdf\u003C\u002Fcode> endpoint:\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">curl -X POST \"$API_URL\u002Ftdm-reserved-pdf\"\n\u003C\u002Fpre>\n\n\u003Cp>The headers specify that the request accepts JSON responses and uses multipart\u002Fform-data for the content type:\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">-H \"Accept: application\u002Fjson\"\n-H \"Content-Type: multipart\u002Fform-data\"\n\u003C\u002Fpre>\n\n\u003Cp>The \u003Ccode>Api-Key\u003C\u002Fcode> header is crucial for authentication. Replace \u003Ccode>xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\u003C\u002Fcode> with your actual API key:\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">-H \"Api-Key: xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"\n\u003C\u002Fpre>\n\n\u003Cp>The \u003Ccode>-F\u003C\u002Fcode> options specify the form data to be sent in the request. The \u003Ccode>file\u003C\u002Fcode> parameter uploads the PDF file from your local system:\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">-F \"file=@\u002Fpath\u002Fto\u002Ffile\"\n\u003C\u002Fpre>\n\n\u003Cp>The \u003Ccode>output\u003C\u002Fcode> parameter defines the name of the output file:\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">-F \"output=example_tdm_reserved_pdf_out\"\n\u003C\u002Fpre>\n\n\u003Cp>The \u003Ccode>policy\u003C\u002Fcode> parameter specifies the URL of the TDM policy:\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">-F \"policy=https:\u002F\u002Fexample.com\u002Ftdm-policy\"\n\u003C\u002Fpre>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>In this tutorial, you learned how to make an API call to the TDM Reserve PDF endpoint using cURL. This example demonstrated how to apply TDM rights metadata to a PDF document. To explore more functionalities, try out all the pdfRest API Tools in the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. For further reading, refer to the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">API Reference Guide\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Cp>Note: This is an example of a multipart API call. Code samples using JSON payloads can be found \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FcURL\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Ftdm-reserved-pdf.sh\">here\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2026-04-24T18:32:03.000+00:00","2026-09-02T18:26:51.000+00:00","Learn how to use pdfRest TDM Reserve PDF API with cURL to protect documents from AI data scraping.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-apply-tdm-reservations-to-pdf-with-curl\u002F#article\",\n      \"headline\": \"How to Apply TDM Reservations to PDF with cURL\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-apply-tdm-reservations-to-pdf-with-curl\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-apply-tdm-reservations-to-pdf-with-curl\u002F\",\n      \"datePublished\": \"2026-04-24T18:32:03.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:06.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to use pdfRest TDM Reserve PDF API with cURL to protect documents from AI data scraping.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"TDM Reserve PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Ftdm-reserve-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Ftdm-reserved-pdf API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Ftdm-reserve-pdf\"\n        }\n      ],\n      \"keywords\": \"TDM Reserve PDF, cURL\",\n      \"dependencies\": \"cURL, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Apply TDM Reservations to PDF with cURL\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-apply-tdm-reservations-to-pdf-with-curl\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3283,3284,3285,3286],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":2029,"name":2030,"slug":2031,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2239,"name":2240,"slug":2241,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-apply-tdm-reservations-to-pdf-with-curl\u002F","How to Apply TDM Reservations to PDF with cURL, Tutorial | pdfRest",{"id":3291,"uuid":3292,"title":3293,"slug":3294,"html":3295,"comment_id":3291,"feature_image":48,"featured":284,"visibility":1257,"created_at":3296,"updated_at":3279,"published_at":3296,"custom_excerpt":3297,"codeinjection_head":3298,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3299,"primary_tag":3304,"url":3305,"excerpt":3297,"reading_time":320,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3306,"meta_description":3297,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"69ebb970533c9f26b943a9f5","752c2e87-c70f-4a4a-8751-8cf3f9285791","How to Apply TDM Reservations to PDF with Java","how-to-apply-tdm-reservations-to-pdf-with-java","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Use TDM Reserve PDF with Java?\u003C\u002Fh2>\n\n\u003Cp>The \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Ftdm-reserve-pdf\u002F\">pdfRest TDM Reserve PDF API Tool\u003C\u002Fa> provides a vital mechanism for developers to protect intellectual property from unauthorized artificial intelligence ingestion. This tutorial demonstrates how to send an API call to the TDM Reserve PDF endpoint using Java. By implementing this request within your Java applications, you can automatically embed machine-readable metadata into your documents to explicitly opt out of automated text and data mining (TDM), ensuring your rights are legally asserted.\u003C\u002Fp>\n\n\u003Cp>Consider a digital publishing platform that hosts premium academic journals or proprietary market research. To prevent commercial web crawlers from scraping these valuable PDF documents to train Large Language Models (LLMs) for free, the platform can automate the TDM Reserve PDF API. This applies a universal \"No-AI\" policy to all outgoing files, guaranteeing that the content remains protected and compliant with international copyright directives without requiring manual intervention.\u003C\u002Fp>\n\n\u003Ch2>TDM Reserve PDF with Java Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-java\">import io.github.cdimascio.dotenv.Dotenv;\nimport java.io.File;\nimport java.io.IOException;\nimport java.util.concurrent.TimeUnit;\nimport okhttp3.*;\nimport org.json.JSONObject;\n\npublic class TDMReservedPDF {\n\n  \u002F\u002F By default, we use the US-based API service. This is the primary endpoint for global use.\n  private static final String API_URL = \"https:\u002F\u002Fapi.pdfrest.com\";\n\n  \u002F\u002F For GDPR compliance and enhanced performance for European users, you can switch to the EU-based\n  \u002F\u002F service by commenting out the URL above and uncommenting the URL below.\n  \u002F\u002F For more information visit https:\u002F\u002Fpdfrest.com\u002Fpricing#how-do-eu-gdpr-api-calls-work\n  \u002F\u002F private static final String API_URL = \"https:\u002F\u002Feu-api.pdfrest.com\";\n\n  \u002F\u002F Specify the path to your file here, or as the first argument when running the program.\n  private static final String DEFAULT_FILE_PATH = \"\u002Fpath\u002Fto\u002Ffile.pdf\";\n\n  \u002F\u002F Specify your API key here, or in the environment variable PDFREST_API_KEY.\n  \u002F\u002F You can also put the environment variable in a .env file.\n  private static final String DEFAULT_API_KEY = \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\";\n\n  public static void main(String[] args) {\n    File inputFile;\n    if (args.length > 0) {\n      inputFile = new File(args[0]);\n    } else {\n      inputFile = new File(DEFAULT_FILE_PATH);\n    }\n\n    final Dotenv dotenv = Dotenv.configure().ignoreIfMalformed().ignoreIfMissing().load();\n\n    final RequestBody inputFileRequestBody =\n        RequestBody.create(inputFile, MediaType.parse(\"application\u002Fpdf\"));\n    RequestBody requestBody =\n        new MultipartBody.Builder()\n            .setType(MultipartBody.FORM)\n            .addFormDataPart(\"file\", inputFile.getName(), inputFileRequestBody)\n            .addFormDataPart(\"policy\", \"https:\u002F\u002Fexample.com\u002Ftdm-policy\")\n            .addFormDataPart(\"output\", \"pdfrest_tdm_reserved_pdf\")\n            .build();\n    Request request =\n        new Request.Builder()\n            .header(\"Api-Key\", dotenv.get(\"PDFREST_API_KEY\", DEFAULT_API_KEY))\n            .url(API_URL + \"\u002Ftdm-reserved-pdf\")\n            .post(requestBody)\n            .build();\n    try {\n      OkHttpClient client =\n          new OkHttpClient().newBuilder().readTimeout(60, TimeUnit.SECONDS).build();\n\n      Response response = client.newCall(request).execute();\n      System.out.println(\"TDM metadata result code \" + response.code());\n      if (response.body() != null) {\n        System.out.println(prettyJson(response.body().string()));\n      }\n    } catch (IOException e) {\n      throw new RuntimeException(e);\n    }\n  }\n\n  private static String prettyJson(String json) {\n    \u002F\u002F https:\u002F\u002Fstackoverflow.com\u002Fa\u002F9583835\u002F11996393\n    return new JSONObject(json).toString(4);\n  }\n}\n\u003C\u002Fpre>\n\n\u003Cp>Source: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FJava\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002FTDMReservedPDF.java\">GitHub\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>The code begins by importing necessary libraries such as Dotenv for environment variable management, OkHttp for HTTP requests, and JSONObject for JSON manipulation.\u003C\u002Fp>\n\n\u003Cpre class=\"language-java\">private static final String API_URL = \"https:\u002F\u002Fapi.pdfrest.com\";\n\u003C\u002Fpre>\n\n\u003Cp>This line sets the API endpoint URL. You have the option to switch to an EU-based endpoint for GDPR compliance by uncommenting the alternative URL.\u003C\u002Fp>\n\n\u003Cpre class=\"language-java\">private static final String DEFAULT_FILE_PATH = \"\u002Fpath\u002Fto\u002Ffile.pdf\";\n\u003C\u002Fpre>\n\n\u003Cp>This specifies the default path to the PDF file that you will be sending in the API call. You can modify this path or pass it as an argument when running the program.\u003C\u002Fp>\n\n\u003Cpre class=\"language-java\">private static final String DEFAULT_API_KEY = \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\";\n\u003C\u002Fpre>\n\n\u003Cp>Your API key is specified here. It can also be stored in an environment variable named PDFREST_API_KEY.\u003C\u002Fp>\n\n\u003Cpre class=\"language-java\">RequestBody requestBody = new MultipartBody.Builder()\n    .setType(MultipartBody.FORM)\n    .addFormDataPart(\"file\", inputFile.getName(), inputFileRequestBody)\n    .addFormDataPart(\"policy\", \"https:\u002F\u002Fexample.com\u002Ftdm-policy\")\n    .addFormDataPart(\"output\", \"pdfrest_tdm_reserved_pdf\")\n    .build();\n\u003C\u002Fpre>\n\n\u003Cp>This snippet creates a multipart form request body, which includes the PDF file, a policy URL, and an output specification. The 'file' part attaches the PDF file, 'policy' specifies the TDM policy URL, and 'output' defines the desired output format.\u003C\u002Fp>\n\n\u003Cpre class=\"language-java\">Request request = new Request.Builder()\n    .header(\"Api-Key\", dotenv.get(\"PDFREST_API_KEY\", DEFAULT_API_KEY))\n    .url(API_URL + \"\u002Ftdm-reserved-pdf\")\n    .post(requestBody)\n    .build();\n\u003C\u002Fpre>\n\n\u003Cp>This block constructs the HTTP request, setting the API key in the header and specifying the endpoint URL. The request body is attached using the POST method.\u003C\u002Fp>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>In this tutorial, you learned how to send an API call to the TDM Reserve PDF endpoint using Java. This process allows you to reserve PDFs for TDM purposes, ensuring compliance with policies and legal requirements. To further explore the capabilities of the pdfRest API Tools, try out the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. For more detailed information, refer to the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">API Reference Guide\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Cp>Note: This is an example of a multipart API call. Code samples using JSON payloads can be found \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FJava\u002FEndpoint%20Examples\u002FJSON%20Payload\u002FTDMReservedPDF.java\">here\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2026-04-24T18:41:52.000+00:00","Learn how to work with pdfRest TDM Reserve PDF API and Java to protect files from AI data scraping.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-apply-tdm-reservations-to-pdf-with-java\u002F#article\",\n      \"headline\": \"How to Apply TDM Reservations to PDF with Java\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-apply-tdm-reservations-to-pdf-with-java\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-apply-tdm-reservations-to-pdf-with-java\u002F\",\n      \"datePublished\": \"2026-04-24T18:41:52.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:06.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to work with pdfRest TDM Reserve PDF API and Java to protect files from AI data scraping.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"TDM Reserve PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Ftdm-reserve-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Ftdm-reserved-pdf API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Ftdm-reserve-pdf\"\n        }\n      ],\n      \"keywords\": \"Java, TDM Reserve PDF\",\n      \"dependencies\": \"Java, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Apply TDM Reservations to PDF with Java\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-apply-tdm-reservations-to-pdf-with-java\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3300,3301,3302,3303],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":2029,"name":2030,"slug":2031,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2235,"name":2236,"slug":2237,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-apply-tdm-reservations-to-pdf-with-java\u002F","How to Apply TDM Reservations to PDF with Java, Tutorial | pdfRest",{"id":3308,"uuid":3309,"title":3310,"slug":3311,"html":3312,"comment_id":3308,"feature_image":48,"featured":284,"visibility":1257,"created_at":3313,"updated_at":3314,"published_at":3313,"custom_excerpt":3315,"codeinjection_head":3316,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3317,"primary_tag":3322,"url":3323,"excerpt":3315,"reading_time":320,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3324,"meta_description":3315,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"69ebb6c0533c9f26b943a9e1","da0930be-647f-488b-b8a5-121812409bc4","How to Apply TDM Reservations to PDF with JavaScript in NodeJS","how-to-apply-tdm-reservations-to-pdf-with-javascript-in-nodejs","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Use TDM Reserve PDF with JavaScript?\u003C\u002Fh2>\n\n\u003Cp>The \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Ftdm-reserve-pdf\u002F\">pdfRest TDM Reserve PDF API Tool\u003C\u002Fa> offers developers a seamless way to embed protective metadata into PDF files, actively restricting automated text and data mining (TDM). This tutorial walks you through sending an API call to the TDM Reserve endpoint using JavaScript. By integrating this functionality into your frontend applications or Node.js backends, you can programmatically establish machine-readable boundaries that prevent AI crawlers from ingesting your digital assets without explicit permission.\u003C\u002Fp>\n\n\u003Cp>Imagine a SaaS platform built with JavaScript that empowers independent authors to self-publish e-books and digital portfolios. To give creators peace of mind that their original work won't be harvested to train public Large Language Models, the platform’s developers can trigger the TDM Reserve PDF API during the file upload process. This automatically stamps every new document with a legally recognized W3C TDMRep policy, securing the creators' intellectual property right at the point of distribution.\u003C\u002Fp>\n\n\u003Ch2>TDM Reserve PDF with JavaScript Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-javascript\">\u002F\u002F This request demonstrates how to apply TDM rights metadata to a PDF.\nvar axios = require('axios');\nvar FormData = require('form-data');\nvar fs = require('fs');\n\n\u002F\u002F By default, we use the US-based API service. This is the primary endpoint for global use.\nvar apiUrl = \"https:\u002F\u002Fapi.pdfrest.com\";\n\n\u002F* For GDPR compliance and enhanced performance for European users, you can switch to the EU-based service by uncommenting the URL below.\n * For more information visit https:\u002F\u002Fpdfrest.com\u002Fpricing#how-do-eu-gdpr-api-calls-work\n *\u002F\n\u002F\u002Fvar apiUrl = \"https:\u002F\u002Feu-api.pdfrest.com\";\n\n\u002F\u002F Create a new form data object and append the PDF file and TDM policy to it.\nvar tdmReservedPdfData = new FormData();\ntdmReservedPdfData.append('file', fs.createReadStream('\u002Fpath\u002Fto\u002Ffile'));\ntdmReservedPdfData.append('policy', 'https:\u002F\u002Fexample.com\u002Ftdm-policy');\ntdmReservedPdfData.append('output', 'pdfrest_tdm_reserved_pdf');\n\n\u002F\u002F define configuration options for axios request\nvar tdmReservedPdfConfig = {\n  method: 'post',\n  maxBodyLength: Infinity, \u002F\u002F set maximum length of the request body\n  url: apiUrl + '\u002Ftdm-reserved-pdf',\n  headers: {\n    'Api-Key': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', \u002F\u002F Replace with your API key\n    ...tdmReservedPdfData.getHeaders() \u002F\u002F set headers for the request\n  },\n  data : tdmReservedPdfData \u002F\u002F set the data to be sent with the request\n};\n\n\u002F\u002F send request and handle response or error\naxios(tdmReservedPdfConfig)\n.then(function (response) {\n  console.log(JSON.stringify(response.data));\n})\n.catch(function (error) {\n  console.log(error);\n});\n\n\u002F\u002F If you would like to download the file instead of getting the JSON response, please see the 'get-resource-id-endpoint.js' sample.\n\u003C\u002Fpre>\n\n\u003Cp>Source: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FJavaScript\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Ftdm-reserved-pdf.js\">GitHub Repository\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>The code begins by importing necessary modules: \u003Ccode>axios\u003C\u002Fcode> for making HTTP requests, \u003Ccode>form-data\u003C\u002Fcode> for handling form submissions, and \u003Ccode>fs\u003C\u002Fcode> for file system operations.\u003C\u002Fp>\n\n\u003Cpre class=\"language-javascript\">var axios = require('axios');\nvar FormData = require('form-data');\nvar fs = require('fs');\n\u003C\u002Fpre>\n\n\u003Cp>The \u003Ccode>apiUrl\u003C\u002Fcode> variable is set to the US-based API endpoint by default. For users in Europe, there's an option to switch to the EU-based service for GDPR compliance.\u003C\u002Fp>\n\n\u003Cpre class=\"language-javascript\">var apiUrl = \"https:\u002F\u002Fapi.pdfrest.com\";\n\u003C\u002Fpre>\n\n\u003Cp>A \u003Ccode>FormData\u003C\u002Fcode> object is created to hold the PDF file and the TDM policy URL. The \u003Ccode>append\u003C\u002Fcode> method is used to add these fields to the form data.\u003C\u002Fp>\n\n\u003Cpre class=\"language-javascript\">var tdmReservedPdfData = new FormData();\ntdmReservedPdfData.append('file', fs.createReadStream('\u002Fpath\u002Fto\u002Ffile'));\ntdmReservedPdfData.append('policy', 'https:\u002F\u002Fexample.com\u002Ftdm-policy');\ntdmReservedPdfData.append('output', 'pdfrest_tdm_reserved_pdf');\n\u003C\u002Fpre>\n\n\u003Cp>The configuration for the \u003Ccode>axios\u003C\u002Fcode> request is defined, specifying the HTTP method, URL, headers (including the API key), and the form data.\u003C\u002Fp>\n\n\u003Cpre class=\"language-javascript\">var tdmReservedPdfConfig = {\n  method: 'post',\n  maxBodyLength: Infinity,\n  url: apiUrl + '\u002Ftdm-reserved-pdf',\n  headers: {\n    'Api-Key': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',\n    ...tdmReservedPdfData.getHeaders()\n  },\n  data : tdmReservedPdfData\n};\n\u003C\u002Fpre>\n\n\u003Cp>The request is sent using \u003Ccode>axios\u003C\u002Fcode>, and the response or any errors are logged to the console.\u003C\u002Fp>\n\n\u003Cpre class=\"language-javascript\">axios(tdmReservedPdfConfig)\n.then(function (response) {\n  console.log(JSON.stringify(response.data));\n})\n.catch(function (error) {\n  console.log(error);\n});\n\u003C\u002Fpre>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>In this tutorial, you learned how to make a multipart API call to the pdfRest TDM Reserve PDF endpoint using JavaScript. This allows you to apply TDM rights metadata to a PDF document programmatically. To explore more functionalities, you can demo all of the pdfRest API Tools in the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. For further details, refer to the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">API Reference Guide\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Cp>Note: This is an example of a multipart API call. Code samples using JSON payloads can be found at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FJavaScript\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Ftdm-reserved-pdf.js\">GitHub Repository\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2026-04-24T18:30:24.000+00:00","2026-09-02T18:26:52.000+00:00","Learn how to protect documents from AI data mining using JavaScript with pdfRest TDM Reserve PDF API.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-apply-tdm-reservations-to-pdf-with-javascript-in-nodejs\u002F#article\",\n      \"headline\": \"How to Apply TDM Reservations to PDF with JavaScript in NodeJS\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-apply-tdm-reservations-to-pdf-with-javascript-in-nodejs\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-apply-tdm-reservations-to-pdf-with-javascript-in-nodejs\u002F\",\n      \"datePublished\": \"2026-04-24T18:30:24.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:06.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to protect documents from AI data mining using JavaScript with pdfRest TDM Reserve PDF API.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"TDM Reserve PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Ftdm-reserve-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Ftdm-reserved-pdf API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Ftdm-reserve-pdf\"\n        }\n      ],\n      \"keywords\": \"JavaScript, TDM Reserve PDF\",\n      \"dependencies\": \"JavaScript, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Apply TDM Reservations to PDF with JavaScript in NodeJS\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-apply-tdm-reservations-to-pdf-with-javascript-in-nodejs\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3318,3319,3320,3321],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":2029,"name":2030,"slug":2031,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2223,"name":2224,"slug":2225,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-apply-tdm-reservations-to-pdf-with-javascript-in-nodejs\u002F","How to Apply TDM Reservations to PDF with JavaScript in NodeJS, Tutorial | pdfRest",{"id":3326,"uuid":3327,"title":3328,"slug":3329,"html":3330,"comment_id":3326,"feature_image":48,"featured":284,"visibility":1257,"created_at":3331,"updated_at":3314,"published_at":3331,"custom_excerpt":3332,"codeinjection_head":3333,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3334,"primary_tag":3339,"url":3340,"excerpt":3332,"reading_time":320,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3341,"meta_description":3332,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"69ebb5a9533c9f26b943a9cd","bcff0886-1ccd-4a47-b2fd-1ce8049fc3ac","How to Apply TDM Reservations to PDF with PHP","how-to-apply-tdm-reservations-to-pdf-with-php","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Use TDM Reserve PDF with PHP?\u003C\u002Fh2>\n\n\u003Cp>The \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Ftdm-reserve-pdf\u002F\">pdfRest TDM Reserve PDF API Tool\u003C\u002Fa> is an essential resource for PHP developers looking to defend their digital content against unauthorized text and data mining (TDM). This tutorial will show you how to execute an API call to the TDM Reserve PDF endpoint using PHP. By incorporating this code into your server-side scripts, you can effortlessly embed standardized metadata into your PDF files, explicitly opting them out of AI training datasets and automated web scraping.\u003C\u002Fp>\n\n\u003Cp>Consider a media organization operating a PHP-based Content Management System (CMS) to distribute investigative journalism and exclusive reports. To ensure their original work is not freely harvested by AI companies, developers can integrate the TDM Reserve PDF API directly into the CMS upload workflow. Whenever a new PDF is published to the site, the script automatically applies a machine-readable TDM policy, safeguarding the organization's copyright and ensuring compliance with modern digital rights regulations like the EU CDSM Directive.\u003C\u002Fp>\n\n\u003Ch2>TDM Reserve PDF with PHP Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-python\">\nrequire 'vendor\u002Fautoload.php'; \u002F\u002F Require the autoload file to load Guzzle HTTP client.\n\nuse GuzzleHttp\\Client; \u002F\u002F Import the Guzzle HTTP client namespace.\nuse GuzzleHttp\\Psr7\\Request; \u002F\u002F Import the PSR-7 Request class.\nuse GuzzleHttp\\Psr7\\Utils; \u002F\u002F Import the PSR-7 Utils class for working with streams.\n\n\u002F\u002F By default, we use the US-based API service. This is the primary endpoint for global use.\n$apiUrl = \"https:\u002F\u002Fapi.pdfrest.com\";\n\n\u002F* For GDPR compliance and enhanced performance for European users, you can switch to the EU-based service by uncommenting the URL below.\n * For more information visit https:\u002F\u002Fpdfrest.com\u002Fpricing#how-do-eu-gdpr-api-calls-work\n *\u002F\n\u002F\u002F$apiUrl = \"https:\u002F\u002Feu-api.pdfrest.com\";\n\n$client = new Client(); \u002F\u002F Create a new instance of the Guzzle HTTP client.\n\n$headers = [\n  'Api-Key' =--> 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' \u002F\u002F Set the API key in the headers for authentication.\n];\n\n$options = [\n  'multipart' => [\n    [\n      'name' => 'file', \u002F\u002F Specify the field name for the file.\n      'contents' => Utils::tryFopen('\u002Fpath\u002Fto\u002Ffile', 'r'), \u002F\u002F Open the file specified by the '\u002Fpath\u002Fto\u002Ffile' for reading.\n      'filename' => '\u002Fpath\u002Fto\u002Ffile', \u002F\u002F Set the filename for the file to be processed, in this case, '\u002Fpath\u002Fto\u002Ffile'.\n      'headers' => [\n        'Content-Type' => '\u003Ccontent-type header=\"\">' \u002F\u002F Set the Content-Type header for the file.\n      ]\n    ],\n    [\n      'name' => 'policy', \u002F\u002F Specify the field name for the policy string.\n      'contents' => 'https:\u002F\u002Fexample.com\u002Ftdm-policy' \u002F\u002F Set a dummy URL policy value.\n    ],\n    [\n      'name' => 'output', \u002F\u002F Specify the field name for the output option.\n      'contents' => 'pdfrest_tdm_reserved_pdf' \u002F\u002F Set the value for the output option.\n    ]\n  ]\n];\n\n$request = new Request('POST', $apiUrl.'\u002Ftdm-reserved-pdf', $headers); \u002F\u002F Create a new HTTP POST request with the API endpoint and headers.\n\n$res = $client->sendAsync($request, $options)->wait(); \u002F\u002F Send the asynchronous request and wait for the response.\n\necho $res->getBody(); \u002F\u002F Output the response body, which contains the PDF with TDM rights metadata.\n\n\u003C\u002Fcontent-type>\u003C\u002Fpre>\n\n\u003Cp>Source: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FPHP\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Ftdm-reserved-pdf.php\">GitHub Repository\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>First, the code includes the Guzzle HTTP client library using \u003Ccode>require 'vendor\u002Fautoload.php';\u003C\u002Fcode>. This allows us to use Guzzle for making HTTP requests.\u003C\u002Fp>\n\n\u003Cp>The \u003Ccode>use\u003C\u002Fcode> statements import necessary classes from the Guzzle library: \u003Ccode>Client\u003C\u002Fcode> for creating HTTP clients, \u003Ccode>Request\u003C\u002Fcode> for HTTP requests, and \u003Ccode>Utils\u003C\u002Fcode> for working with streams.\u003C\u002Fp>\n\n\u003Cp>The \u003Ccode>$apiUrl\u003C\u002Fcode> variable sets the API endpoint URL. By default, it points to the US-based service, but there's an option to switch to the EU-based service for GDPR compliance by uncommenting the alternative URL.\u003C\u002Fp>\n\n\u003Cp>We create a new Guzzle client instance with \u003Ccode>$client = new Client();\u003C\u002Fcode>.\u003C\u002Fp>\n\n\u003Cp>The \u003Ccode>$headers\u003C\u002Fcode> array includes the API key for authentication. Replace \u003Ccode>'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'\u003C\u002Fcode> with your actual API key.\u003C\u002Fp>\n\n\u003Cp>The \u003Ccode>$options\u003C\u002Fcode> array configures the multipart request. It includes fields for the file, policy, and output options:\u003C\u002Fp>\n\n\u003Cul>\n  \u003Cli>\u003Ccode>file\u003C\u002Fcode>: Specifies the file to be processed. The \u003Ccode>Utils::tryFopen()\u003C\u002Fcode> function opens the file for reading.\u003C\u002Fli>\n  \u003Cli>\u003Ccode>policy\u003C\u002Fcode>: Contains a URL to the TDM policy, which defines the rights and permissions for text and data mining.\u003C\u002Fli>\n  \u003Cli>\u003Ccode>output\u003C\u002Fcode>: Sets the output format, in this case, \u003Ccode>'pdfrest_tdm_reserved_pdf'\u003C\u002Fcode>.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Cp>A new HTTP POST request is created with \u003Ccode>$request = new Request('POST', $apiUrl.'\u002Ftdm-reserved-pdf', $headers);\u003C\u002Fcode>.\u003C\u002Fp>\n\n\u003Cp>The request is sent asynchronously using \u003Ccode>$client->sendAsync($request, $options)->wait();\u003C\u002Fcode>, and the response body is outputted with \u003Ccode>echo $res->getBody();\u003C\u002Fcode>.\u003C\u002Fp>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>In this tutorial, we demonstrated how to use PHP to send an API request to the pdfRest TDM Reserve PDF endpoint, allowing you to embed TDM rights metadata into your PDF files. This capability is crucial for ensuring compliance with TDM rights management policies.\u003C\u002Fp>\n\n\u003Cp>To explore more features and tools offered by pdfRest, visit the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa> for demos. For detailed information, refer to the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">API Reference Guide\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Cp>Note: This is an example of a multipart API call. Code samples using JSON payloads can be found at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FPHP\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Ftdm-reserved-pdf.php\">GitHub Repository\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2026-04-24T18:25:45.000+00:00","Learn how to protect documents from AI data mining using pdfRest TDM Reserve PDF API with PHP.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-apply-tdm-reservations-to-pdf-with-php\u002F#article\",\n      \"headline\": \"How to Apply TDM Reservations to PDF with PHP\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-apply-tdm-reservations-to-pdf-with-php\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-apply-tdm-reservations-to-pdf-with-php\u002F\",\n      \"datePublished\": \"2026-04-24T18:25:45.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:06.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to protect documents from AI data mining using pdfRest TDM Reserve PDF API with PHP.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"TDM Reserve PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Ftdm-reserve-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Ftdm-reserved-pdf API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Ftdm-reserve-pdf\"\n        }\n      ],\n      \"keywords\": \"PHP, TDM Reserve PDF\",\n      \"dependencies\": \"PHP, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Apply TDM Reservations to PDF with PHP\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-apply-tdm-reservations-to-pdf-with-php\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3335,3336,3337,3338],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":2029,"name":2030,"slug":2031,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2227,"name":2228,"slug":2229,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-apply-tdm-reservations-to-pdf-with-php\u002F","How to Apply TDM Reservations to PDF with PHP, Tutorial | pdfRest",{"id":3343,"uuid":3344,"title":3345,"slug":3346,"html":3347,"comment_id":3343,"feature_image":48,"featured":284,"visibility":1257,"created_at":3348,"updated_at":3349,"published_at":3348,"custom_excerpt":3350,"codeinjection_head":3351,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3352,"primary_tag":3357,"url":3358,"excerpt":3350,"reading_time":320,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3359,"meta_description":3350,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"69eba6a6533c9f26b943a9c3","465229e6-3f85-4539-9444-1488f35f2320","How to Apply TDM Reservations to PDF with Python","how-to-apply-tdm-reservations-to-pdf-with-python","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Use TDM Reserve PDF with Python?\u003C\u002Fh2>\n\n\u003Cp>The \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Ftdm-reserve-pdf\u002F\">pdfRest TDM Reserve PDF API Tool\u003C\u002Fa> provides Python developers with a straightforward method to enforce intellectual property rights against automated data mining. This tutorial will walk you through how to construct and execute an API request to the TDM Reserve endpoint using Python. By building this functionality into your document processing scripts, you can programmatically inject W3C-compliant metadata into your PDFs, effectively blocking unauthorized AI scrapers and web crawlers from harvesting your content.\u003C\u002Fp>\n\n\u003Cp>In a practical setting, a data engineering team at an academic publisher might use Python to manage a massive library of scientific research and journals. Before distributing these PDFs online or to third-party databases, they need to ensure the documents cannot be freely ingested to train commercial LLMs. By writing a Python script that calls the TDM Reserve PDF API, the team can rapidly process the entire repository, embedding a machine-readable \"opt-out\" policy into every file to legally protect the institution's proprietary research at scale.\u003C\u002Fp>\n\n\u003Ch2>TDM Reserve PDF with Python Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-python\">from requests_toolbelt import MultipartEncoder\nimport requests\nimport json\n\n# This sample applies metadata on a PDF declaring Text and Data Mining (TDM) rights.\n\n# By default, we use the US-based API service. This is the primary endpoint for global use.\napi_url = \"https:\u002F\u002Fapi.pdfrest.com\"\n\n# For GDPR compliance and enhanced performance for European users, you can switch to the EU-based service by uncommenting the URL below.\n# For more information visit https:\u002F\u002Fpdfrest.com\u002Fpricing#how-do-eu-gdpr-api-calls-work\n#api_url = \"https:\u002F\u002Feu-api.pdfrest.com\"\n\ntdm_reserved_pdf_endpoint_url = api_url+'\u002Ftdm-reserved-pdf'\n\n# The \u002Ftdm-reserved-pdf endpoint can take a single PDF file or id as input.\nmp_encoder_tdm_reserved_pdf = MultipartEncoder(\n    fields={\n        'file': ('file_name.pdf', open('\u002Fpath\u002Fto\u002Ffile', 'rb'), 'application\u002Fpdf'),\n        'policy': 'https:\u002F\u002Fexample.com\u002Ftdm-policy',\n        'output' : 'example_tdm_reserved_pdf_out'\n    }\n)\n\n# Let's set the headers that the tdm-reserved-pdf endpoint expects.\n# Since MultipartEncoder is used, the 'Content-Type' header gets set to 'multipart\u002Fform-data' via the content_type attribute below.\nheaders = {\n    'Accept': 'application\u002Fjson',\n    'Content-Type': mp_encoder_tdm_reserved_pdf.content_type,\n    'Api-Key': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' # place your api key here\n}\n\nprint(\"Sending POST request to tdm-reserved-pdf endpoint...\")\nresponse = requests.post(tdm_reserved_pdf_endpoint_url, data=mp_encoder_tdm_reserved_pdf, headers=headers)\n\nprint(\"Response status code: \" + str(response.status_code))\n\nif response.ok:\n    response_json = response.json()\n    print(json.dumps(response_json, indent = 2))\nelse:\n    print(response.text)\n\n# If you would like to download the file instead of getting the JSON response, please see the 'get-resource-id-endpoint.py' sample.\n\u003C\u002Fpre>\n\n\u003Cp>Source: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FPython\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Ftdm-reserved-pdf.py\">GitHub Repository\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>The code begins by importing necessary libraries: \u003Ccode>requests_toolbelt\u003C\u002Fcode> for handling multipart form data, \u003Ccode>requests\u003C\u002Fcode> for making HTTP requests, and \u003Ccode>json\u003C\u002Fcode> for handling JSON data.\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">api_url = \"https:\u002F\u002Fapi.pdfrest.com\"\n\u003C\u002Fpre>\n\n\u003Cp>This line sets the base URL for the API. The default is the US-based service, but you can switch to the EU-based service for GDPR compliance by uncommenting the alternative URL.\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">mp_encoder_tdm_reserved_pdf = MultipartEncoder(\n    fields={\n        'file': ('file_name.pdf', open('\u002Fpath\u002Fto\u002Ffile', 'rb'), 'application\u002Fpdf'),\n        'policy': 'https:\u002F\u002Fexample.com\u002Ftdm-policy',\n        'output' : 'example_tdm_reserved_pdf_out'\n    }\n)\n\u003C\u002Fpre>\n\n\u003Cp>The \u003Ccode>MultipartEncoder\u003C\u002Fcode> is used to prepare the data for the POST request. The \u003Ccode>fields\u003C\u002Fcode> dictionary includes:\u003C\u002Fp>\n\n\u003Cul>\n  \u003Cli>\u003Ccode>file\u003C\u002Fcode>: The PDF file to which TDM rights will be applied. It is opened in binary mode.\u003C\u002Fli>\n  \u003Cli>\u003Ccode>policy\u003C\u002Fcode>: A URL pointing to the TDM policy document.\u003C\u002Fli>\n  \u003Cli>\u003Ccode>output\u003C\u002Fcode>: The desired name for the output file.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Cpre class=\"language-python\">headers = {\n    'Accept': 'application\u002Fjson',\n    'Content-Type': mp_encoder_tdm_reserved_pdf.content_type,\n    'Api-Key': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' # place your api key here\n}\n\u003C\u002Fpre>\n\n\u003Cp>The \u003Ccode>headers\u003C\u002Fcode> dictionary specifies the request headers. The \u003Ccode>Content-Type\u003C\u002Fcode> is automatically set by the \u003Ccode>MultipartEncoder\u003C\u002Fcode>. The \u003Ccode>Api-Key\u003C\u002Fcode> is a placeholder for your actual API key.\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">response = requests.post(tdm_reserved_pdf_endpoint_url, data=mp_encoder_tdm_reserved_pdf, headers=headers)\n\u003C\u002Fpre>\n\n\u003Cp>This line sends a POST request to the TDM Reserve PDF endpoint with the prepared data and headers.\u003C\u002Fp>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>In this tutorial, you learned how to apply TDM rights to a PDF using the pdfRest API with Python. This can be particularly useful for automating the preparation of documents for text and data mining. To explore more, you can demo all of the pdfRest API Tools in the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. For further details, refer to the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">API Reference Guide\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Cp>Note: This example demonstrates a multipart API call. Code samples using JSON payloads can be found at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FPython\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Ftdm-reserved-pdf.py\">GitHub Repository\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2026-04-24T17:21:42.000+00:00","2026-09-02T18:26:53.000+00:00","Learn how to use pdfRest TDM Reserve PDF API with Python to protect files from AI data mining.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-apply-tdm-reservations-to-pdf-with-python\u002F#article\",\n      \"headline\": \"How to Apply TDM Reservations to PDF with Python\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-apply-tdm-reservations-to-pdf-with-python\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-apply-tdm-reservations-to-pdf-with-python\u002F\",\n      \"datePublished\": \"2026-04-24T17:21:42.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:07.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to use pdfRest TDM Reserve PDF API with Python to protect files from AI data mining.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"TDM Reserve PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Ftdm-reserve-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Ftdm-reserved-pdf API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Ftdm-reserve-pdf\"\n        }\n      ],\n      \"keywords\": \"Python, TDM Reserve PDF\",\n      \"dependencies\": \"Python, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Apply TDM Reservations to PDF with Python\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-apply-tdm-reservations-to-pdf-with-python\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3353,3354,3355,3356],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":2029,"name":2030,"slug":2031,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2219,"name":2220,"slug":2221,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-apply-tdm-reservations-to-pdf-with-python\u002F","How to Apply TDM Reservations to PDF with Python, Tutorial | pdfRest",{"id":3361,"uuid":3362,"title":3363,"slug":3364,"html":3365,"comment_id":3361,"feature_image":48,"featured":284,"visibility":1257,"created_at":3366,"updated_at":3349,"published_at":3367,"custom_excerpt":3368,"codeinjection_head":3369,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3370,"primary_tag":3378,"url":3379,"excerpt":3368,"reading_time":320,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3380,"meta_description":3368,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"68a5fc37533c9f26b9439f7f","7a9f2844-8af6-4502-a040-3dc66bf2d8b7","How to Automate PDF Digital Signatures for Secure and Efficient Workflows","how-to-automate-pdf-digital-signatures-for-secure-and-efficient-workflows-guide","\n\u003C!--kg-card-begin: html-->\n\u003Cp>Streamline your business processes and ensure document integrity at scale by learning \u003Cstrong>how to automate PDF digital signatures\u003C\u002Fstrong> using the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fsign-pdf\u002F\">pdfRest Sign PDF API Tool\u003C\u002Fa>. This powerful REST API is designed for seamless integration with popular \u003Cstrong>low-code\u003C\u002Fstrong> and \u003Cstrong>no-code\u003C\u002Fstrong> platforms, enabling you to apply cryptographically secure signatures to documents without any manual intervention. If you are looking for a reliable way to automate PDF signatures and build robust PDF signature automation processes, pdfRest provides the precision and security your business needs.\u003C\u002Fp>\n\n\u003Chr>\n\n\u003Ch2>Why Automation is Essential for Document Workflows\u003C\u002Fh2>\n\u003Cul>\n    \u003Cli>\u003Cstrong>Accelerate Workflows:\u003C\u002Fstrong> Automation removes the need for manual signing, dramatically reducing the time it takes to process high volumes of legal agreements and financial documents.\u003C\u002Fli>\n    \u003Cli>\u003Cstrong>Ensure Security & Compliance:\u003C\u002Fstrong> Applying automated digital signatures helps you meet strict industry regulations like HIPAA and GDPR, ensuring a verifiable and tamper-evident record.\u003C\u002Fli>\n    \u003Cli>\u003Cstrong>Improve Efficiency:\u003C\u002Fstrong> By automating your signing process, you free up your team from repetitive tasks, allowing them to focus on higher-value work and reducing the potential for human error.\u003C\u002Fli>\n    \u003Cli>\u003Cstrong>Maintain Integrity:\u003C\u002Fstrong> The automation of this process ensures that signatures are securely embedded, confirming a document's authenticity and ensuring it has not been altered since it was signed.\u003C\u002Fli>\n    \u003Cli>\u003Cstrong>Create Scalable Solutions:\u003C\u002Fstrong> With automation, your processes can handle sudden increases in document volume without a proportional increase in manual effort.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Chr>\n\n\u003Ch2>How to Automate PDF Signatures with pdfRest\u003C\u002Fh2>\n\u003Cp>Automating digital signatures with pdfRest involves connecting a series of simple steps in your automation platform. The exact setup varies depending on the service you use, whether it's a \u003Cstrong>low-code\u003C\u002Fstrong> platform like \u003Cstrong>Microsoft Power Automate\u003C\u002Fstrong> or \u003Cstrong>Workato\u003C\u002Fstrong>, a \u003Cstrong>no-code\u003C\u002Fstrong> tool like \u003Cstrong>Zapier\u003C\u002Fstrong> or \u003Cstrong>Bubble.io\u003C\u002Fstrong>, or a custom solution built with a service like \u003Cstrong>Salesforce\u003C\u002Fstrong>, \u003Cstrong>Make.com\u003C\u002Fstrong>, or \u003Cstrong>n8n\u003C\u002Fstrong>. The workflow for automating your documents generally follows this pattern:\u003C\u002Fp>\n\u003Col>\n    \u003Cli>\u003Cb>Set Your Trigger:\u003C\u002Fb> The first step in automating your process is defining the event that initiates the workflow. This could be a new file being added to a cloud storage folder, an email attachment arriving in a specific inbox, or a new record being created in your CRM.\u003C\u002Fli>\n    \u003Cli>\u003Cb>Process the PDF:\u003C\u002Fb> This core step uses two simple API calls to handle the signing process. First, use your automation platform's HTTP connector to send a POST call to the pdfRest \u003Ccode>\u002Fupload\u003C\u002Fcode> endpoint to prepare your file for processing. This returns a unique resource ID. Next, you will send a second POST call to the \u003Ccode>\u002Fsigned-pdf\u003C\u002Fcode> endpoint, using the resource ID from the previous step along with your signature configuration. This is a powerful and simplified way to handle complex files within your automated workflow.\u003C\u002Fli>\n    \u003Cli>\u003Cb>Handle the Output:\u003C\u002Fb> The response from the processing step will not contain the file itself. Instead, it will provide a URL for the signed document. You will need to add a final action to your workflow to send a GET request to this URL, which will download the completed file.\u003C\u002Fli>\n    \u003Cli>\u003Cb>Define the Next Step:\u003C\u002Fb> Once you have the signed document, the final step in your automation is to specify what happens to it. This could be saving the file to a new location in your cloud storage, attaching it to an email for a client, or updating a record in your system.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>This approach allows you to build a secure, end-to-end workflow that fits seamlessly into your existing business processes, whether you use a low-code tool, a no-code tool, or a custom solution.\u003C\u002Fp>\n\n\u003Chr>\n\n\u003Ch2>Try Now in API Lab\u003C\u002Fh2>\n\u003Cp>Experience how easy it is to sign PDFs directly in your browser using our \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F?tool=signed-pdf\">API Lab\u003C\u002Fa>. Upload your PDF, configure your signature, generate the code, and download the cryptographically signed PDF to validate its authenticity.\u003C\u002Fp>\n\n\u003Chr>\n\n\u003Ch2>Start Automating Your Digital Signatures Today!\u003C\u002Fh2>\n\u003Cp>Take the first step toward a more secure and efficient document workflow by integrating pdfRest into your existing services. For more detailed guides on automating your processes, review our solutions for \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fintegrate-with-microsoft-power-automate\u002F\">integrating with Microsoft Power Automate\u003C\u002Fa> and for \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fintegrate-pdfrest-with-salesforce-apex-code\u002F\">integrating with Salesforce Apex Code\u003C\u002Fa>. You can also refer to our comprehensive \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fsign-pdf\u002F\" target=\"_blank\">API Documentation\u003C\u002Fa> to learn about all available customization options. Sign up for a \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fgetstarted\u002F\">free pdfRest account\u003C\u002Fa> and start automating your digital signing tasks today!\u003C\u002Fp>\n\n\u003C!--kg-card-end: html-->\n","2025-08-20T16:47:51.000+00:00","2025-08-20T18:32:58.000+00:00","Automate PDF digital signatures in your workflows using the pdfRest Sign PDF API. This guide shows how to integrate with low-code and no-code tools like Power Automate, Zapier, and Salesforce.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-automate-pdf-digital-signatures-for-secure-and-efficient-workflows-guide\u002F#article\",\n      \"headline\": \"How to Automate PDF Digital Signatures for Secure and Efficient Workflows\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-automate-pdf-digital-signatures-for-secure-and-efficient-workflows-guide\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-automate-pdf-digital-signatures-for-secure-and-efficient-workflows-guide\u002F\",\n      \"datePublished\": \"2025-08-20T18:32:58.000Z\",\n      \"dateModified\": \"2026-09-01T06:10:56.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Automate PDF digital signatures in your workflows using the pdfRest Sign PDF API. This guide shows how to integrate with low-code and no-code tools like Power Automate, Zapier, and Salesforce.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Sign PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fsign-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fsigned-pdf API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fsign-pdf\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Upload Files API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fupload-files\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fupload API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fupload-files\"\n        }\n      ],\n      \"keywords\": \"Integration, Low Code, No Code, Security, Sign PDF\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Automate PDF Digital Signatures for Secure and Efficient Workflows\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-automate-pdf-digital-signatures-for-secure-and-efficient-workflows-guide\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3371,3372,3373,3374,3375,3376,3377],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":2017,"name":2018,"slug":2019,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1989,"name":1990,"slug":1991,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2063,"name":2064,"slug":2065,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2075,"name":2076,"slug":2077,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2067,"name":2068,"slug":2069,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-automate-pdf-digital-signatures-for-secure-and-efficient-workflows-guide\u002F","How to Automate PDF Digital Signatures for Secure and Efficient Workflows | pdfRest",{"id":3382,"uuid":3383,"title":3384,"slug":3385,"html":3386,"comment_id":3382,"feature_image":48,"featured":284,"visibility":1257,"created_at":3387,"updated_at":3388,"published_at":3389,"custom_excerpt":3390,"codeinjection_head":3391,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3392,"primary_tag":3400,"url":3401,"excerpt":3390,"reading_time":295,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3402,"meta_description":3390,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"68a6155b533c9f26b9439fa6","faccc2d4-a607-446a-b018-e018c52cb559","How to Automate PDF Redaction for Data Privacy and Compliance","how-to-automate-pdf-redaction-for-data-privacy-and-compliance-guide","\n\u003C!--kg-card-begin: html-->\n\u003Cp>Safeguard sensitive information and ensure regulatory compliance by learning \u003Cstrong>how to automate PDF redaction\u003C\u002Fstrong> using the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fredact-pdf-api\u002F\">pdfRest Redact PDF API Tool\u003C\u002Fa>. This powerful REST API is designed for secure and efficient automated PDF redaction, allowing you to permanently remove confidential data like PII and financial information at scale. If you are looking for a reliable way to automate data sanitization and build a robust PDF redaction automation process, pdfRest provides the security and precision your business needs.\u003C\u002Fp>\n\n\u003Chr>\n\n\u003Ch2>Why Automation is Essential for Document Redaction\u003C\u002Fh2>\n\u003Cul>\n    \u003Cli>\u003Cstrong>Ensure Compliance:\u003C\u002Fstrong> Automation helps you meet data protection laws like GDPR, HIPAA, and CCPA by securely removing personal and regulated data from documents.\u003C\u002Fli>\n    \u003Cli>\u003Cstrong>Enhance Data Security:\u003C\u002Fstrong> Automated redaction ensures that sensitive information is permanently and irreversibly removed, safeguarding against data breaches and unauthorized access.\u003C\u002Fli>\n    \u003Cli>\u003Cstrong>Optimize Workflows:\u003C\u002Fstrong> By automating the redaction process, you can enhance workflow efficiency, reduce manual intervention, and process high volumes of documents faster.\u003C\u002Fli>\n    \u003Cli>\u003Cstrong>Improve Accuracy:\u003C\u002Fstrong> Use built-in redaction presets and regular expressions to automatically detect and sanitize common patterns, minimizing the risk of human error in sensitive data handling.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Chr>\n\n\u003Ch2>How to Automate PDF Redaction with pdfRest\u003C\u002Fh2>\n\u003Cp>Automating PDF redaction with pdfRest involves connecting a series of simple steps in your automation platform. The exact setup varies depending on the service you use, whether it's a \u003Cstrong>low-code\u003C\u002Fstrong> platform like \u003Cstrong>Microsoft Power Automate\u003C\u002Fstrong> or \u003Cstrong>Workato\u003C\u002Fstrong>, a \u003Cstrong>no-code\u003C\u002Fstrong> tool like \u003Cstrong>Zapier\u003C\u002Fstrong> or \u003Cstrong>Bubble.io\u003C\u002Fstrong>, or a custom solution built with a service like \u003Cstrong>Salesforce\u003C\u002Fstrong>, \u003Cstrong>Make.com\u003C\u002Fstrong>, or \u003Cstrong>n8n\u003C\u002Fstrong>. The workflow for automating your documents generally follows this pattern:\u003C\u002Fp>\n\u003Col>\n    \u003Cli>\u003Cb>Set Your Trigger:\u003C\u002Fb> The first step in automating your process is defining the event that initiates the workflow. This could be a new file being added to a cloud storage folder, an email attachment arriving in a specific inbox, or a new record being created in your CRM.\u003C\u002Fli>\n    \u003Cli>\u003Cb>Process the PDF:\u003C\u002Fb> This core step uses three simple API calls to handle the redaction process. First, use your automation platform's HTTP connector to send a POST call to the pdfRest \u003Ccode>\u002Fupload\u003C\u002Fcode> endpoint to prepare your file for processing. This returns a unique resource ID. Next, you will send a second POST call to the \u003Ccode>\u002Fpdf-with-redacted-text-preview\u003C\u002Fcode> endpoint, using the resource ID from the previous step along with your redaction configuration. Finally, you will send a third POST call to the \u003Ccode>\u002Fpdf-with-redacted-text-applied\u003C\u002Fcode> endpoint using the resource ID from the previous step, which will permanently remove all redacted text from your document and apply redaction boxes to indicate where content has been removed.\u003C\u002Fli>\n    \u003Cli>\u003Cb>Handle the Output:\u003C\u002Fb> The response from the processing step will not contain the file itself. Instead, it will provide a URL for the redacted document. You will need to add a final action to your workflow to send a GET request to this URL, which will download the completed file.\u003C\u002Fli>\n    \u003Cli>\u003Cb>Define the Next Step:\u003C\u002Fb> Once you have the redacted document, the final step in your automation is to specify what happens to it. This could be saving the file to a new location in your cloud storage, archiving it securely, or updating a record in your system.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>This approach allows you to build a secure, end-to-end workflow that fits seamlessly into your existing business processes, whether you use a low-code tool, a no-code tool, or a custom solution.\u003C\u002Fp>\n\n\u003Chr>\n\n\u003Ch2>Try Now in API Lab\u003C\u002Fh2>\n\u003Cp>Experience how easy it is to redact PDFs directly in your browser using our \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F?tool=pdf-with-redacted-text-preview\">API Lab\u003C\u002Fa>. Upload your PDF, configure your redaction rules, generate the code, and download the securely redacted PDF to validate the result.\u003C\u002Fp>\n\n\u003Chr>\n\n\u003Ch2>Start Automating Your Redaction Today!\u003C\u002Fh2>\n\u003Cp>Take the first step toward a more secure and efficient document workflow by integrating pdfRest into your existing services. For more detailed guides on automating your processes, review our solutions for \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fintegrate-with-microsoft-power-automate\u002F\">integrating with Microsoft Power Automate\u003C\u002Fa> and for \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fintegrate-pdfrest-with-salesforce-apex-code\u002F\">integrating with Salesforce Apex Code\u003C\u002Fa>. You can also refer to our comprehensive \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fredact-pdf\u002F\" target=\"_blank\">API Documentation\u003C\u002Fa> to learn about all available parameters. Sign up for a \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fgetstarted\u002F\">free pdfRest account\u003C\u002Fa> and start automating your data protection tasks today!\u003C\u002Fp>\n\n\u003C!--kg-card-end: html-->\n","2025-08-20T18:35:07.000+00:00","2026-09-02T18:26:54.000+00:00","2025-08-20T18:43:11.000+00:00","Automate PDF redaction with the pdfRest Redact PDF API to protect sensitive data and ensure compliance. This guide shows how to integrate with low-code and no-code tools like Power Automate, Zapier, and Salesforce.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-automate-pdf-redaction-for-data-privacy-and-compliance-guide\u002F#article\",\n      \"headline\": \"How to Automate PDF Redaction for Data Privacy and Compliance\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-automate-pdf-redaction-for-data-privacy-and-compliance-guide\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-automate-pdf-redaction-for-data-privacy-and-compliance-guide\u002F\",\n      \"datePublished\": \"2025-08-20T18:43:11.000Z\",\n      \"dateModified\": \"2026-09-01T06:10:22.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Automate PDF redaction with the pdfRest Redact PDF API to protect sensitive data and ensure compliance. This guide shows how to integrate with low-code and no-code tools like Power Automate, Zapier, and Salesforce.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Redact PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fredact-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fpdf-with-redacted-text-applied API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fredact-pdf\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fpdf-with-redacted-text-preview API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fredact-pdf\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Upload Files API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fupload-files\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fupload API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fupload-files\"\n        }\n      ],\n      \"keywords\": \"Integration, Low Code, No Code, Redact PDF, Security\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Automate PDF Redaction for Data Privacy and Compliance\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-automate-pdf-redaction-for-data-privacy-and-compliance-guide\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3393,3394,3395,3396,3397,3398,3399],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":2013,"name":2014,"slug":2015,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1989,"name":1990,"slug":1991,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2063,"name":2064,"slug":2065,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2075,"name":2076,"slug":2077,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2067,"name":2068,"slug":2069,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-automate-pdf-redaction-for-data-privacy-and-compliance-guide\u002F","How to Automate PDF Redaction for Data Privacy and Compliance | pdfRest",{"id":3404,"uuid":3405,"title":3406,"slug":3407,"html":3408,"comment_id":3404,"feature_image":48,"featured":284,"visibility":1257,"created_at":3409,"updated_at":3388,"published_at":3410,"custom_excerpt":3411,"codeinjection_head":3412,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3413,"primary_tag":3423,"url":3424,"excerpt":3411,"reading_time":295,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3425,"meta_description":3411,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"68a617ec533c9f26b9439fc6","6561010d-c5da-4c12-b200-780e64f590b8","How to Automate PDF to Markdown Conversion for Data & Content Extraction","how-to-automate-pdf-to-markdown-conversions-for-content-repurposing-and-llm-training","\n\u003C!--kg-card-begin: html-->\n\u003Cp>Streamline content repurposing and data analysis by learning \u003Cstrong>how to automate PDF to Markdown conversion\u003C\u002Fstrong> using the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fpdf-to-markdown\u002F\">pdfRest PDF to Markdown API Tool\u003C\u002Fa>. This powerful REST API is designed for accurate content extraction, allowing you to transform PDFs into clean, structured Markdown. If you are looking for a reliable way to automate your content pipelines and build a robust \u003Cstrong>content automation\u003C\u002Fstrong> process, pdfRest provides the precision and efficiency your business needs for tasks like content migration, dynamic publishing, or LLM training.\u003C\u002Fp>\n\n\u003Chr>\n\n\u003Ch2>Why Automation is Essential for Content Workflows\u003C\u002Fh2>\n\u003Cul>\n    \u003Cli>\u003Cstrong>Extract Structured Content:\u003C\u002Fstrong> Automation accurately preserves headings, lists, tables, and other formatting elements, ensuring your output is clean, structured data ready for immediate use.\u003C\u002Fli>\n    \u003Cli>\u003Cstrong>Simplify Content Management:\u003C\u002Fstrong> By converting PDFs to lightweight, plain-text Markdown, you simplify content for easier management and version control in text-based systems like Git.\u003C\u002Fli>\n    \u003Cli>\u003Cstrong>Enable LLM Training & Analysis:\u003C\u002Fstrong> The clean, semantic text extracted from PDFs is an ideal format for training Large Language Models, enabling more robust and intelligent AI-driven solutions.\u003C\u002Fli>\n    \u003Cli>\u003Cstrong>Streamline Publishing:\u003C\u002Fstrong> Automate large-scale PDF to Markdown conversions, streamlining workflows for content migration to modern web formats or dynamic publishing systems.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Chr>\n\n\u003Ch2>How to Automate PDF to Markdown with pdfRest\u003C\u002Fh2>\n\u003Cp>Automating PDF to Markdown conversion with pdfRest involves connecting a series of simple steps in your automation platform. The exact setup varies depending on the service you use, whether it's a \u003Cstrong>low-code\u003C\u002Fstrong> platform like \u003Cstrong>Microsoft Power Automate\u003C\u002Fstrong> or \u003Cstrong>Workato\u003C\u002Fstrong>, a \u003Cstrong>no-code\u003C\u002Fstrong> tool like \u003Cstrong>Zapier\u003C\u002Fstrong> or \u003Cstrong>Bubble.io\u003C\u002Fstrong>, or a custom solution built with a service like \u003Cstrong>Salesforce\u003C\u002Fstrong>, \u003Cstrong>Make.com\u003C\u002Fstrong>, or \u003Cstrong>n8n\u003C\u002Fstrong>. The workflow for automating your conversions generally follows this pattern:\u003C\u002Fp>\n\u003Col>\n    \u003Cli>\u003Cb>Set Your Trigger:\u003C\u002Fb> The first step in automating your process is defining the event that initiates the workflow. This could be a new file being added to a cloud storage folder, an email attachment arriving in a specific inbox, or a new record being created in your CRM.\u003C\u002Fli>\n    \u003Cli>\u003Cb>Process the PDF:\u003C\u002Fb> This core step uses two simple API calls. First, use your automation platform's HTTP connector to send a POST call to the pdfRest \u003Ccode>\u002Fupload\u003C\u002Fcode> endpoint to prepare your file. This returns a unique resource ID. Next, you will send a second POST call to the \u003Ccode>\u002Fmarkdown\u003C\u002Fcode> endpoint, using the resource ID. You can also specify an \u003Ccode>output_type\u003C\u002Fcode> to receive the Markdown content as an .md file or directly in the JSON response, which is great for small documents or for direct data piping to another service like an LLM.\u003C\u002Fli>\n    \u003Cli>\u003Cb>Handle the Output:\u003C\u002Fb> Depending on your chosen \u003Ccode>output_type\u003C\u002Fcode>, the response will either provide a URL to download the output file or contain the raw Markdown content directly in the JSON response. You will need to add a final action to your workflow to either make a GET request to the URL or parse the JSON response to retrieve the content.\u003C\u002Fli>\n    \u003Cli>\u003Cb>Define the Next Step:\u003C\u002Fb> Once you have the Markdown content, the final step in your automation is to specify what happens to it. This could be saving the file to a documentation system, publishing it to a CMS, or sending it as a direct input to an AI or data analysis tool.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>This approach allows you to build a secure, end-to-end workflow that fits seamlessly into your existing business processes, whether you use a low-code tool, a no-code tool, or a custom solution.\u003C\u002Fp>\n\n\u003Chr>\n\n\u003Ch2>Try Now in API Lab\u003C\u002Fh2>\n\u003Cp>Experience how easy it is to convert PDFs to Markdown directly in your browser using our \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F?tool=markdown\">API Lab\u003C\u002Fa>. Upload your PDF, choose your parameters, generate the code, and download the structured Markdown content to validate the result.\u003C\u002Fp>\n\n\u003Chr>\n\n\u003Ch2>Start Automating Your Conversions Today!\u003C\u002Fh2>\n\u003Cp>Take the first step toward a more efficient content workflow by integrating pdfRest into your existing services. For more detailed guides on automating your processes, review our solutions for \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Ftransform-pdfs-to-markdown-for-dynamic-web-content-seo\u002F\">transforming PDFs to Markdown for dynamic web content\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fintegrate-with-microsoft-power-automate\u002F\">integrating with Microsoft Power Automate\u003C\u002Fa>, and \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Fsolutions\u002Fintegrate-pdfrest-with-salesforce-apex-code\u002F\">integrating with Salesforce Apex Code\u003C\u002Fa>. You can also refer to our comprehensive \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fconvert-pdf-to-markdown\u002F\" target=\"_blank\">API Documentation\u003C\u002Fa> to learn about all available parameters. Sign up for a \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fgetstarted\u002F\">free pdfRest account\u003C\u002Fa> and start automating your conversions today!\u003C\u002Fp>\n\n\u003C!--kg-card-end: html-->\n","2025-08-20T18:46:04.000+00:00","2025-08-20T18:53:44.000+00:00","Automate PDF to Markdown conversion with the pdfRest API. Learn how to extract structured data and content for repurposing, data analysis, and LLM training using low-code and no-code tools.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-automate-pdf-to-markdown-conversions-for-content-repurposing-and-llm-training\u002F#article\",\n      \"headline\": \"How to Automate PDF to Markdown Conversion for Data & Content Extraction\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-automate-pdf-to-markdown-conversions-for-content-repurposing-and-llm-training\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-automate-pdf-to-markdown-conversions-for-content-repurposing-and-llm-training\u002F\",\n      \"datePublished\": \"2025-08-20T18:53:44.000Z\",\n      \"dateModified\": \"2026-09-01T05:54:34.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Automate PDF to Markdown conversion with the pdfRest API. Learn how to extract structured data and content for repurposing, data analysis, and LLM training using low-code and no-code tools.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"PDF to Markdown API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fpdf-to-markdown\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fmarkdown API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fconvert-pdf-to-markdown\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Upload Files API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fupload-files\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fupload API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fupload-files\"\n        }\n      ],\n      \"keywords\": \"Conversion, Convert, Extract, Integration, Low Code, No Code, PDF to Markdown\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Automate PDF to Markdown Conversion for Data & Content Extraction\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-automate-pdf-to-markdown-conversions-for-content-repurposing-and-llm-training\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3414,3415,3416,3417,3418,3419,3420,3421,3422],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1500,"name":1501,"slug":1502,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1386,"name":1387,"slug":1388,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":1283,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1390,"name":1391,"slug":1392,"description":1283,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1484,"name":1485,"slug":1486,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2063,"name":2064,"slug":2065,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2067,"name":2068,"slug":2069,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2075,"name":2076,"slug":2077,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-automate-pdf-to-markdown-conversions-for-content-repurposing-and-llm-training\u002F","How to Automate PDF to Markdown Conversion for Data & Content Extraction | pdfRest",{"id":3427,"uuid":3428,"title":3429,"slug":3430,"html":3431,"comment_id":3427,"feature_image":48,"featured":284,"visibility":1257,"created_at":3432,"updated_at":3433,"published_at":3432,"custom_excerpt":3434,"codeinjection_head":3435,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3436,"primary_tag":3443,"url":3444,"excerpt":3434,"reading_time":295,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3445,"meta_description":3434,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65ea02bb533c9f26b94366f4","192198b1-778a-4996-94f8-7e762696fa67","How to Change PDF Password in .NET with C#","how-to-change-pdf-password-in-net-with-c","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Change PDF Password with C#?\u003C\u002Fh2>\n\n\u003Cp>The pdfRest \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fencrypt-pdf\u002F'>Encrypt PDF API Tool\u003C\u002Fa> is a powerful resource for developers looking to secure their PDF documents programmatically. By using this tool, you can encrypt PDF files to ensure that sensitive information is protected and only accessible to individuals with the correct password. For documents that already have a password set, you can also use this tool to change its password.  This tutorial will guide you through the process of sending an API call to Encrypt PDF using C# programming language, which is a common language for backend development and scripting in Windows environments.\u003C\u002Fp>\n\n\u003Cp>Imagine you're working on a project with a client who sends you a confidential document, like a new product design or a marketing strategy. You need to access the document to collaborate, but also ensure its security. You can utilize the Encrypt PDF API to set a new password on the document before saving or sharing it further within your team. This two-step process ensures you can collaborate on the document while keeping the information secure, even if someone intercepts it during transmission.\u003C\u002Fp>\n\n\u003Ch2>Change PDF Password with C# Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-csharp\">using System.Text;\n\nusing (var httpClient = new HttpClient { BaseAddress = new Uri(\"https:\u002F\u002Fapi.pdfrest.com\") })\n{\n    using (var request = new HttpRequestMessage(HttpMethod.Post, \"encrypted-pdf\"))\n    {\n        request.Headers.TryAddWithoutValidation(\"Api-Key\", \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\");\n        request.Headers.Accept.Add(new(\"application\u002Fjson\"));\n        var multipartContent = new MultipartFormDataContent();\n\n        var byteArray = File.ReadAllBytes(\"\u002Fpath\u002Fto\u002Ffile.pdf\");\n        var byteAryContent = new ByteArrayContent(byteArray);\n        multipartContent.Add(byteAryContent, \"file\", \"file_name.pdf\");\n        byteAryContent.Headers.TryAddWithoutValidation(\"Content-Type\", \"application\u002Fpdf\");\n\n        var byteArrayOption1 = new ByteArrayContent(Encoding.UTF8.GetBytes(\"CURRENTPASSWORD\"));\n        multipartContent.Add(byteArrayOption1, \"current_open_password\");\n  \n        var byteArrayOption2 = new ByteArrayContent(Encoding.UTF8.GetBytes(\"NEWPASSWORD\"));\n        multipartContent.Add(byteArrayOption2, \"new_open_password\");\n\n        request.Content = multipartContent;\n        var response = await httpClient.SendAsync(request);\n\n        var apiResult = await response.Content.ReadAsStringAsync();\n\n        Console.WriteLine(\"API response received.\");\n        Console.WriteLine(apiResult);\n    }\n}\n\u003C\u002Fpre>\n\n\u003Cp>Reference: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FDotNET\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fencrypted-pdf.cs\">pdfRest C# Sample Code\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>The code begins by creating an instance of \u003Ccode class=\"language-csharp\">HttpClient\u003C\u002Fcode> with the base address set to the pdfRest API endpoint. A new \u003Ccode class=\"language-csharp\">HttpRequestMessage\u003C\u002Fcode> is then constructed for the POST method to the 'encrypted-pdf' endpoint.\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">using (var httpClient = new HttpClient { BaseAddress = new Uri(\"https:\u002F\u002Fapi.pdfrest.com\") })\n{\n    using (var request = new HttpRequestMessage(HttpMethod.Post, \"encrypted-pdf\"))\n    {\n        ...\n    }\n}\n\u003C\u002Fpre>\n\n\u003Cp>The API key is added to the request headers, which is required for authentication. The content type that the client accepts is also specified as 'application\u002Fjson'.\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">request.Headers.TryAddWithoutValidation(\"Api-Key\", \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\");\nrequest.Headers.Accept.Add(new(\"application\u002Fjson\"));\n\u003C\u002Fpre>\n\n\u003Cp>A \u003Ccode class=\"language-csharp\">MultipartFormDataContent\u003C\u002Fcode> object is created to hold the file content, the current encryption password, and the new encryption password. The PDF file is read into a byte array and added to the multipart content with the appropriate content type. The password is also encoded into a byte array and added to the multipart content.\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">var multipartContent = new MultipartFormDataContent();\n...\nmultipartContent.Add(byteArrayOption, \"new_open_password\");\n\u003C\u002Fpre>\n\n\u003Cp>The multipart content is then assigned to the request, which is sent asynchronously. The response is read as a string and printed to the console.\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">request.Content = multipartContent;\nvar response = await httpClient.SendAsync(request);\n...\nConsole.WriteLine(apiResult);\n\u003C\u002Fpre>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>In this tutorial, we've learned how to use C# to send a multipart API call to pdfRest's Encrypt PDF API. This allows us to modify a PDF document's password, ensuring that only authorized individuals with the new password can open the document. By following this example, you can integrate PDF password modification into your own applications, adding an essential security feature for handling sensitive documents.\u003C\u002Fp>\n\n\u003Cp>For further exploration and to demo all of the pdfRest API Tools, visit the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. For more detailed information on the API, check out the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">API Reference Guide\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Cp>Note: This is an example of a multipart API call. If you are interested in code samples using JSON payloads, you can find them at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FDotNET\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Fencrypted-pdf.cs\">pdfRest C# JSON Payload Sample Code\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2024-03-07T18:08:59.000+00:00","2026-09-02T18:26:55.000+00:00","Learn how to change an existing password for a PDF to a new password using Encrypt PDF API Tool from pdfRest with C#","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-change-pdf-password-in-net-with-c\u002F#article\",\n      \"headline\": \"How to Change PDF Password in .NET with C#\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-change-pdf-password-in-net-with-c\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-change-pdf-password-in-net-with-c\u002F\",\n      \"datePublished\": \"2024-03-07T18:08:59.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:45.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to change an existing password for a PDF to a new password using Encrypt PDF API Tool from pdfRest with C#\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Encrypt PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fencrypt-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fencrypted-pdf API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fencrypt-pdf\"\n        }\n      ],\n      \"keywords\": \".NET, Encrypt PDF, Password, Security\",\n      \"dependencies\": \".NET, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Change PDF Password in .NET with C#\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-change-pdf-password-in-net-with-c\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3437,3438,3439,3440,3441,3442],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1997,"name":1998,"slug":1999,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2231,"name":2232,"slug":2233,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1989,"name":1990,"slug":1991,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1977,"name":1978,"slug":1979,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-change-pdf-password-in-net-with-c\u002F","How to Change PDF Password in .NET with C#, Tutorial | pdfRest",{"id":3447,"uuid":3448,"title":3449,"slug":3450,"html":3451,"comment_id":3447,"feature_image":48,"featured":284,"visibility":1257,"created_at":3452,"updated_at":3433,"published_at":3452,"custom_excerpt":3453,"codeinjection_head":3454,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3455,"primary_tag":3462,"url":3463,"excerpt":3453,"reading_time":295,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3464,"meta_description":3453,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65ea17e1533c9f26b943670d","197ca879-8259-48a1-a87d-786d23f58d24","How to Change PDF Password JavaScript in NodeJS","how-to-change-pdf-password-javascript-in-nodejs","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Change PDF Password with JavaScript?\u003C\u002Fh2>\n\n\u003Cp>The pdfRest \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fencrypt-pdf\u002F'>Encrypt PDF API Tool\u003C\u002Fa> empowers you to efficiently manage passwords for your existing PDFs. This tutorial dives into using JavaScript to send API calls and directly change a PDF's password through the Encrypt PDF functionality.\u003C\u002Fp>\n\n\u003Cp>Imagine you have a project containing highly sensitive documents, like marketing strategies or product roadmaps. These documents are already password-protected, but you need to update the original password with a stronger password, restricting access to authorized personnel only.\u003C\u002Fp>\n\n\u003Cp>By leveraging the Encrypt PDF API with JavaScript, you can programmatically update PDF passwords within your existing workflow. This eliminates the need to manually open and re-encrypt documents, saving time and minimizing the risk of errors.\u003C\u002Fp>\n\n\u003Ch2>Change PDF Password with JavaScript Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-javascript\">\u002F\u002F This request demonstrates how to apply 256-bit AES encryption with a 32-bit key. Encrypted PDFs cannot be viewed without first providing the open password.\nvar axios = require('axios');\nvar FormData = require('form-data');\nvar fs = require('fs');\n\n\u002F\u002F Create a new form data instance and append the file and parameters to it\nvar data = new FormData();\ndata.append('file', fs.createReadStream('\u002Fpath\u002Fto\u002Ffile'));\ndata.append('current_open_password', 'curr_example_pw');\ndata.append('new_open_password', 'new_example_pw');\ndata.append('output', 'pdfrest_encrypted_pdf');\n\n\u002F\u002F define configuration options for axios request\nvar config = {\n  method: 'post',\nmaxBodyLength: Infinity, \u002F\u002F set maximum length of the request body\n  url: 'https:\u002F\u002Fapi.pdfrest.com\u002Fencrypted-pdf',\n  headers: { \n    'Api-Key': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', \u002F\u002F Replace with your API key\n    ...data.getHeaders() \u002F\u002F set headers for the request\n  },\n  data : data \u002F\u002F set the data to be sent with the request\n};\n\n\u002F\u002F send request and handle response or error\naxios(config)\n.then(function (response) {\n  console.log(JSON.stringify(response.data));\n})\n.catch(function (error) {\n  console.log(error);\n});\n\n\u002F\u002F If you would like to download the file instead of getting the JSON response, please see the 'get-resource-id-endpoint.js' sample.\n\u003C\u002Fpre>\n\n\u003Cp>Refer to the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FJavaScript\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fencrypted-pdf.js\">source of the provided code\u003C\u002Fa> for more details.\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>The provided code snippet demonstrates how to encrypt a PDF file using the pdfRest API. Let's break down the key parts of this code:\u003C\u002Fp>\n\n\u003Cpre class=\"language-javascript\">var axios = require('axios');\nvar FormData = require('form-data');\nvar fs = require('fs');\n\u003C\u002Fpre>\n\n\u003Cp>These lines import the required modules: \u003Ccode>axios\u003C\u002Fcode> for making HTTP requests, \u003Ccode>FormData\u003C\u002Fcode> for building form data payloads, and \u003Ccode>fs\u003C\u002Fcode> for file system operations.\u003C\u002Fp>\n\n\u003Cpre class=\"language-javascript\">var data = new FormData();\ndata.append('file', fs.createReadStream('\u002Fpath\u002Fto\u002Ffile'));\ndata.append('current_open_password', 'curr_example_pw');\ndata.append('new_open_password', 'new_example_pw');\ndata.append('output', 'pdfrest_encrypted_pdf');\n\u003C\u002Fpre>\n\n\u003Cp>This section creates a new \u003Ccode>FormData\u003C\u002Fcode> object and appends the file to be encrypted, the current password, the new password for opening the encrypted PDF, and the desired output name for the encrypted file.\u003C\u002Fp>\n\n\u003Cpre class=\"language-javascript\">var config = {\n  method: 'post',\n  maxBodyLength: Infinity,\n  url: 'https:\u002F\u002Fapi.pdfrest.com\u002Fencrypted-pdf',\n  headers: { \n    'Api-Key': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',\n    ...data.getHeaders()\n  },\n  data : data\n};\n\u003C\u002Fpre>\n\n\u003Cp>Here, we define the configuration for the \u003Ccode>axios\u003C\u002Fcode> request, setting the HTTP method to POST, the request URL, and the headers including the API key. The \u003Ccode>maxBodyLength\u003C\u002Fcode> is set to Infinity to allow large files to be sent.\u003C\u002Fp>\n\n\u003Cpre class=\"language-javascript\">axios(config)\n.then(function (response) {\n  console.log(JSON.stringify(response.data));\n})\n.catch(function (error) {\n  console.log(error);\n});\n\u003C\u002Fpre>\n\n\u003Cp>Finally, the \u003Ccode>axios\u003C\u002Fcode> request is sent with the defined configuration. The response is logged to the console, or in the case of an error, the error is logged.\u003C\u002Fp>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>In this tutorial, we've demonstrated how to change a password for a PDF using the pdfRest API and JavaScript. By following the steps outlined above, you've learned how to send a multipart API call to secure a PDF document with an updated password. This ensures that the document's contents are protected and can only be accessed by individuals with the correct password.\u003C\u002Fp>\n\n\u003Cp>To explore and demo all of the pdfRest API Tools, visit the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. For a comprehensive understanding of the available endpoints and parameters, refer to the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">API Reference Guide\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Cp>Note: This is an example of a multipart API call. For code samples using JSON payloads, check out the examples at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FJavaScript\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Fencrypted-pdf.js\">this repository\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2024-03-07T19:39:13.000+00:00","Learn how to use JavaScript to reset a PDF password with the Encrypt PDF API Tool from pdfRest","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-change-pdf-password-javascript-in-nodejs\u002F#article\",\n      \"headline\": \"How to Change PDF Password JavaScript in NodeJS\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-change-pdf-password-javascript-in-nodejs\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-change-pdf-password-javascript-in-nodejs\u002F\",\n      \"datePublished\": \"2024-03-07T19:39:13.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:44.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to use JavaScript to reset a PDF password with the Encrypt PDF API Tool from pdfRest\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Encrypt PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fencrypt-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fencrypted-pdf API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fencrypt-pdf\"\n        }\n      ],\n      \"keywords\": \"Encrypt PDF, JavaScript, Password, Security\",\n      \"dependencies\": \"JavaScript, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Change PDF Password JavaScript in NodeJS\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-change-pdf-password-javascript-in-nodejs\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3456,3457,3458,3459,3460,3461],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1997,"name":1998,"slug":1999,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2223,"name":2224,"slug":2225,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1989,"name":1990,"slug":1991,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1977,"name":1978,"slug":1979,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-change-pdf-password-javascript-in-nodejs\u002F","How to Change PDF Password JavaScript in NodeJS, Tutorial | pdfRest",{"id":3466,"uuid":3467,"title":3468,"slug":3469,"html":3470,"comment_id":3466,"feature_image":48,"featured":284,"visibility":1257,"created_at":3471,"updated_at":3433,"published_at":3471,"custom_excerpt":3472,"codeinjection_head":3473,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3474,"primary_tag":3481,"url":3482,"excerpt":3472,"reading_time":295,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3483,"meta_description":3472,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65ea177f533c9f26b9436703","75e28815-5c91-42a2-abf3-714b1471a9bd","How to Change PDF Password with cURL","how-to-change-pdf-password-with-curl","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Change PDF Password with cURL?\u003C\u002Fh2>\n\n\u003Cp>The pdfRest \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fencrypt-pdf\u002F'>Encrypt PDF API Tool\u003C\u002Fa> is a powerful resource for developers looking to secure their PDF documents. By using this API, you can add and change PDF passwords to restrict access, ensuring that only individuals with the correct password can view or modify the document. This tutorial will guide you through the process of sending an API call to Encrypt PDF using cURL, a command-line tool used for making network requests.\u003C\u002Fp>\n\n\u003Cp>You might need to encrypt PDF documents to protect sensitive information such as financial reports, legal contracts, or personal data. Whether you’re sending a confidential document to a colleague or storing it in an insecure location, encryption helps prevent unauthorized access. By modifying a current password to a new passord, you can ensure only users with the new password will be able to open the file.  For instance, a healthcare provider might change a PDF password on patient records before sharing them with a new insurance company.\u003C\u002Fp>\n\n\u003Ch2>Change PDF Password with cURL Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-bash\">curl -X POST \"https:\u002F\u002Fapi.pdfrest.com\u002Fencrypted-pdf\" \\\n  -H \"Accept: application\u002Fjson\" \\\n  -H \"Content-Type: multipart\u002Fform-data\" \\\n  -H \"Api-Key: xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\" \\\n  -F \"file=@\u002Fpath\u002Fto\u002Ffile\" \\\n  -F \"output=example_out\" \\\n  -F \"current_open_password=password\" \\\n  -F \"new_open_password=newpassword\"\n\u003C\u002Fpre>\n\n\u003Cp>Reference to the provided code can be found at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FcURL\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fencrypted-pdf-change-password.sh\">GitHub\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>This cURL command is used to make a POST request to the Encrypt PDF endpoint. Let’s break down the components of the command:\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">-X POST \"https:\u002F\u002Fapi.pdfrest.com\u002Fencrypted-pdf\"\n\u003C\u002Fpre>\n\n\u003Cp>This specifies that you are making a POST request to the Encrypt PDF endpoint.\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">-H \"Accept: application\u002Fjson\"\n\u003C\u002Fpre>\n\n\u003Cp>This header indicates that the server’s response should be in JSON format.\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">-H \"Content-Type: multipart\u002Fform-data\"\n\u003C\u002Fpre>\n\n\u003Cp>This header tells the server that the request body contains form data.\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">-H \"Api-Key: xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"\n\u003C\u002Fpre>\n\n\u003Cp>Replace the placeholder with your actual API key to authenticate the request.\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">-F \"file=@\u002Fpath\u002Fto\u002Ffile\"\n\u003C\u002Fpre>\n\n\u003Cp>The '-F' flag is used to specify each field to be sent. This field contains the file path to the PDF you want to encrypt.\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">-F \"output=example_out\"\n\u003C\u002Fpre>\n\n\u003Cp>This field sets the name of the output file that will be created.\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">-F \"current_open_password=password\"\n\u003C\u002Fpre>\n\n\u003Cp>This field is the current password of the PDF if it is already protected.\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">-F \"new_open_password=newpassword\"\n\u003C\u002Fpre>\n\n\u003Cp>This field is the new password you want to set for the PDF file.\u003C\u002Fp>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>By following the steps above, you've learned how to change a PDF password using the pdfRest API and cURL. This provides an additional layer of security to your PDF files by requiring a new password to open them. You've also seen how to structure an API call with cURL and pass various parameters to customize the request.\u003C\u002Fp>\n\n\u003Cp>You are now ready to explore and demo all of the pdfRest API Tools in the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. For further information and a comprehensive guide to using the pdfRest API, refer to the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">API Reference Guide\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2024-03-07T19:37:35.000+00:00","Learn how to modify a PDF password with the pdfRest Encrypt PDF API Tool using cURL","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-change-pdf-password-with-curl\u002F#article\",\n      \"headline\": \"How to Change PDF Password with cURL\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-change-pdf-password-with-curl\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-change-pdf-password-with-curl\u002F\",\n      \"datePublished\": \"2024-03-07T19:37:35.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:44.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to modify a PDF password with the pdfRest Encrypt PDF API Tool using cURL\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Encrypt PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fencrypt-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fencrypted-pdf API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fencrypt-pdf\"\n        }\n      ],\n      \"keywords\": \"Encrypt PDF, Password, Security, cURL\",\n      \"dependencies\": \"cURL, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Change PDF Password with cURL\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-change-pdf-password-with-curl\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3475,3476,3477,3478,3479,3480],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1997,"name":1998,"slug":1999,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2239,"name":2240,"slug":2241,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1989,"name":1990,"slug":1991,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1977,"name":1978,"slug":1979,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-change-pdf-password-with-curl\u002F","How to Change PDF Password with cURL, Tutorial | pdfRest",{"id":3485,"uuid":3486,"title":3487,"slug":3488,"html":3489,"comment_id":3485,"feature_image":48,"featured":284,"visibility":1257,"created_at":3490,"updated_at":3491,"published_at":3490,"custom_excerpt":3492,"codeinjection_head":3493,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3494,"primary_tag":3501,"url":3502,"excerpt":3492,"reading_time":345,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3503,"meta_description":3492,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65ea1925533c9f26b943672b","474a1151-f8d5-4b6c-ad59-28b874027e7d","How to Change PDF Password with Java","how-to-change-pdf-password-with-java","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Change an Existing PDF Password with Java\u003C\u002Fh2>\n\n\u003Cp>Password changes are often part of a document's lifecycle rather than a one-time security step. A PDF may use an internal password while it moves through a review process and require a different password before it is delivered to a customer, partner, or archive. The pdfRest \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fencrypt-pdf\u002F\">Encrypt PDF API Tool\u003C\u002Fa> changes the open password through the \u003Ccode>\u002Fencrypted-pdf\u003C\u002Fcode> endpoint when the request supplies both the document's current password and the new password.\u003C\u002Fp>\n\n\u003Cp>pdfRest applies AES 256-bit encryption using Adobe PDF Library technology. By supplying the current open password and a new one, an application can rotate access credentials as part of a controlled document-delivery or retention workflow without bypassing the document's existing protection.\u003C\u002Fp>\n\n\u003Cp>For example, a Java-based benefits portal can receive an encrypted enrollment package from an internal system, replace its temporary processing password with a recipient-specific delivery password, and then store the new PDF for secure distribution. The password transition happens as part of the automated workflow, so staff do not need to open and resave sensitive documents manually.\u003C\u002Fp>\n\n\u003Cp>This example uses OkHttp to upload the protected PDF as multipart form data and send the current and replacement passwords in the same request.\u003C\u002Fp>\n\u003Ch2>Java Password-Change Code Example\u003C\u002Fh2>\n\n\u003Cp>Add OkHttp, java-dotenv, and JSON-java to the project. Set \u003Ccode>PDFREST_API_KEY\u003C\u002Fcode> in an environment variable or \u003Ccode>.env\u003C\u002Fcode> file, then replace the input path, current password, and new password placeholders. Do not commit passwords or API keys to source control.\u003C\u002Fp>\n\n\u003Cpre class=\"language-java\">import io.github.cdimascio.dotenv.Dotenv;\nimport java.io.File;\nimport java.io.IOException;\nimport java.util.concurrent.TimeUnit;\nimport okhttp3.*;\nimport org.json.JSONObject;\n\npublic class EncryptedPDF {\n\n  \u002F\u002F By default, we use the US-based API service. This is the primary endpoint for global use.\n  private static final String API_URL = \"https:\u002F\u002Fapi.pdfrest.com\";\n\n  \u002F\u002F For GDPR compliance and enhanced performance for European users, you can switch to the EU-based\n  \u002F\u002F service by commenting out the URL above and uncommenting the URL below.\n  \u002F\u002F For more information visit https:\u002F\u002Fpdfrest.com\u002Fpricing#how-do-eu-gdpr-api-calls-work\n  \u002F\u002F private static final String API_URL = \"https:\u002F\u002Feu-api.pdfrest.com\";\n\n  \u002F\u002F Specify the path to your file here, or as the first argument when running the program.\n  private static final String DEFAULT_FILE_PATH = \"\u002Fpath\u002Fto\u002Ffile.pdf\";\n\n  \u002F\u002F Specify your API key here, or in the environment variable PDFREST_API_KEY.\n  \u002F\u002F You can also put the environment variable in a .env file.\n  private static final String DEFAULT_API_KEY = \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\";\n\n  public static void main(String[] args) {\n    final boolean DELETE_SENSITIVE_FILES = false; \u002F\u002F toggle deletion (default: false)\n    File inputFile;\n    if (args.length > 0) {\n      inputFile = new File(args[0]);\n    } else {\n      inputFile = new File(DEFAULT_FILE_PATH);\n    }\n\n    final Dotenv dotenv = Dotenv.configure().ignoreIfMalformed().ignoreIfMissing().load();\n\n    final RequestBody inputFileRequestBody =\n        RequestBody.create(inputFile, MediaType.parse(\"application\u002Fpdf\"));\n    RequestBody requestBody =\n        new MultipartBody.Builder()\n            .setType(MultipartBody.FORM)\n            .addFormDataPart(\"file\", inputFile.getName(), inputFileRequestBody)\n            .addFormDataPart(\"current_open_password\", \"current-password\")\n            .addFormDataPart(\"new_open_password\", \"new-password\")\n            .build();\n    Request request =\n        new Request.Builder()\n            .header(\"Api-Key\", dotenv.get(\"PDFREST_API_KEY\", DEFAULT_API_KEY))\n            .url(API_URL + \"\u002Fencrypted-pdf\")\n            .post(requestBody)\n            .build();\n    try {\n      OkHttpClient client =\n          new OkHttpClient().newBuilder().readTimeout(60, TimeUnit.SECONDS).build();\n      Response response = client.newCall(request).execute();\n      System.out.println(\"Result code \" + response.code());\n      if (response.body() != null) {\n        String respStr = response.body().string();\n        System.out.println(prettyJson(respStr));\n\n        \u002F\u002F All files uploaded or generated are automatically deleted based on the\n        \u002F\u002F File Retention Period as shown on https:\u002F\u002Fpdfrest.com\u002Fpricing.\n        \u002F\u002F For immediate deletion of files, particularly when sensitive data\n        \u002F\u002F is involved, an explicit delete call can be made to the API.\n        \u002F\u002F\n        \u002F\u002F Deletes all files in the workflow, including outputs. Save all desired files before\n        \u002F\u002F enabling this step.\n\n        if (DELETE_SENSITIVE_FILES) {\n          org.json.JSONObject parsed = new org.json.JSONObject(respStr);\n          String inputId = parsed.getString(\"inputId\");\n          String outputId = parsed.getString(\"outputId\");\n          String deleteJson = String.format(\"{ \\\"ids\\\":\\\"%s, %s\\\" }\", inputId, outputId);\n          RequestBody deleteBody =\n              RequestBody.create(deleteJson, MediaType.parse(\"application\u002Fjson\"));\n          Request deleteRequest =\n              new Request.Builder()\n                  .header(\"Api-Key\", dotenv.get(\"PDFREST_API_KEY\", DEFAULT_API_KEY))\n                  .url(API_URL + \"\u002Fdelete\")\n                  .post(deleteBody)\n                  .build();\n          try (Response deleteResp =\n              new OkHttpClient()\n                  .newBuilder()\n                  .readTimeout(60, TimeUnit.SECONDS)\n                  .build()\n                  .newCall(deleteRequest)\n                  .execute()) {\n            if (deleteResp.body() != null) {\n              System.out.println(prettyJson(deleteResp.body().string()));\n            }\n          }\n        }\n      }\n    } catch (IOException e) {\n      throw new RuntimeException(e);\n    }\n  }\n\n  private static String prettyJson(String json) {\n    \u002F\u002F https:\u002F\u002Fstackoverflow.com\u002Fa\u002F9583835\u002F11996393\n    return new JSONObject(json).toString(4);\n  }\n}\n\u003C\u002Fpre>\n\n\u003Cp>Source: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FJava\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002FEncryptedPDF.java\">pdfRest Encrypt PDF multipart Java sample\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Supply the Current and New Passwords\u003C\u002Fh2>\n\n\u003Cp>The multipart \u003Ccode>file\u003C\u002Fcode> part contains the encrypted PDF. The \u003Ccode>current_open_password\u003C\u002Fcode> field proves that the application is authorized to open and re-encrypt it, while \u003Ccode>new_open_password\u003C\u002Fcode> sets the password that will be required for the output. The optional \u003Ccode>output\u003C\u002Fcode> field assigns a predictable base filename to the generated PDF.\u003C\u002Fp>\n\n\u003Cp>An open password controls access to the document. A permissions password controls whether users can modify restrictions such as printing or editing. If the input PDF has relevant edit restrictions, the request may also need \u003Ccode>current_permissions_password\u003C\u002Fcode>. Keep these values distinct and obtain them through secure application input or a secret-management process rather than hard-coding them.\u003C\u002Fp>\n\n\u003Cp>The sample defaults to the US Cloud API and exposes the EU base URL as a configuration option. Keeping the base URL outside the request logic lets deployment environments select the appropriate processing region without changing the workflow.\u003C\u002Fp>\n\n\u003Ch2>Use the Result in a Larger Workflow\u003C\u002Fh2>\n\n\u003Cp>A successful response identifies the newly encrypted PDF. Download its output URL when the application needs to store the file, or pass its resource ID directly to another compatible pdfRest API Tool. Resource-ID chaining avoids downloading and re-uploading intermediate files when the password change is followed by another operation.\u003C\u002Fp>\n\n\u003Cp>Check the HTTP status before parsing success fields, and treat an incorrect current password as a request failure rather than retrying indefinitely. Production code should also use appropriate connection and read timeouts, handle network failures separately from API validation errors, and avoid writing passwords or sensitive response data to logs.\u003C\u002Fp>\n\n\u003Cp>If the PDF has already been uploaded, the request can be sent as JSON with its resource ID instead of another multipart upload. See the official \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FJava\u002FEndpoint%20Examples\u002FJSON%20Payload\u002FEncryptedPDF.java\">Encrypt PDF JSON-payload Java sample\u003C\u002Fa> for that request pattern. Use \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa> to configure password changes, and consult the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fencrypt-pdf\">Encrypt PDF API reference\u003C\u002Fa> for the current fields and response schema.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2024-03-07T19:44:37.000+00:00","2026-09-22T19:02:59.000+00:00","Learn how to change a PDF password with pdfRest Encrypt PDF API Tool using Java","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-change-pdf-password-with-java\u002F#article\",\n      \"headline\": \"How to Change PDF Password with Java\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-change-pdf-password-with-java\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-change-pdf-password-with-java\u002F\",\n      \"datePublished\": \"2024-03-07T19:44:37.000Z\",\n      \"dateModified\": \"2026-09-22T00:00:00.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to change a PDF password with pdfRest Encrypt PDF API Tool using Java\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Encrypt PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fencrypt-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fencrypted-pdf API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fencrypt-pdf\"\n        }\n      ],\n      \"keywords\": \"Encrypt PDF, Java, Password, Security\",\n      \"dependencies\": \"Java, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Change PDF Password with Java\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-change-pdf-password-with-java\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3495,3496,3497,3498,3499,3500],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1997,"name":1998,"slug":1999,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2235,"name":2236,"slug":2237,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1989,"name":1990,"slug":1991,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1977,"name":1978,"slug":1979,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-change-pdf-password-with-java\u002F","How to Change PDF Password with Java, Tutorial | pdfRest",{"id":3505,"uuid":3506,"title":3507,"slug":3508,"html":3509,"comment_id":3505,"feature_image":48,"featured":284,"visibility":1257,"created_at":3510,"updated_at":3511,"published_at":3510,"custom_excerpt":3512,"codeinjection_head":3513,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3514,"primary_tag":3521,"url":3522,"excerpt":3512,"reading_time":295,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3523,"meta_description":3512,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65ea182c533c9f26b9436717","68307065-21e5-416c-b21d-21c08425c84e","How to Change PDF Password with PHP","how-to-change-pdf-password-with-php","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Change PDF Password with PHP?\u003C\u002Fh2>\n\n\u003Cp>The pdfRest \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fencrypt-pdf\u002F\">Encrypt PDF API Tool\u003C\u002Fa> lets you update passwords for PDF documents directly with PHP. This eliminates the hassle of manually re-encrypting documents and ensures both enhanced security and streamlined collaboration.\u003C\u002Fp>\n\n\u003Cp>Whether you're strengthening passwords, granting access to new team members, or complying with regulations, the Encrypt PDF API automates the process, saving you time and minimizing errors.\u003C\u002Fp>\n\n\u003Ch2>Change PDF Password with PHP Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-php\">require 'vendor\u002Fautoload.php';\n\nuse GuzzleHttp\\Client;\nuse GuzzleHttp\\Psr7\\Request;\nuse GuzzleHttp\\Psr7\\Utils;\n\n$client = new Client();\n\n$headers = [\n  'Api-Key' => 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'\n];\n\n$options = [\n  'multipart' => [\n    [\n      'name' => 'file',\n      'contents' => Utils::tryFopen('\u002Fpath\u002Fto\u002Ffile', 'r'),\n      'filename' => '\u002Fpath\u002Fto\u002Ffile',\n      'headers' => [\n        'Content-Type' => '\u003Ccontent-type header=\"\">'\n      ]\n    ],\n    [\n      'name' => 'current_open_password',\n      'contents' => 'curr_example_pw'\n    ],\n    [\n      'name' => 'new_open_password',\n      'contents' => 'new_example_pw'\n    ],\n    [\n      'name' => 'output',\n      'contents' => 'pdfrest_encrypted_pdf'\n    ]\n  ]\n];\n\n$request = new Request('POST', 'https:\u002F\u002Fapi.pdfrest.com\u002Fencrypted-pdf', $headers);\n\n$res = $client->sendAsync($request, $options)->wait();\n\necho $res->getBody();\n\u003C\u002Fcontent-type>\u003C\u002Fpre>\n\n\u003Cp>Source of the provided code: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FPHP\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fencrypted-pdf.php\">GitHub\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>The PHP code provided above is designed to make an API call to the Encrypt PDF endpoint of the pdfRest API. Let's break down the key components of this code:\u003C\u002Fp>\n\n\u003Cpre class=\"language-php\">require 'vendor\u002Fautoload.php';\nuse GuzzleHttp\\Client;\nuse GuzzleHttp\\Psr7\\Request;\nuse GuzzleHttp\\Psr7\\Utils;\n\u003C\u002Fpre>\n\n\u003Cp>This section includes the necessary libraries and sets up the namespaces. Guzzle HTTP client is used for making HTTP requests.\u003C\u002Fp>\n\n\u003Cpre class=\"language-php\">$headers = [\n  'Api-Key' => 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'\n];\n\u003C\u002Fpre>\n\n\u003Cp>The \u003Ccode>$headers\u003C\u002Fcode> array contains the API key required for authentication with the pdfRest API.\u003C\u002Fp>\n\n\u003Cpre class=\"language-php\">'options' => [\n  'multipart' => [\n    \u002F\u002F ...multipart form data...\n  ]\n];\n\u003C\u002Fpre>\n\n\u003Cp>The \u003Ccode>$options\u003C\u002Fcode> array is where the multipart form data is defined. This includes the file to encrypt, the current password, the new password, and the output file name.\u003C\u002Fp>\n\n\u003Cpre class=\"language-php\">$request = new Request('POST', 'https:\u002F\u002Fapi.pdfrest.com\u002Fencrypted-pdf', $headers);\n\u003C\u002Fpre>\n\n\u003Cp>A new HTTP POST request is created with the API endpoint and the headers.\u003C\u002Fp>\n\n\u003Cpre class=\"language-php\">$res = $client->sendAsync($request, $options)->wait();\necho $res->getBody();\n\u003C\u002Fpre>\n\n\u003Cp>The request is sent asynchronously, and the script waits for the response. The response body, which contains the encrypted PDF content, is then outputted.\u003C\u002Fp>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>In this tutorial, we've successfully made a call to the Encrypt PDF endpoint using the pdfRest API with PHP. By doing so, we've updated a PDF document by setting a new password, ensuring that only authorized individuals with the password can access the document's contents.\u003C\u002Fp>\n\n\u003Cp>Demo all of the pdfRest API Tools in the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa> and refer to the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">API Reference Guide\u003C\u002Fa> for further exploration of the capabilities offered by pdfRest.\u003C\u002Fp>\n\n\u003Cp>Note: This is an example of a multipart API call. Code samples using JSON payloads can be found at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FPHP\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Fencrypted-pdf.php\">GitHub\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2024-03-07T19:40:28.000+00:00","2026-09-10T20:19:08.000+00:00","Learn how to change a PDF password using pdfRest Encrypt PDF API Tool with PHP","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-change-pdf-password-with-php\u002F#article\",\n      \"headline\": \"How to Change PDF Password with PHP\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-change-pdf-password-with-php\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-change-pdf-password-with-php\u002F\",\n      \"datePublished\": \"2024-03-07T19:40:28.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:44.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to change a PDF password using pdfRest Encrypt PDF API Tool with PHP\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Encrypt PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fencrypt-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fencrypted-pdf API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fencrypt-pdf\"\n        }\n      ],\n      \"keywords\": \"Encrypt PDF, PHP, Password, Security\",\n      \"dependencies\": \"PHP, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Change PDF Password with PHP\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-change-pdf-password-with-php\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3515,3516,3517,3518,3519,3520],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1997,"name":1998,"slug":1999,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2227,"name":2228,"slug":2229,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1989,"name":1990,"slug":1991,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1977,"name":1978,"slug":1979,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-change-pdf-password-with-php\u002F","How to Change PDF Password with PHP, Tutorial | pdfRest",{"id":3525,"uuid":3526,"title":3527,"slug":3528,"html":3529,"comment_id":3525,"feature_image":48,"featured":284,"visibility":1257,"created_at":3530,"updated_at":3531,"published_at":3530,"custom_excerpt":3532,"codeinjection_head":3533,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3534,"primary_tag":3541,"url":3542,"excerpt":3532,"reading_time":295,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3543,"meta_description":3532,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65ea1872533c9f26b9436721","e32b8e03-5216-4dd9-a6bc-c82fb7beebd6","How to Change PDF Password with Python","how-to-change-pdf-password-with-python","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Change PDF Password with Python?\u003C\u002Fh2>\n\n\u003Cp>The pdfRest \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fencrypt-pdf\u002F'>Encrypt PDF API Tool\u003C\u002Fa> empowers you to efficiently update passwords on existing PDFs directly with Python.  This eliminates the need for manual re-encryption, saving you time and minimizing errors.\u003C\u002Fp>\n\n\u003Cp>Strengthen passwords, grant access to new team members, or comply with data security regulations – the Encrypt PDF API automates the process, ensuring both enhanced security and streamlined collaboration within your Python workflows.\u003C\u002Fp>\n\n\u003Ch2>Change PDF Password with Python Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-python\">from requests_toolbelt import MultipartEncoder\nimport requests\nimport json\n\nencrypted_pdf_endpoint_url = 'https:\u002F\u002Fapi.pdfrest.com\u002Fencrypted-pdf'\n\n# The \u002Fencrypted-pdf endpoint can take a single PDF file or id as input.\n# This sample demonstrates encryption of a PDF with the password 'password'.\nmp_encoder_encryptedPdf = MultipartEncoder(\n    fields={\n        'file': ('file_name.pdf', open('\u002Fpath\u002Fto\u002Ffile', 'rb'), 'application\u002Fpdf'),\n        'output' : 'example_encryptedPdf_out',\n        'current_open_password': 'currpassword',\n        'new_open_password': 'newpassword',\n    }\n)\n\n# Let's set the headers that the encrypted-pdf endpoint expects.\n# Since MultipartEncoder is used, the 'Content-Type' header gets set to 'multipart\u002Fform-data' via the content_type attribute below.\nheaders = {\n    'Accept': 'application\u002Fjson',\n    'Content-Type': mp_encoder_encryptedPdf.content_type,\n    'Api-Key': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' # place your api key here\n}\n\nprint(\"Sending POST request to encrypted-pdf endpoint...\")\nresponse = requests.post(encrypted_pdf_endpoint_url, data=mp_encoder_encryptedPdf, headers=headers)\n\nprint(\"Response status code: \" + str(response.status_code))\n\nif response.ok:\n    response_json = response.json()\n    print(json.dumps(response_json, indent = 2))\nelse:\n    print(response.text)\n\n# If you would like to download the file instead of getting the JSON response, please see the 'get-resource-id-endpoint.py' sample.\n\u003C\u002Fpre>\n\n\u003Cp>The provided code is sourced from the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FPython\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fencrypted-pdf.py\">pdf-rest-api-samples repository on GitHub\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>The code begins by importing the necessary libraries: \u003Ccode class=\"language-python\">MultipartEncoder\u003C\u002Fcode> from \u003Ccode class=\"language-python\">requests_toolbelt\u003C\u002Fcode>, \u003Ccode class=\"language-python\">requests\u003C\u002Fcode>, and \u003Ccode class=\"language-python\">json\u003C\u002Fcode>. The \u003Ccode class=\"language-python\">MultipartEncoder\u003C\u002Fcode> is used for creating multipart\u002Fform-data payloads, which is the required format for file uploads.\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">from requests_toolbelt import MultipartEncoder\nimport requests\nimport json\n\u003C\u002Fpre>\n\n\u003Cp>The endpoint URL is defined as a string, representing the API endpoint to which the POST request will be sent.\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">encrypted_pdf_endpoint_url = 'https:\u002F\u002Fapi.pdfrest.com\u002Fencrypted-pdf'\n\u003C\u002Fpre>\n\n\u003Cp>The \u003Ccode class=\"language-python\">MultipartEncoder\u003C\u002Fcode> is then configured with the fields needed for the request: the file to encrypt, the desired output name, the current password, and the new password for opening the PDF.\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">mp_encoder_encryptedPdf = MultipartEncoder(\n    fields={\n        'file': ('file_name.pdf', open('\u002Fpath\u002Fto\u002Ffile', 'rb'), 'application\u002Fpdf'),\n        'output' : 'example_encryptedPdf_out',\n        'current_open_password': 'currpassword',\n        'new_open_password': 'newpassword',\n    }\n)\n\u003C\u002Fpre>\n\n\u003Cp>Headers are set up to include the expected 'Accept' and 'Content-Type', as well as the 'Api-Key' which should be replaced with your actual API key.\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">headers = {\n    'Accept': 'application\u002Fjson',\n    'Content-Type': mp_encoder_encryptedPdf.content_type,\n    'Api-Key': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' # place your api key here\n}\n\u003C\u002Fpre>\n\n\u003Cp>The POST request is sent using the \u003Ccode class=\"language-python\">requests.post\u003C\u002Fcode> method with the specified URL, data payload, and headers. The response is then checked for success, and the JSON response is printed if available, otherwise the error text is displayed.\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">response = requests.post(encrypted_pdf_endpoint_url, data=mp_encoder_encryptedPdf, headers=headers)\n\u003C\u002Fpre>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>By following the above steps, you have learned how to make an API call to change a PDF password using Python. This process can be integrated into larger workflows to automate the protection of sensitive documents. To explore and demo all of the pdfRest API Tools, visit the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. For further information and detailed API documentation, refer to the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">API Reference Guide\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Cp>Note: This is an example of a multipart API call. Code samples using JSON payloads for the same operation can be found at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FPython\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Fencrypted-pdf.py\">pdf-rest-api-samples\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2024-03-07T19:41:38.000+00:00","2026-09-02T18:26:57.000+00:00","Learn how to replace a PDF password with a new one using pdfRest Encrypt PDF API Tool with Python","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-change-pdf-password-with-python\u002F#article\",\n      \"headline\": \"How to Change PDF Password with Python\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-change-pdf-password-with-python\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-change-pdf-password-with-python\u002F\",\n      \"datePublished\": \"2024-03-07T19:41:38.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:44.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to replace a PDF password with a new one using pdfRest Encrypt PDF API Tool with Python\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Encrypt PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fencrypt-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fencrypted-pdf API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fencrypt-pdf\"\n        }\n      ],\n      \"keywords\": \"Encrypt PDF, Password, Python, Security\",\n      \"dependencies\": \"Python, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Change PDF Password with Python\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-change-pdf-password-with-python\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3535,3536,3537,3538,3539,3540],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1997,"name":1998,"slug":1999,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2219,"name":2220,"slug":2221,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1989,"name":1990,"slug":1991,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1977,"name":1978,"slug":1979,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-change-pdf-password-with-python\u002F","How to Change PDF Password with Python, Tutorial | pdfRest",{"id":3545,"uuid":3546,"title":3547,"slug":3548,"html":3549,"comment_id":3545,"feature_image":48,"featured":284,"visibility":1257,"created_at":3550,"updated_at":3531,"published_at":3550,"custom_excerpt":3551,"codeinjection_head":3552,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3553,"primary_tag":3558,"url":3559,"excerpt":3551,"reading_time":295,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3560,"meta_description":3551,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65ce7da6533c9f26b9436416","818da684-083e-4920-9a01-aec146e5470a","How to Check PDF Conditions and Metadata in .NET with C#","how-to-check-pdf-conditions-and-metadata-in-net-with-c","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Use Query PDF with C#?\u003C\u002Fh2>\n\n\u003Cp>The pdfRest \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fquery-pdf\u002F'>Query PDF API Tool\u003C\u002Fa> is a powerful resource that enables developers to retrieve various pieces of information from a PDF document. By sending an API call to Query PDF with C#, you can extract metadata such as the title, page count, document language, and more without having to manually open the document or write complex parsing logic.\u003C\u002Fp>\n\u003Cp>This can be particularly useful in content management systems, where you might need to catalog and organize large numbers of PDF files based on their metadata. For instance, a user might use Query PDF to quickly scan a repository of PDFs to identify and categorize them by author or creation date.\u003C\u002Fp>\n\n\u003Ch2>Query PDF with C# Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-csharp\">using System.Text;\n\nusing (var httpClient = new HttpClient { BaseAddress = new Uri(\"https:\u002F\u002Fapi.pdfrest.com\") })\n{\n    using (var request = new HttpRequestMessage(HttpMethod.Post, \"pdf-info\"))\n    {\n        request.Headers.TryAddWithoutValidation(\"Api-Key\", \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\");\n        request.Headers.Accept.Add(new(\"application\u002Fjson\"));\n        var multipartContent = new MultipartFormDataContent();\n\n        var byteArray = File.ReadAllBytes(\"\u002Fpath\u002Fto\u002Ffile.pdf\");\n        var byteAryContent = new ByteArrayContent(byteArray);\n        multipartContent.Add(byteAryContent, \"file\", \"file_name.pdf\");\n        byteAryContent.Headers.TryAddWithoutValidation(\"Content-Type\", \"application\u002Fpdf\");\n\n        var byteArrayOption = new ByteArrayContent(Encoding.UTF8.GetBytes(\"title, page_count, doc_language, tagged, image_only, author, creation_date, modified_date, producer\"));\n        multipartContent.Add(byteArrayOption, \"queries\");\n\n        request.Content = multipartContent;\n        var response = await httpClient.SendAsync(request);\n\n        var apiResult = await response.Content.ReadAsStringAsync();\n\n        Console.WriteLine(\"API response received.\");\n        Console.WriteLine(apiResult);\n    }\n}\n\u003C\u002Fpre>\n\n\u003Cp>Reference: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FDotNET\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fpdf-info.cs\">pdf-rest-api-samples on GitHub\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>The code above is a C# example of how to use the pdfRest API to query information from a PDF document. Let's break it down:\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">var httpClient = new HttpClient { BaseAddress = new Uri(\"https:\u002F\u002Fapi.pdfrest.com\") };\n\u003C\u002Fpre>\n\n\u003Cp>This line initializes a new \u003Ccode>HttpClient\u003C\u002Fcode> instance with the base address set to the pdfRest API endpoint.\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">request.Headers.TryAddWithoutValidation(\"Api-Key\", \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\");\n\u003C\u002Fpre>\n\n\u003Cp>This line adds your API key to the request headers. Replace the placeholder with your actual pdfRest API key.\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">var byteArray = File.ReadAllBytes(\"\u002Fpath\u002Fto\u002Ffile.pdf\");\nvar byteAryContent = new ByteArrayContent(byteArray);\nmultipartContent.Add(byteAryContent, \"file\", \"file_name.pdf\");\nbyteAryContent.Headers.TryAddWithoutValidation(\"Content-Type\", \"application\u002Fpdf\");\n\u003C\u002Fpre>\n\n\u003Cp>These lines read the PDF file as a byte array, create a new \u003Ccode>ByteArrayContent\u003C\u002Fcode> with it, and add it to the multipart form data content. The \u003Ccode>\"file\"\u003C\u002Fcode> and \u003Ccode>\"file_name\"\u003C\u002Fcode> parameters are the form field name and the file name sent in the request, respectively.\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">var byteArrayOption = new ByteArrayContent(Encoding.UTF8.GetBytes(\"title, page_count, doc_language, tagged, image_only, author, creation_date, modified_date, producer\"));\nmultipartContent.Add(byteArrayOption, \"queries\");\n\u003C\u002Fpre>\n\n\u003Cp>This snippet creates a byte array content with the specified queries and adds it to the multipart content. These queries determine what information you want to retrieve from the PDF.\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">var response = await httpClient.SendAsync(request);\nvar apiResult = await response.Content.ReadAsStringAsync();\n\u003C\u002Fpre>\n\n\u003Cp>Finally, the request is sent asynchronously, and the response is read as a string, which contains the queried PDF information.\u003C\u002Fp>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>In this tutorial, we've accomplished sending a multipart API call to pdfRest's Query PDF endpoint using C#. This allows us to programmatically retrieve specific information from a PDF document. Exploring all of the pdfRest API Tools in the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>\u003C\u002Fa> is a great next step. You can also refer to the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">API Reference documentation\u003C\u002Fa> for more details on the available endpoints and their functionalities.\u003C\u002Fp>\n\n\u003Cp>Note: This is an example of a multipart API call. Code samples using JSON payloads can be found at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FDotNET\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Fpdf-info.cs\">pdf-rest-api-samples on GitHub\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2024-02-15T21:09:58.000+00:00","Learn how to check PDF files for conditional information and metadata using pdfRest Query PDF API Tool with C#.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-check-pdf-conditions-and-metadata-in-net-with-c\u002F#article\",\n      \"headline\": \"How to Check PDF Conditions and Metadata in .NET with C#\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-check-pdf-conditions-and-metadata-in-net-with-c\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-check-pdf-conditions-and-metadata-in-net-with-c\u002F\",\n      \"datePublished\": \"2024-02-15T21:09:58.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:47.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to check PDF files for conditional information and metadata using pdfRest Query PDF API Tool with C#.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Query PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fquery-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fpdf-info API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fquery-pdf\"\n        }\n      ],\n      \"keywords\": \".NET, Query PDF\",\n      \"dependencies\": \".NET, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Check PDF Conditions and Metadata in .NET with C#\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-check-pdf-conditions-and-metadata-in-net-with-c\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3554,3555,3556,3557],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1352,"name":1353,"slug":1354,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2231,"name":2232,"slug":2233,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-check-pdf-conditions-and-metadata-in-net-with-c\u002F","How to Check PDF Conditions and Metadata in .NET with C#, Tutorial | pdfRest",{"id":3562,"uuid":3563,"title":3564,"slug":3565,"html":3566,"comment_id":3562,"feature_image":48,"featured":284,"visibility":1257,"created_at":3567,"updated_at":3568,"published_at":3567,"custom_excerpt":3569,"codeinjection_head":3570,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3571,"primary_tag":3576,"url":3577,"excerpt":3569,"reading_time":295,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3578,"meta_description":3569,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65f08a40533c9f26b94369df","252ced6c-3cfe-452f-9de6-9688c8cb4600","How to Check PDF Conditions and Metadata with cURL","how-to-check-pdf-conditions-and-metadata-with-curl","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Use Query PDF with cURL?\u003C\u002Fh2>\n\n\u003Cp>The pdfRest \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fquery-pdf\u002F'>Query PDF API Tool\u003C\u002Fa> is a powerful resource for extracting information from PDF documents. This tool allows users to query various properties of a PDF, such as the title, page count, document language, and author, among others. In this tutorial, we will demonstrate how to send an API call to the Query PDF endpoint using cURL, a versatile command-line tool used for making HTTP requests. cURL is widely used for its simplicity and broad support across various platforms, making it an ideal choice for interacting with web APIs like pdfRest.\u003C\u002Fp>\n\n\u003Cp>Imagine you are working on an application that needs to organize a large number of PDF documents based on their metadata. You might need to categorize them by author, count the number of pages, or filter them by language. Using the Query PDF API, you can programmatically retrieve this information and automate the organization process. This can save a significant amount of time and effort, especially when dealing with a large volume of documents.\u003C\u002Fp>\n\n\u003Ch2>Query PDF with cURL Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-bash\">curl -X POST \"https:\u002F\u002Fapi.pdfrest.com\u002Fpdf-info\" \\\n  -H \"Accept: application\u002Fjson\" \\\n  -H \"Content-Type: multipart\u002Fform-data\" \\\n  -H \"Api-Key: xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\" \\\n  -F \"file=@\u002Fpath\u002Fto\u002Ffile\" \\\n  -F \"queries=title,page_count,doc_language,author\"\n\u003C\u002Fpre>\n\n\u003Cp>Reference to the provided code: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FcURL\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fpdf-info.sh\">pdf-rest-api-samples\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>This cURL command sends a POST request to the Query PDF endpoint. Let's break down each part of the command:\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">-X POST \"https:\u002F\u002Fapi.pdfrest.com\u002Fpdf-info\"\u003C\u002Fpre>\n\n\u003Cp>This specifies the request method (POST) and the URL of the API endpoint.\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">-H \"Accept: application\u002Fjson\"\u003C\u002Fpre>\n\n\u003Cp>This header tells the server that the client expects a response in JSON format.\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">-H \"Content-Type: multipart\u002Fform-data\"\u003C\u002Fpre>\n\n\u003Cp>This header indicates that the request body will be sent as multipart\u002Fform-data, which is necessary for uploading files.\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">-H \"Api-Key: xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"\u003C\u002Fpre>\n\n\u003Cp>This header includes the API key required for authentication with the pdfRest API.\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">-F \"file=@\u002Fpath\u002Fto\u002Ffile\"\u003C\u002Fpre>\n\n\u003Cp>The -F flag is used to specify each field that will be sent as part of the multipart\u002Fform-data request. In this case, it's used to upload the PDF file from the specified path.\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">-F \"queries=title,page_count,doc_language,author\"\u003C\u002Fpre>\n\n\u003Cp>This field specifies the information to query from the PDF. The API will return the title, page count, document language, and author of the PDF.\u003C\u002Fp>\n\n\u003Cp>For more details on the parameters and how to use the Query PDF API, you can refer to the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fquery-pdf\u002F\">pdfRest Cloud API Reference Guide\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>By following the steps above, you have learned how to make a multipart API call to the Query PDF endpoint using cURL. This enables you to programmatically retrieve valuable metadata from PDF documents. With the knowledge gained, you can integrate this functionality into your applications or workflows, enhancing your ability to manage and utilize PDF files.\u003C\u002Fp>\n\n\u003Cp>To further explore what you can do with pdfRest, consider trying out all of the API Tools in the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. For a comprehensive understanding of the full capabilities of the pdfRest API, refer to the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">API Reference Guide\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Cp>Note: This is an example of a multipart API call. Code samples using JSON payloads can be found at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FcURL\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Fpdf-info.sh\">pdf-rest-api-samples JSON Payload\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2024-03-12T17:00:48.000+00:00","2026-09-02T18:26:58.000+00:00","Learn how to check conditional information about a PDF and get metadata using Query PDF API Tool from pdfRest with cURL","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-check-pdf-conditions-and-metadata-with-curl\u002F#article\",\n      \"headline\": \"How to Check PDF Conditions and Metadata with cURL\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-check-pdf-conditions-and-metadata-with-curl\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-check-pdf-conditions-and-metadata-with-curl\u002F\",\n      \"datePublished\": \"2024-03-12T17:00:48.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:40.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to check conditional information about a PDF and get metadata using Query PDF API Tool from pdfRest with cURL\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Query PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fquery-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fpdf-info API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fquery-pdf\"\n        }\n      ],\n      \"keywords\": \"Query PDF, cURL\",\n      \"dependencies\": \"cURL, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Check PDF Conditions and Metadata with cURL\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-check-pdf-conditions-and-metadata-with-curl\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3572,3573,3574,3575],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1352,"name":1353,"slug":1354,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2239,"name":2240,"slug":2241,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-check-pdf-conditions-and-metadata-with-curl\u002F","How to Check PDF Conditions and Metadata with cURL, Tutorial | pdfRest",{"id":3580,"uuid":3581,"title":3582,"slug":3583,"html":3584,"comment_id":3580,"feature_image":48,"featured":284,"visibility":1257,"created_at":3077,"updated_at":3568,"published_at":3585,"custom_excerpt":3586,"codeinjection_head":3587,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3588,"primary_tag":3593,"url":3594,"excerpt":3586,"reading_time":345,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3595,"meta_description":3586,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"6a970c55533c9f26b943b489","5a464251-8c03-46ce-b774-415ce89011df","How to Check PDF Conditions and Metadata with Java","how-to-check-pdf-conditions-and-metadata-with-java","\n\u003C!--kg-card-begin: html-->\n\u003Cp>Learn how to check PDF conditions and metadata with Java and the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fquery-pdf\u002F\">Query PDF API Tool\u003C\u002Fa>. The request combines several property names in one \u003Ccode>queries\u003C\u002Fcode> value and reads the resulting document information from JSON. We'll move from input and authentication setup through the request and returned data involved when you check PDF conditions and metadata.\u003C\u002Fp>\n\n\u003Ch2>Why Check PDF Conditions and Metadata with Java?\u003C\u002Fh2>\n\n\u003Cp>An ingestion service can inspect page count, language, title, author, encryption, or conformance information before routing a document. That prevents later operations from relying on assumptions about an unknown file.\u003C\u002Fp>\n\n\u003Cp>The comma-separated \u003Ccode>queries\u003C\u002Fcode> field names the properties returned by Query PDF. The sample requests title, page count, document language, and author in one call.\u003C\u002Fp>\n\n\u003Ch2>Java Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-java\">import io.github.cdimascio.dotenv.Dotenv;\nimport java.io.File;\nimport java.io.IOException;\nimport java.util.concurrent.TimeUnit;\nimport okhttp3.*;\nimport org.json.JSONObject;\n\npublic class PDFInfo {\n\n  \u002F\u002F By default, we use the US-based API service. This is the primary endpoint for global use.\n  private static final String API_URL = \"https:\u002F\u002Fapi.pdfrest.com\";\n\n  \u002F\u002F For GDPR compliance and enhanced performance for European users, you can switch to the EU-based\n  \u002F\u002F service by commenting out the URL above and uncommenting the URL below.\n  \u002F\u002F For more information visit https:\u002F\u002Fpdfrest.com\u002Fpricing#how-do-eu-gdpr-api-calls-work\n  \u002F\u002F private static final String API_URL = \"https:\u002F\u002Feu-api.pdfrest.com\";\n\n  \u002F\u002F Specify the path to your file here, or as the first argument when running the program.\n  private static final String DEFAULT_FILE_PATH = \"\u002Fpath\u002Fto\u002Ffile.pdf\";\n\n  \u002F\u002F Specify your API key here, or in the environment variable PDFREST_API_KEY.\n  \u002F\u002F You can also put the environment variable in a .env file.\n  private static final String DEFAULT_API_KEY = \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\";\n\n  public static void main(String[] args) {\n    File inputFile;\n    if (args.length > 0) {\n      inputFile = new File(args[0]);\n    } else {\n      inputFile = new File(DEFAULT_FILE_PATH);\n    }\n\n    final Dotenv dotenv = Dotenv.configure().ignoreIfMalformed().ignoreIfMissing().load();\n\n    final RequestBody inputFileRequestBody =\n        RequestBody.create(inputFile, MediaType.parse(\"application\u002Fpdf\"));\n    RequestBody requestBody =\n        new MultipartBody.Builder()\n            .setType(MultipartBody.FORM)\n            .addFormDataPart(\"file\", inputFile.getName(), inputFileRequestBody)\n            .addFormDataPart(\"queries\", \"title, page_count, doc_language, author\")\n            .build();\n    Request request =\n        new Request.Builder()\n            .header(\"Api-Key\", dotenv.get(\"PDFREST_API_KEY\", DEFAULT_API_KEY))\n            .url(API_URL + \"\u002Fpdf-info\")\n            .post(requestBody)\n            .build();\n    try {\n      OkHttpClient client =\n          new OkHttpClient().newBuilder().readTimeout(60, TimeUnit.SECONDS).build();\n\n      Response response = client.newCall(request).execute();\n      System.out.println(\"Result code \" + response.code());\n      if (response.body() != null) {\n        System.out.println(prettyJson(response.body().string()));\n      }\n    } catch (IOException e) {\n      throw new RuntimeException(e);\n    }\n  }\n\n  private static String prettyJson(String json) {\n    \u002F\u002F https:\u002F\u002Fstackoverflow.com\u002Fa\u002F9583835\u002F11996393\n    return new JSONObject(json).toString(4);\n  }\n}\u003C\u002Fpre>\n\n\u003Cp>Source: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FJava\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002FPDFInfo.java\">Java sample on GitHub\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Ch3>Load the Java HTTP and JSON dependencies\u003C\u002Fh3>\n\n\u003Cpre class=\"language-java\">import io.github.cdimascio.dotenv.Dotenv;\nimport java.io.File;\nimport java.io.IOException;\nimport java.util.concurrent.TimeUnit;\nimport okhttp3.*;\nimport org.json.JSONObject;\u003C\u002Fpre>\n\n\u003Cp>The Java setup relies on OkHttp to send the call, dotenv to resolve credentials, and \u003Ccode>org.json\u003C\u002Fcode> to inspect or format JSON.\u003C\u002Fp>\n\n\u003Ch3>Choose the input and load credentials\u003C\u002Fh3>\n\n\u003Cpre class=\"language-java\">\u002F\u002F service by commenting out the URL above and uncommenting the URL below.\n  \u002F\u002F For more information visit https:\u002F\u002Fpdfrest.com\u002Fpricing#how-do-eu-gdpr-api-calls-work\n  \u002F\u002F private static final String API_URL = \"https:\u002F\u002Feu-api.pdfrest.com\";\n\n  \u002F\u002F Specify the path to your file here, or as the first argument when running the program.\n  private static final String DEFAULT_FILE_PATH = \"\u002Fpath\u002Fto\u002Ffile.pdf\";\n\n  \u002F\u002F Specify your API key here, or in the environment variable PDFREST_API_KEY.\n  \u002F\u002F You can also put the environment variable in a .env file.\n  private static final String DEFAULT_API_KEY = \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\";\n\n  public static void main(String[] args) {\n    File inputFile;\n    if (args.length > 0) {\n      inputFile = new File(args[0]);\n    } else {\n      inputFile = new File(DEFAULT_FILE_PATH);\n    }\n\n    final Dotenv dotenv = Dotenv.configure().ignoreIfMalformed().ignoreIfMissing().load();\n\n    final RequestBody inputFileRequestBody =\u003C\u002Fpre>\n\n\u003Cp>The input setup supports quick local testing while allowing normal callers to provide their own path and \u003Ccode>PDFREST_API_KEY\u003C\u002Fcode>.\u003C\u002Fp>\n\n\u003Ch3>Build the multipart request body\u003C\u002Fh3>\n\n\u003Cpre class=\"language-java\">final RequestBody inputFileRequestBody =\n        RequestBody.create(inputFile, MediaType.parse(\"application\u002Fpdf\"));\n    RequestBody requestBody =\n        new MultipartBody.Builder()\n            .setType(MultipartBody.FORM)\n            .addFormDataPart(\"file\", inputFile.getName(), inputFileRequestBody)\n            .addFormDataPart(\"queries\", \"title, page_count, doc_language, author\")\n            .build();\n    Request request =\n        new Request.Builder()\n            .header(\"Api-Key\", dotenv.get(\"PDFREST_API_KEY\", DEFAULT_API_KEY))\n            .url(API_URL + \"\u002Fpdf-info\")\n            .post(requestBody)\n            .build();\n    try {\n      OkHttpClient client =\n          new OkHttpClient().newBuilder().readTimeout(60, TimeUnit.SECONDS).build();\u003C\u002Fpre>\n\n\u003Cp>The comma-separated \u003Ccode>queries\u003C\u002Fcode> field names the properties returned by Query PDF. The sample requests title, page count, document language, and author in one call. The OkHttp body collects the named parts before OkHttp calculates the final multipart header and body encoding.\u003C\u002Fp>\n\n\u003Ch3>Send the request to pdfRest\u003C\u002Fh3>\n\n\u003Cpre class=\"language-java\">.build();\n    Request request =\n        new Request.Builder()\n            .header(\"Api-Key\", dotenv.get(\"PDFREST_API_KEY\", DEFAULT_API_KEY))\n            .url(API_URL + \"\u002Fpdf-info\")\n            .post(requestBody)\n            .build();\n    try {\n      OkHttpClient client =\n          new OkHttpClient().newBuilder().readTimeout(60, TimeUnit.SECONDS).build();\u003C\u002Fpre>\n\n\u003Cp>This POST request joins authentication, routing, and payload in one place while leaving regional service selection in the API URL constant.\u003C\u002Fp>\n\n\u003Ch3>Read the API response\u003C\u002Fh3>\n\n\u003Cpre class=\"language-java\">OkHttpClient client =\n          new OkHttpClient().newBuilder().readTimeout(60, TimeUnit.SECONDS).build();\n\n      Response response = client.newCall(request).execute();\n      System.out.println(\"Result code \" + response.code());\n      if (response.body() != null) {\n        System.out.println(prettyJson(response.body().string()));\n      }\n    } catch (IOException e) {\n      throw new RuntimeException(e);\n    }\n  }\n\n  private static String prettyJson(String json) {\n    \u002F\u002F https:\u002F\u002Fstackoverflow.com\u002Fa\u002F9583835\u002F11996393\n    return new JSONObject(json).toString(4);\u003C\u002Fpre>\n\n\u003Cp>The JSON response reports the requested document properties and whether every query was processed, giving the caller data it can use for routing decisions.\u003C\u002Fp>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>Together, we stepped through the Java request needed to check PDF conditions and metadata. With that foundation, you can use query results to drive conditional OCR, form handling, archival conversion, validation, or rejection workflows.\u003C\u002Fp>\n\n\u003Cp>As you build this into a larger workflow, request only properties that affect the next processing decision, and check whether all queries were completed before relying on the values. Password protection or malformed input can limit what the service can inspect, so route incomplete results to an explicit exception path.\u003C\u002Fp>\n\n\u003Cp>Try the Check PDF Conditions and Metadata operation with representative files in \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. Review the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fquery-pdf\u002F\">Query PDF API Tool documentation\u003C\u002Fa> for supported values and production considerations.\u003C\u002Fp>\n\n\u003Cp>Note: The Check PDF Conditions and Metadata example above uses multipart form data; for the resource-ID form of this operation, review how the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FJava\u002FEndpoint%20Examples\u002FJSON%20Payload\u002FPDFInfo.java\">JSON payload example\u003C\u002Fa> constructs the request.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2026-09-01T21:57:32.000+00:00","Query PDF metadata and document conditions with Java before selecting later processing steps.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-check-pdf-conditions-and-metadata-with-java\u002F#article\",\n      \"headline\": \"How to Check PDF Conditions and Metadata with Java\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-check-pdf-conditions-and-metadata-with-java\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-check-pdf-conditions-and-metadata-with-java\u002F\",\n      \"datePublished\": \"2026-09-01T21:57:32.000Z\",\n      \"dateModified\": \"2026-09-01T21:57:32.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Query PDF metadata and document conditions with Java before selecting later processing steps.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Query PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fquery-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fpdf-info API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fquery-pdf\"\n        }\n      ],\n      \"keywords\": \"Java, Query PDF\",\n      \"dependencies\": \"Java, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Check PDF Conditions and Metadata with Java\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-check-pdf-conditions-and-metadata-with-java\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3589,3590,3591,3592],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1352,"name":1353,"slug":1354,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2235,"name":2236,"slug":2237,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-check-pdf-conditions-and-metadata-with-java\u002F","Check PDF Conditions and Metadata with Java | pdfRest",{"id":3597,"uuid":3598,"title":3599,"slug":3600,"html":3601,"comment_id":3597,"feature_image":48,"featured":284,"visibility":1257,"created_at":3602,"updated_at":3603,"published_at":3602,"custom_excerpt":3604,"codeinjection_head":3605,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3606,"primary_tag":3611,"url":3612,"excerpt":3604,"reading_time":295,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3613,"meta_description":3604,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65ce7e2a533c9f26b9436420","d401b523-3025-41f1-a9b2-e8e439894fbe","How to Check PDF Conditions and Metadata with JavaScript in NodeJS","how-to-check-pdf-conditions-and-metadata-with-javascript-in-nodejs","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Use Query PDF with JavaScript?\u003C\u002Fh2>\n\n\u003Cp>The pdfRest \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fquery-pdf\u002F'>Query PDF API Tool\u003C\u002Fa> is designed to extract detailed information about a PDF document, such as metadata, page count, whether it contains annotations, signatures, JavaScript, and much more. This tutorial will show you how to send an API call to Query PDF using JavaScript.\u003C\u002Fp>\n\u003Cp>This is particularly useful, for instance, when you need to automate the process of validating PDF files for certain criteria before they are processed or distributed in a system.\u003C\u002Fp>\n\n\u003Ch2>Query PDF with JavaScript Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-javascript\">\u002F\u002F This request demonstrates how to get detailed information about a PDF document and its contents to assess the current state of the file and drive conditional processing.\nvar axios = require('axios');\nvar FormData = require('form-data');\nvar fs = require('fs');\n\n\u002F\u002F Create a new form data instance and append the PDF file and parameters to it\nvar data = new FormData();\ndata.append('file', fs.createReadStream('\u002Fpath\u002Fto\u002Ffile'));\ndata.append('queries', 'tagged,image_only,title,subject,author,producer,creator,creation_date,modified_date,keywords,doc_language,page_count,contains_annotations,contains_signature,pdf_version,file_size,filename,restrict_permissions_set,contains_xfa,contains_acroforms,contains_javascript,contains_transparency,contains_embedded_file,uses_embedded_fonts,uses_nonembedded_fonts,pdfa,requires_password_to_open');\n\n\u002F\u002F define configuration options for axios request\nvar config = {\n  method: 'post',\n  maxBodyLength: Infinity, \u002F\u002F set maximum length of the request body\n  url: 'https:\u002F\u002Fapi.pdfrest.com\u002Fpdf-info', \n  headers: { \n    'Api-Key': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', \u002F\u002F Replace with your API key\n    ...data.getHeaders() \u002F\u002F set headers for the request\n  },\n  data : data \u002F\u002F set the data to be sent with the request\n};\n\n\u002F\u002F send request and handle response or error\naxios(config)\n.then(function (response) {\n  console.log(JSON.stringify(response.data));\n})\n.catch(function (error) {\n  console.log(error); \n});\n\n\u002F\u002F If you would like to download the file instead of getting the JSON response, please see the 'get-resource-id-endpoint.js' sample.\n\u003C\u002Fpre>\n\n\u003Cp>Source: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FJavaScript\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fpdf-info.js\">pdf-rest-api-samples\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>The code starts by requiring necessary modules: axios for making HTTP requests, FormData for constructing form data to send with the request, and fs for file system operations.\u003C\u002Fp>\n\n\u003Cpre class=\"language-javascript\">var axios = require('axios');\nvar FormData = require('form-data');\nvar fs = require('fs');\u003C\u002Fpre>\n\n\u003Cp>Next, it creates a new FormData instance and appends the PDF file and a string of queries to it. Each query specifies a piece of information you want to retrieve from the PDF.\u003C\u002Fp>\n\n\u003Cpre class=\"language-javascript\">var data = new FormData();\ndata.append('file', fs.createReadStream('\u002Fpath\u002Fto\u002Ffile'));\ndata.append('queries', '...');\u003C\u002Fpre>\n\n\u003Cp>The configuration object for the axios request is defined with the HTTP method, URL, headers (including the API key), and the data payload.\u003C\u002Fp>\n\n\u003Cpre class=\"language-javascript\">var config = {\n  method: 'post',\n  maxBodyLength: Infinity,\n  url: 'https:\u002F\u002Fapi.pdfrest.com\u002Fpdf-info',\n  headers: {\n    'Api-Key': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',\n    ...data.getHeaders()\n  },\n  data : data\n};\u003C\u002Fpre>\n\n\u003Cp>Finally, the axios request is sent, and the response or error is handled accordingly.\u003C\u002Fp>\n\n\u003Cpre class=\"language-javascript\">axios(config)\n.then(function (response) {\n  console.log(JSON.stringify(response.data));\n})\n.catch(function (error) {\n  console.log(error); \n});\u003C\u002Fpre>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>By following the steps above, you have learned how to use JavaScript to call the pdfRest Query PDF API to retrieve detailed information about a PDF document. This can be the foundation for more complex workflows involving PDF processing and analysis.\u003C\u002Fp>\n\n\u003Cp>Feel free to demo all of the pdfRest API Tools in the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa> and refer to the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">API Reference documentation\u003C\u002Fa> for further exploration.\u003C\u002Fp>\n\n\u003Cp>Note: This is an example of a multipart API call. Code samples using JSON payloads can be found at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FJavaScript\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Fpdf-info.js\">pdf-rest-api-samples\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2024-02-15T21:12:10.000+00:00","2026-09-02T18:27:00.000+00:00","Learn how to use pdfRest Query PDF API Tool with JavaScript to check PDF files for conditional information and metadata. ","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-check-pdf-conditions-and-metadata-with-javascript-in-nodejs\u002F#article\",\n      \"headline\": \"How to Check PDF Conditions and Metadata with JavaScript in NodeJS\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-check-pdf-conditions-and-metadata-with-javascript-in-nodejs\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-check-pdf-conditions-and-metadata-with-javascript-in-nodejs\u002F\",\n      \"datePublished\": \"2024-02-15T21:12:10.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:47.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to use pdfRest Query PDF API Tool with JavaScript to check PDF files for conditional information and metadata. \",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Query PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fquery-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fpdf-info API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fquery-pdf\"\n        }\n      ],\n      \"keywords\": \"JavaScript, Query PDF\",\n      \"dependencies\": \"JavaScript, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Check PDF Conditions and Metadata with JavaScript in NodeJS\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-check-pdf-conditions-and-metadata-with-javascript-in-nodejs\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3607,3608,3609,3610],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1352,"name":1353,"slug":1354,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2223,"name":2224,"slug":2225,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-check-pdf-conditions-and-metadata-with-javascript-in-nodejs\u002F","How to Check PDF Conditions and Metadata with JavaScript in NodeJS, Tutorial | pdfRest",{"id":3615,"uuid":3616,"title":3617,"slug":3618,"html":3619,"comment_id":3615,"feature_image":48,"featured":284,"visibility":1257,"created_at":3620,"updated_at":3603,"published_at":3621,"custom_excerpt":3622,"codeinjection_head":3623,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3624,"primary_tag":3629,"url":3630,"excerpt":3622,"reading_time":295,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3631,"meta_description":3622,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65ce7eb4533c9f26b943642a","002f2129-fa15-4aa7-9210-2d838484a037","How to Check PDF Conditions and Metadata with PHP","how-to-check-pdf-conditions-and-metadata-with-php","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Use Query PDF with PHP?\u003C\u002Fh2>\n\n\u003Cp>The pdfRest \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fquery-pdf\u002F'>Query PDF API Tool\u003C\u002Fa> is a powerful resource for extracting information from PDF files. It allows users to query various properties of a PDF, such as metadata, page count, whether it contains annotations, and much more. This tutorial will guide you through the process of making an API call to the Query PDF endpoint using PHP.\u003C\u002Fp>\n\u003Cp>One example for using Query PDF is to automate the process of cataloging a large number of PDFs based on their metadata or to verify compliance with PDF standards in a batch of documents.\u003C\u002Fp>\n\n\u003Ch2>Query PDF with PHP Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-python\">\nrequire 'vendor\u002Fautoload.php';\n\nuse GuzzleHttp\\Client;\nuse GuzzleHttp\\Psr7\\Request;\nuse GuzzleHttp\\Psr7\\Utils;\n\n$client = new Client();\n\n$headers = [\n  'Api-Key' => 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'\n];\n\n$options = [\n  'multipart' => [\n    [\n      'name' => 'file',\n      'contents' => Utils::tryFopen('\u002Fpath\u002Fto\u002Ffile', 'r'),\n      'filename' => '\u002Fpath\u002Fto\u002Ffile',\n      'headers' => [\n        'Content-Type' => '\u003CContent-type header>'\n      ]\n    ],\n    [\n      'name' => 'queries',\n      'contents' => 'tagged,image_only,title,subject,author,producer,creator,creation_date,modified_date,keywords,doc_language,page_count,contains_annotations,contains_signature,pdf_version,file_size,filename,restrict_permissions_set,contains_xfa,contains_acroforms,contains_javascript,contains_transparency,contains_embedded_file,uses_embedded_fonts,uses_nonembedded_fonts,pdfa,requires_password_to_open,pdfua_claim,pdfe_claim,pdfx_claim'\n    ]\n  ]\n];\n\n$request = new Request('POST', 'https:\u002F\u002Fapi.pdfrest.com\u002Fpdf-info', $headers);\n\n$res = $client->sendAsync($request, $options)->wait();\n\necho $res->getBody();\n\n\u003C\u002Fcontent-type>\u003C\u002Fpre>\n\n\u003Cp>Source of the provided code: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FPHP\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fpdf-info.php\">GitHub\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>The code above is a PHP script that uses the Guzzle HTTP client to send a multipart\u002Fform-data POST request to the pdfRest API. Here's how each part of the code works:\u003C\u002Fp>\n\n\u003Cul>\n  \u003Cli>\u003Cstrong>Autoload and Namespaces:\u003C\u002Fstrong> The script begins by including the Composer autoload file and importing necessary classes from the Guzzle HTTP client library.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Client Initialization:\u003C\u002Fstrong> A new Guzzle HTTP client instance is created.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Headers:\u003C\u002Fstrong> The 'Api-Key' is set in the headers for authentication with the pdfRest API.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Options:\u003C\u002Fstrong> The 'multipart' array contains the details of the file to be uploaded and the queries to be performed. The 'contents' key under 'file' uses Utils::tryFopen to open the file for reading.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Request:\u003C\u002Fstrong> A new HTTP POST request is created with the API endpoint URL and the headers.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Response:\u003C\u002Fstrong> The request is sent asynchronously, and the script waits for the response. The response body is then echoed, which contains the results of the queries.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Cp>The 'queries' field contains a comma-separated list of properties to query about the PDF. These properties are explained in the pdfRest Cloud API Reference Guide.\u003C\u002Fp>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>In this tutorial, we've learned how to send a multipart\u002Fform-data POST request to the pdfRest API to query information about a PDF file using PHP. By executing the code, you can retrieve detailed information about a PDF document, which can be used for various purposes such as document management, compliance checks, or content analysis.\u003C\u002Fp>\n\n\u003Cp>I encourage you to demo all of the pdfRest API Tools in the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa> and refer to the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">API Reference documentation\u003C\u002Fa> for more details and capabilities.\u003C\u002Fp>\n\n\u003Cp>Note: This is an example of a multipart API call. Code samples using JSON payloads can be found at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FPHP\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Fpdf-info.php\">GitHub\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2024-02-15T21:14:28.000+00:00","2024-02-15T21:14:29.000+00:00","Learn how to use pdfRest Query PDF API Tool to check PDF files for conditional information and metadata with PHP.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-check-pdf-conditions-and-metadata-with-php\u002F#article\",\n      \"headline\": \"How to Check PDF Conditions and Metadata with PHP\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-check-pdf-conditions-and-metadata-with-php\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-check-pdf-conditions-and-metadata-with-php\u002F\",\n      \"datePublished\": \"2024-02-15T21:14:29.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:46.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to use pdfRest Query PDF API Tool to check PDF files for conditional information and metadata with PHP.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Query PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fquery-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fpdf-info API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fquery-pdf\"\n        }\n      ],\n      \"keywords\": \"PHP, Query PDF\",\n      \"dependencies\": \"PHP, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Check PDF Conditions and Metadata with PHP\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-check-pdf-conditions-and-metadata-with-php\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3625,3626,3627,3628],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1352,"name":1353,"slug":1354,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2227,"name":2228,"slug":2229,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-check-pdf-conditions-and-metadata-with-php\u002F","How to Check PDF Conditions and Metadata with PHP, Tutorial | pdfRest",{"id":3633,"uuid":3634,"title":3635,"slug":3636,"html":3637,"comment_id":3633,"feature_image":48,"featured":284,"visibility":1257,"created_at":3638,"updated_at":3639,"published_at":3638,"custom_excerpt":3640,"codeinjection_head":3641,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3642,"primary_tag":3647,"url":3648,"excerpt":3640,"reading_time":295,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3649,"meta_description":3640,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65ce7eff533c9f26b9436434","01d331db-ac51-4757-b650-91b677631e26","How to Check PDF Conditions and Metadata with Python","how-to-check-pdf-conditions-and-metadata-with-python","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Use Query PDF with Python?\u003C\u002Fh2>\n\n\u003Cp>The pdfRest \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fquery-pdf\u002F'>Query PDF API Tool\u003C\u002Fa> is a powerful resource for developers who need to extract information from PDF files programmatically. This tutorial will guide you through the process of sending an API call to the Query PDF endpoint using Python.\u003C\u002Fp>\n\u003Cp>This can be particularly useful in scenarios such as automating document processing systems, where you might need to retrieve metadata like the title, page count, or author of a PDF document before taking further action.\u003C\u002Fp>\n\n\u003Ch2>Query PDF with Python Code Example\u003C\u002Fh2>\n\n\u003Cp>The following code is a complete example of how to call the Query PDF API endpoint with Python. This code is sourced from the pdfRest API samples available on GitHub at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FPython\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fpdf-info.py\">pdf-rest-api-samples\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">from requests_toolbelt import MultipartEncoder\nimport requests\nimport json\n\npdf_info_endpoint_url = 'https:\u002F\u002Fapi.pdfrest.com\u002Fpdf-info'\n\n# The \u002Fpdf-info endpoint can take a single PDF file or id as input.\n#This sample demonstrates querying the title, page count, document language and author\nmp_encoder_pdfInfo = MultipartEncoder(\n    fields={\n        'file': ('file_name.pdf', open('\u002Fpath\u002Fto\u002Ffile', 'rb'), 'application\u002Fpdf'),\n        'queries': 'title,page_count,doc_language,author',\n    }\n)\n\n# Let's set the headers that the pdf-info endpoint expects.\n# Since MultipartEncoder is used, the 'Content-Type' header gets set to 'multipart\u002Fform-data' via the content_type attribute below.\nheaders = {\n    'Accept': 'application\u002Fjson',\n    'Content-Type': mp_encoder_pdfInfo.content_type,\n    'Api-Key': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' # place your api key here\n}\n\nprint(\"Sending POST request to pdf-info endpoint...\")\nresponse = requests.post(pdf_info_endpoint_url, data=mp_encoder_pdfInfo, headers=headers)\n\nprint(\"Response status code: \" + str(response.status_code))\n\nif response.ok:\n    response_json = response.json()\n    print(json.dumps(response_json, indent = 2))\nelse:\n    print(response.text)\n\u003C\u002Fpre>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>The code snippet above is broken down into several parts:\u003C\u002Fp>\n\n\u003Cul>\n\u003Cli>\u003Cstrong>MultipartEncoder:\u003C\u002Fstrong> This is used to encode the files and fields for a multipart\u002Fform-data POST request.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>fields:\u003C\u002Fstrong> Here we define the data to be sent. 'file' is the PDF file to be queried and 'queries' is a comma-separated list of the PDF attributes we want to retrieve.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>headers:\u003C\u002Fstrong> These are the HTTP headers sent with the request. The 'Content-Type' is set automatically by the MultipartEncoder. 'Api-Key' should be replaced with your actual API key.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>requests.post:\u003C\u002Fstrong> This line sends the POST request to the pdf-info endpoint with the data and headers.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>response handling:\u003C\u002Fstrong> After the request, the response is checked. If successful, the JSON response is printed; otherwise, the error text is shown.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>By following the steps above, you've learned how to use Python to call the Query PDF API endpoint to retrieve information from a PDF file. You can now integrate this functionality into your applications, enabling you to automate and streamline processes that involve PDFs.\u003C\u002Fp>\n\n\u003Cp>We encourage you to demo all of the pdfRest API Tools in the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa> and refer to the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">API Reference documentation\u003C\u002Fa> for more details on what you can achieve with pdfRest.\u003C\u002Fp>\n\n\u003Cp>Note: This is an example of a multipart API call. Code samples using JSON payloads can be found at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FPython\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Fpdf-info.py\">JSON Payload Examples\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2024-02-15T21:15:43.000+00:00","2026-09-02T18:27:01.000+00:00","Learn how to check PDF conditional information and metadata using pdfRest Query PDF API Tool with Python.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-check-pdf-conditions-and-metadata-with-python\u002F#article\",\n      \"headline\": \"How to Check PDF Conditions and Metadata with Python\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-check-pdf-conditions-and-metadata-with-python\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-check-pdf-conditions-and-metadata-with-python\u002F\",\n      \"datePublished\": \"2024-02-15T21:15:43.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:46.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to check PDF conditional information and metadata using pdfRest Query PDF API Tool with Python.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Query PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fquery-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fpdf-info API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fquery-pdf\"\n        }\n      ],\n      \"keywords\": \"Python, Query PDF\",\n      \"dependencies\": \"Python, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Check PDF Conditions and Metadata with Python\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-check-pdf-conditions-and-metadata-with-python\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3643,3644,3645,3646],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1352,"name":1353,"slug":1354,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2219,"name":2220,"slug":2221,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-check-pdf-conditions-and-metadata-with-python\u002F","How to Check PDF Conditions and Metadata with Python, Tutorial | pdfRest",{"id":3651,"uuid":3652,"title":3653,"slug":3654,"html":3655,"comment_id":3651,"feature_image":48,"featured":284,"visibility":1257,"created_at":3656,"updated_at":3639,"published_at":3657,"custom_excerpt":3658,"codeinjection_head":3659,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3660,"primary_tag":3667,"url":3668,"excerpt":3658,"reading_time":419,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3669,"meta_description":3658,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"68dc2407533c9f26b943a691","b8a62228-0dcb-45c0-a6ae-24528624c2c3","How to Choose the Right PDF Summary Format Style","how-to-choose-the-right-pdf-summary-format-style","\u003Cp>The pdfRest \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fsummarize-pdf\u002F\">Summarize PDF API\u003C\u002Fa> is an AI-powered REST API tool that processes your PDF documents and generates high-quality, structured summaries. By leveraging \u003Cstrong>OpenAI technology\u003C\u002Fstrong>, the tool extracts and condenses key information based on your precise instructions. A critical part of this control is the \u003Ccode>summary_format\u003C\u002Fcode> parameter, which determines how the final output is styled and presented.\u003C\u002Fp>\n\u003Cp>Choosing the right format is essential, as it instantly tailors the summary for a specific use case—whether you need an executive brief, a set of instructions, or a list of action items.\u003C\u002Fp>\n\u003Chr>\n\u003Ch2 id=\"the-summarize-pdf-api-tool-an-overview\">The Summarize PDF API Tool: An Overview\u003C\u002Fh2>\n\u003Cp>The \u003Cstrong>Summarize PDF API\u003C\u002Fstrong> converts your PDF document's content into structured \u003Cstrong>Markdown\u003C\u002Fstrong>, which is then fed to an AI model to produce a customizable summary. Key benefits include the ability to set a target word count, specify a page range for analysis, and select plain text or markdown output format.\u003C\u002Fp>\n\u003Cp>The \u003Cstrong>\u003Ccode>summary_format\u003C\u002Fcode>\u003C\u002Fstrong> parameter allows you to define the structure of the output. Below is a breakdown of the available formats and how to use them to get the most value from your summarization workflow.\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth style=\"text-align:left\">Format Parameter\u003C\u002Fth>\n\u003Cth style=\"text-align:left\">Description\u003C\u002Fth>\n\u003Cth style=\"text-align:left\">Recommended Use Case\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd style=\"text-align:left\">\u003Ccode>overview\u003C\u002Fcode> (Default)\u003C\u002Ftd>\n\u003Ctd style=\"text-align:left\">A concise, high-level paragraph capturing the main ideas and overall theme.\u003C\u002Ftd>\n\u003Ctd style=\"text-align:left\">Executive Briefings, Quick Comprehension\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd style=\"text-align:left\">\u003Ccode>highlight\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd style=\"text-align:left\">Key points or the most important information extracted and emphasized.\u003C\u002Ftd>\n\u003Ctd style=\"text-align:left\">Meeting Recaps, Stakeholder Updates\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd style=\"text-align:left\">\u003Ccode>abstract\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd style=\"text-align:left\">A brief, formal summary outlining the document's purpose, methods, and key findings.\u003C\u002Ftd>\n\u003Ctd style=\"text-align:left\">Research Papers, Scientific Reports\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd style=\"text-align:left\">\u003Ccode>bullet_points\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd style=\"text-align:left\">Short, organized statements using bullet points for general clarity and easy reading.\u003C\u002Ftd>\n\u003Ctd style=\"text-align:left\">Project Overviews, General Takeaways\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd style=\"text-align:left\">\u003Ccode>numbered_list\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd style=\"text-align:left\">Ordered items for step-by-step processes or ranked priorities.\u003C\u002Ftd>\n\u003Ctd style=\"text-align:left\">Instructions, Process Flows\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd style=\"text-align:left\">\u003Ccode>table_of_contents\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd style=\"text-align:left\">A navigational list of document sections with titles and brief summaries.\u003C\u002Ftd>\n\u003Ctd style=\"text-align:left\">Manuals, Long Reports\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd style=\"text-align:left\">\u003Ccode>outline\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd style=\"text-align:left\">A structured summary that hierarchically organizes main and supporting points.\u003C\u002Ftd>\n\u003Ctd style=\"text-align:left\">Planning Documents, Lecture Notes\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd style=\"text-align:left\">\u003Ccode>question_answer\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd style=\"text-align:left\">Information structured as questions and corresponding answers for maximum clarity.\u003C\u002Ftd>\n\u003Ctd style=\"text-align:left\">FAQ Pages, Customer Support\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd style=\"text-align:left\">\u003Ccode>action_items\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd style=\"text-align:left\">A list of specific tasks or next steps derived from the discussion or document.\u003C\u002Ftd>\n\u003Ctd style=\"text-align:left\">Meeting Follow-ups, Project Management\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Chr>\n\u003Ch2 id=\"pdf-summarization-format-examples-in-markdown\">PDF Summarization Format Examples in Markdown\u003C\u002Fh2>\n\u003Cp>The following examples demonstrate how the AI structures the same source content (a document about the Portable Document Format) for nine distinct \u003Ccode>summary_format\u003C\u002Fcode> styles. The output is presented in \u003Cstrong>Markdown\u003C\u002Fstrong> syntax, which is the default for the \u003Ccode>output_format\u003C\u002Fcode> parameter.\u003C\u002Fp>\n\u003Ch3 id=\"1-overview-default\">1. Overview (Default)\u003C\u002Fh3>\n\u003Cp>The \u003Ccode>overview\u003C\u002Fcode> format is best for generating a brief, natural language paragraph that quickly informs the reader of the document's main topics and conclusion.\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-markdown\"># High-level overview of PDF (ISO 32000) article \n\nPDF, or Portable Document Format, is a standardized file format created by Adobe in 1992 to preserve fixed-layout documents across software, hardware, and operating systems. Based on PostScript, a PDF file contains text, fonts, vector\u002Fraster graphics, and embedded content, enabling consistent viewing. The format evolved into ISO 32000 (open standard) in 2008 and 2020 updates (PDF 2.0, ISO 32000-2). It supports annotations, forms, encryption, digital signatures, metadata, accessibility, multimedia, and variants like PDF\u002FA\u002FX\u002FUA. The architecture uses a COS object model, cross-reference tables, and content streams, with both embedded and external content options. It’s widely used in printing and digital document workflows.\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3 id=\"2-highlight\">2. Highlight\u003C\u002Fh3>\n\u003Cp>The \u003Ccode>highlight\u003C\u002Fcode> format extracts only the most salient points, perfect for quick digests or creating bulleted takeaways for stakeholders.\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-markdown\"># Summary \n\n- PDF (Portable Document Format) is an ISO 32000 standard, developed by Adobe in 1992 to preserve fixed-layout documents across software, hardware, and OS. \n- Based on PostScript; encapsulates text, fonts, vector\u002Fraster graphics, and metadata within a single file. \n- Open standard since 2008; latest widely referenced is PDF 2.0 (ISO 32000-2:2020); maintained by ISO TC 171 SC 2 WG8. \n- Features: text, images, interactive elements, layers (OCGs), encryption\u002Fsignatures, metadata (XMP), accessibility (PDF\u002FUA), and forms (AcroForms, XFA—latter deprecated). \n- Common content types include 3D, rich media, attachments, and extensive compression; supports linearized (web-optimized) files.\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3 id=\"3-abstract\">3. Abstract\u003C\u002Fh3>\n\u003Cp>The \u003Ccode>abstract\u003C\u002Fcode> format produces a formal, single-paragraph summary suitable for academic or research contexts, outlining the document's scope and key findings.\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-markdown\"># Abstract \n\nPortable Document Format (PDF), standardized as ISO 32000, was developed by Adobe in 1992 to enable document exchange independent of software, hardware, or operating systems. Built on a PostScript subset, PDF encapsulates text, fonts, vector and raster graphics, and metadata within a single file, supporting interactive elements, encryption, signatures, attachments, and accessibility features (e.g., PDF\u002FUA). Over time, PDF evolved through multiple ISO releases (32000-1:2008 as PDF 1.7; 32000-2:2020 as PDF 2.0), while extensions such as PDF\u002FA, PDF\u002FX, and PDF\u002FUA emerged. The format balances portability and fixed-layout rendering, though proprietary elements and security considerations (malware, encryption) persist.\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3 id=\"4-bullet-points\">4. Bullet Points\u003C\u002Fh3>\n\u003Cp>The \u003Ccode>bullet_points\u003C\u002Fcode> format uses simple, unstructured bulleted lists to convey key information clearly and efficiently, making it suitable for general takeaways.\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-markdown\"># Summary\n\n- PDF is a portable document format (ISO 32000) created by Adobe in 1992 to render fixed-layout documents across software, hardware, and OS.\n- It integrates text, fonts, vector\u002Fraster graphics, metadata, and interactive elements; originated from PostScript and the Camelot project.\n- Standardized as ISO 32000-1\u002F2 (PDF 1.7 and PDF 2.0); open format with royalty-free licensing for implementations.\n- Files support encryption, digital signatures, attachments, metadata (XMP), accessibility (PDF\u002FUA), forms (AcroForms, XFA), and multimedia.\n- Core technologies include a subset of PostScript, font embedding, and a structured object storage with cross-reference tables and incrementally updatable files.\n- PDF has evolved with features like transparency, layers (OCGs), and various compression filters; security concerns include vulnerabilities and attacks.\n- Wide ecosystem: numerous viewers\u002Feditors, printing workflows, and open-source libraries (Poppler, Apache PDFBox).\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3 id=\"5-numbered-list\">5. Numbered List\u003C\u002Fh3>\n\u003Cp>The \u003Ccode>numbered_list\u003C\u002Fcode> format arranges the summary points sequentially, ideal for step-by-step instructions or prioritizing main takeaways.\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-markdown\"># Summary \n\n1. PDF, standardized as ISO 32000, is a platform-independent file format for fixed-layout documents containing text, images, and graphics. \n2. It combines a subset of PostScript with font embedding and a structured file container for portability and consistent rendering. \n3. History: initiated in 1991 (Camelot project) by John Warnock; released by Adobe in 1993; became an open ISO standard in 2008. \n4. Core features: support for text, vector\u002Fraster graphics, interactive elements, encryption, digital signatures, metadata, accessibility, and various PDF extensions (e.g., PDF\u002FA, PDF\u002FUA). \n5. Technical structure: objects, cross-reference tables\u002Fstreams, content streams, fonts, and an imaging model with graphics state and transparency.\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3 id=\"6-table-of-contents\">6. Table of Contents\u003C\u002Fh3>\n\u003Cp>The \u003Ccode>table_of_contens\u003C\u002Fcode> format creates a navigational summary, defining the document's structure by listing section titles and a short summary of the content in each.\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-markdown\"># Table of Contents \n\n- Overview of PDF: Portable Document Format (ISO 32000), developed by Adobe (1992) to present fixed-layout documents across platforms. \n- Core Technology: Based on PostScript; encapsulates text, fonts, vector\u002Fraster graphics, and metadata in a single file. \n- History &amp; Standardization: From Camelot concept (1991) to ISO 32000-1\u002F2; open standard since 2008; latest PDF 2.0 (ISO 32000-2:2020). \n- File Structure: COS objects, cross-reference table\u002Fstreams, content streams, and trailer; supports linearized (web-optimized) and non-linearized forms. \n- Features &amp; Extensions: Text, fonts (including 14 base fonts), images, forms (AcroForms\u002FXFA), layers (OCGs), encryption\u002Fsignatures, rich media, tagging for accessibility, and metadata. \n- Security &amp; Reliability: Encryption, digital signatures, DRM, and known vulnerabilities; updates emphasize safer usage. \n- Tools &amp; Adoption: Broad tooling for viewing, editing, printing; widespread browser support; PDF\u002FA\u002FX for archiving\u002Fprinting.\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3 id=\"7-outline\">7. Outline\u003C\u002Fh3>\n\u003Cp>The \u003Ccode>outline\u003C\u002Fcode> format provides a hierarchical, highly structured view of the content, using Roman numerals and letters to show the relationship between main topics and sub-points.\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-markdown\"># Summary \n\nI. Portable Document Format (PDF) \n- A. ISO 32000 standard, developed by Adobe in 1992 to present fixed-layout documents. \n- B. Based on PostScript; encapsulates text, fonts, vector\u002Fraster graphics, and metadata. \n- C. Designed for independence from application software, hardware, and operating systems. \n\nII. History and Licensing \n- A. Origin: The Camelot project (1991) and public release in 1993. \n- B. Open standard since 2008 (ISO 32000-1\u002F2); Adobe public patent license granted. \n- C. PDF 2.0 (ISO 32000-2) released 2020; PDF Association distributes freely. \n\nIII. Features and Structure \n- A. Content: text, images, forms, annotations, layers, 3D, rich media, encryption, and signatures. \n- B. File structure: header, COS objects, cross-reference table\u002Fstream, and trailer. \n- C. Accessibility and tagging: Tagged PDF and PDF\u002FUA for improved readability.\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3 id=\"8-questionanswer\">8. Question - Answer\u003C\u002Fh3>\n\u003Cp>The \u003Ccode>question_answer\u003C\u002Fcode> format structures the summary as an explicit set of questions and corresponding answers, which is ideal for documentation, FAQs, or interview\u002Ftest preparation.\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-markdown\"># Summary: PDF (Portable Document Format)\n\nQ: What is PDF?&nbsp;&nbsp;\nA: A file format standardized as ISO 32000, developed by Adobe in 1992 to present fixed-layout documents that display text, fonts, vector graphics, and images across platforms.\n\nQ: What are its components?&nbsp;&nbsp;\nA: It combines a subset of PostScript, font-embedding, and a structured container with text, graphics, images, metadata, and optional content like annotations, forms, and multimedia.\n\nQ: How has it evolved?&nbsp;&nbsp;\nA: Opened as ISO 32000-1\u002F2008 (PDF 1.7) and later ISO 32000-2 (PDF 2.0, 2017+), with extensions for accessibility (PDF\u002FUA), archiving (PDF\u002FA), and other formats.\n\nQ: What are key features and concerns?&nbsp;&nbsp;\nA: Encryption, digital signatures, metadata, tagging for accessibility, optional content groups, and potential security risks due to malware and exploits.\n\nQ: What supports creation and viewing?&nbsp;&nbsp;\nA: Wide software support, including browsers, OS print systems, and tools like Acrobat, Preview, and open-source libraries.\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3 id=\"9-action-items\">9. Action Items\u003C\u002Fh3>\n\u003Cp>The \u003Ccode>action_items\u003C\u002Fcode> format focuses purely on actionable steps, warnings, or core facts relevant to a user's task or follow-up, perfect for team assignments or project management.\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-markdown\"># Actionable takeaways \n\n- PDF (Portable Document Format) standardizes documents for consistent viewing across apps, hardware, and OSes; based on a subset of PostScript. \n- ISO 32000 governs PDF 2.0 and its extensions (PDF\u002FA, E, UA, VT, X) with ongoing updates; open standard since 2008. \n- Core features: fixed-layout pages, embedded fonts, vector\u002Fraster graphics, annotations, forms, encryption, digital signatures, metadata, and accessibility options (PDF\u002FUA, Tagged PDFs). \n- Content organization: objects in a COS structure with cross-reference tables\u002Fstreams for efficient access and incremental updates. \n- Security concerns: vulnerabilities, malware risks, and password\u002Fprotection limitations; disable JavaScript to reduce risk. \n- Accessibility and tagging improve screen reader support but adoption is uneven; standardized tagging and PDF\u002FUA assist with compliance. \n- Practical cautions: large file sizes with extensive features; ensure compatibility when sharing across diverse viewers.\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Chr>\n\u003Ch2 id=\"conclusion-start-generating-insights-today\">Conclusion: Start Generating Insights Today\u003C\u002Fh2>\n\u003Cp>The pdfRest Summarize PDF API gives you the power to transform complex documents into clear, actionable summaries tailored to any scenario. By choosing the right \u003Ccode>summary_format\u003C\u002Fcode>, you can ensure that the AI is generating the precise structure your application needs, accelerating comprehension and improving workflow efficiency.\u003C\u002Fp>\n\u003Cp>Ready to harness the power of AI-driven document intelligence? \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fgetstarted\u002F\">Sign up today and get started for free!\u003C\u002Fa>\u003C\u002Fp>\n","2025-09-30T18:40:07.000+00:00","2025-09-30T19:00:30.000+00:00","Learn how to select the best-fit summary format for your PDF summarization requirements using pdfRest Summarize PDF API.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-choose-the-right-pdf-summary-format-style\u002F#article\",\n      \"headline\": \"How to Choose the Right PDF Summary Format Style\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-choose-the-right-pdf-summary-format-style\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-choose-the-right-pdf-summary-format-style\u002F\",\n      \"datePublished\": \"2025-09-30T19:00:30.000Z\",\n      \"dateModified\": \"2025-09-30T19:10:23.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to select the best-fit summary format for your PDF summarization requirements using pdfRest Summarize PDF API.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Summarize PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fsummarize-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fsummarized-pdf-text API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fsummarize-pdf\"\n        }\n      ],\n      \"keywords\": \"AI, Analysis, Summarize PDF, Summary\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Choose the Right PDF Summary Format Style\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-choose-the-right-pdf-summary-format-style\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3661,3662,3663,3664,3665,3666],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1314,"name":1315,"slug":1316,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1294,"name":1295,"slug":1296,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1306,"name":1307,"slug":1308,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1279,"name":1280,"slug":1281,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":1283,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-choose-the-right-pdf-summary-format-style\u002F","How to Choose the Right PDF Summary Format Style, Tutorial | pdfRest",{"id":3671,"uuid":3672,"title":3673,"slug":3674,"html":3675,"comment_id":3676,"feature_image":48,"featured":284,"visibility":1257,"created_at":3677,"updated_at":3678,"published_at":3677,"custom_excerpt":3679,"codeinjection_head":3680,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3681,"primary_tag":3687,"url":3688,"excerpt":3679,"reading_time":295,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3689,"meta_description":3679,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65ae9a86656af204db4b137d","27ba540a-633f-4f73-a3be-f29939b3df55","How to Compress PDF Files in .NET with C#","how-to-compress-pdf-files-in-net-with-c","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Compress PDF with C#?\u003C\u002Fh2>\n\n\u003Cp>The pdfRest \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fcompress-pdf\u002F'>Compress PDF API Tool\u003C\u002Fa> is a powerful resource that allows developers to reduce the size of PDF files programmatically. This is particularly useful when dealing with large documents that need to be shared over email or stored in environments with limited space.\u003C\u002Fp>\n    \n\u003Cp>For instance, a business might need to compress a batch of reports to archive them efficiently or to ensure that they can be emailed to clients without hitting attachment size limits.\u003C\u002Fp>\n\n\u003Cp>This tutorial will show you how to send an API call to Compress PDF with C# using the pdfRest API.\u003C\u002Fp>\n\n\u003Ch2>Compress PDF with C# Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-csharp\">using System.Text;\n\nusing (var httpClient = new HttpClient { BaseAddress = new Uri(\"https:\u002F\u002Fapi.pdfrest.com\") })\n{\n    using (var request = new HttpRequestMessage(HttpMethod.Post, \"compressed-pdf\"))\n    {\n        request.Headers.TryAddWithoutValidation(\"Api-Key\", \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\");\n        request.Headers.Accept.Add(new(\"application\u002Fjson\"));\n        var multipartContent = new MultipartFormDataContent();\n\n        var byteArray = File.ReadAllBytes(\"\u002Fpath\u002Fto\u002Ffile.pdf\");\n        var byteAryContent = new ByteArrayContent(byteArray);\n        multipartContent.Add(byteAryContent, \"file\", \"file_name.pdf\");\n        byteAryContent.Headers.TryAddWithoutValidation(\"Content-Type\", \"application\u002Fpdf\");\n\n        var byteArrayOption = new ByteArrayContent(Encoding.UTF8.GetBytes(\"high\"));\n        multipartContent.Add(byteArrayOption, \"compression_level\");\n\n        request.Content = multipartContent;\n        var response = await httpClient.SendAsync(request);\n\n        var apiResult = await response.Content.ReadAsStringAsync();\n\n        Console.WriteLine(\"API response received.\");\n        Console.WriteLine(apiResult);\n    }\n}\n\u003C\u002Fpre>\n\n\u003Cp>Source code reference: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FDotNET\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fcompressed-pdf.cs\">pdf-rest-api-samples\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the C# Code\u003C\u002Fh2>\n\n\u003Cp>The code snippet above demonstrates how to make an API call to the pdfRest Compress PDF endpoint using C#. Let's break down the key parts of the code:\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">using (var httpClient = new HttpClient { BaseAddress = new Uri(\"https:\u002F\u002Fapi.pdfrest.com\") })\n\u003C\u002Fpre>\n\n\u003Cp>This line initializes an \u003Ccode>HttpClient\u003C\u002Fcode> instance with the base address set to the pdfRest API.\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">request.Headers.TryAddWithoutValidation(\"Api-Key\", \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\");\n\u003C\u002Fpre>\n\n\u003Cp>Here, an API key is added to the request headers for authentication. Replace \u003Ccode>xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\u003C\u002Fcode> with your actual API key.\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">var byteArray = File.ReadAllBytes(\"\u002Fpath\u002Fto\u002Ffile.pdf\");\nvar byteAryContent = new ByteArrayContent(byteArray);\nmultipartContent.Add(byteAryContent, \"file\", \"file_name.pdf\");\n\u003C\u002Fpre>\n\n\u003Cp>This snippet reads a PDF file from the specified path and adds it to the multipart form data content with the key \u003Ccode>file\u003C\u002Fcode>.\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">var byteArrayOption = new ByteArrayContent(Encoding.UTF8.GetBytes(\"high\"));\nmultipartContent.Add(byteArrayOption, \"compression_level\");\n\u003C\u002Fpre>\n\n\u003Cp>The compression level is set to 'high' and added to the multipart content. The available compression levels can be found in the pdfRest Cloud API Reference Guide.\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">var response = await httpClient.SendAsync(request);\n\u003C\u002Fpre>\n\n\u003Cp>This line sends the API request and waits for the response.\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">var apiResult = await response.Content.ReadAsStringAsync();\n\u003C\u002Fpre>\n\n\u003Cp>Finally, the response from the API is read as a string and can be processed or saved as needed.\u003C\u002Fp>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>In this tutorial, you've learned how to compress a PDF file using C# and the pdfRest Compress PDF API. By following the steps outlined above, you have made an API call to reduce the size of a PDF document. This can help you manage files more efficiently in your applications.\u003C\u002Fp>\n\n\u003Cp>We encourage you to try all of the pdfRest API Tools in the API Lab at \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa> and refer to the API Reference documentation at \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fcompress-pdf\u002F\">Cloud API Reference Guide\u003C\u002Fa> for further exploration.\u003C\u002Fp>\n\n\u003Cp>Note: This is an example of a multipart API call. Code samples using JSON payloads can be found at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FDotNET\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Fcompressed-pdf.cs\">pdf-rest-api-samples\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","65a1c3c72d4014c9499b3e06","2024-01-12T22:57:11.000+00:00","2026-09-02T18:27:02.000+00:00","Learn how to use the Compress PDF API Tool from pdfRest to programmatically compress PDF files with C#.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-compress-pdf-files-in-net-with-c\u002F#article\",\n      \"headline\": \"How to Compress PDF Files in .NET with C#\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-compress-pdf-files-in-net-with-c\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-compress-pdf-files-in-net-with-c\u002F\",\n      \"datePublished\": \"2024-01-12T22:57:11.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:55.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to use the Compress PDF API Tool from pdfRest to programmatically compress PDF files with C#.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Compress PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fcompress-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fcompressed-pdf API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fcompress-pdf\"\n        }\n      ],\n      \"keywords\": \".NET, Compress PDF, File Size\",\n      \"dependencies\": \".NET, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Compress PDF Files in .NET with C#\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-compress-pdf-files-in-net-with-c\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3682,3683,3684,3685,3686],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1736,"name":1737,"slug":1738,"description":1283,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":1283,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2231,"name":2232,"slug":2233,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1740,"name":1741,"slug":1742,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-compress-pdf-files-in-net-with-c\u002F","How to Compress PDF Files in .NET with C#, Tutorial | pdfRest",{"id":3691,"uuid":3692,"title":3693,"slug":3694,"html":3695,"comment_id":3696,"feature_image":48,"featured":284,"visibility":1257,"created_at":3697,"updated_at":3678,"published_at":3697,"custom_excerpt":3698,"codeinjection_head":3699,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3700,"primary_tag":3706,"url":3707,"excerpt":3698,"reading_time":295,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3708,"meta_description":3698,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65ae9a86656af204db4b137e","cf233ef4-8b69-41f7-9796-057527004ef1","How to Compress PDF Files with JavaScript in NodeJS","how-to-compress-pdf-files-with-javascript-in-nodejs","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Compress PDF with JavaScript?\u003C\u002Fh2>\n\n\u003Cp>Compressing PDF files is an essential task for optimizing storage space and improving download and upload times. The pdfRest \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fcompress-pdf\u002F'>Compress PDF API Tool\u003C\u002Fa> provides a straightforward way to reduce PDF file sizes programmatically. This tutorial will demonstrate how to send an API call to Compress PDF using JavaScript.\u003C\u002Fp>\n\u003Cp>For instance, if you're building a web application that allows users to upload reports, compressing these PDFs before storing them can save server space and make the reports quicker to access for users.\u003C\u002Fp>\n\n\u003Ch2>Compress PDF with JavaScript Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-javascript\">\u002F\u002F This request demonstrates how to reduce the file size of a PDF.\nvar axios = require('axios');\nvar FormData = require('form-data');\nvar fs = require('fs');\n\n\u002F\u002F Create a new form data instance and append the PDF file and parameters to it\nvar data = new FormData();\ndata.append('file', fs.createReadStream('\u002Fpath\u002Fto\u002Ffile'));\ndata.append('compression_level', 'medium');\ndata.append('output', 'pdfrest_compressed_pdf');\n\n\u002F\u002F define configuration options for axios request\nvar config = {\n  method: 'post',\n  maxBodyLength: Infinity, \u002F\u002F set maximum length of the request body\n  url: 'https:\u002F\u002Fapi.pdfrest.com\u002Fcompressed-pdf', \n  headers: { \n    'Api-Key': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', \u002F\u002F Replace with your API key\n    ...data.getHeaders() \u002F\u002F set headers for the request\n  },\n  data : data \u002F\u002F set the data to be sent with the request\n};\n\n\u002F\u002F send request and handle response or error\naxios(config)\n.then(function (response) {\n  console.log(JSON.stringify(response.data));\n})\n.catch(function (error) {\n  console.log(error); \n});\n\n\u002F\u002F If you would like to download the file instead of getting the JSON response, please see the 'get-resource-id-endpoint.js' sample.\n\u003C\u002Fpre>\n\n\u003Cp>Source code reference: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FJavaScript\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fcompressed-pdf.js\">GitHub\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the JavaScript Code\u003C\u002Fh2>\n\n\u003Cp>The code provided demonstrates how to compress a PDF file using the pdfRest API in JavaScript:\u003C\u002Fp>\n\n\u003Cpre class=\"language-javascript\">var axios = require('axios');\nvar FormData = require('form-data');\nvar fs = require('fs');\n\u003C\u002Fpre>\n\n\u003Cp>This initializes the required modules: \u003Ccode>axios\u003C\u002Fcode> for making HTTP requests, \u003Ccode>FormData\u003C\u002Fcode> to construct the multipart form data, and \u003Ccode>fs\u003C\u002Fcode> to handle the file system.\u003C\u002Fp>\n\n\u003Cpre class=\"language-javascript\">var data = new FormData();\ndata.append('file', fs.createReadStream('\u002Fpath\u002Fto\u002Ffile'));\ndata.append('compression_level', 'medium');\ndata.append('output', 'pdfrest_compressed_pdf');\n\u003C\u002Fpre>\n\n\u003Cp>Here, a new \u003Ccode>FormData\u003C\u002Fcode> object is created and the PDF file along with compression parameters are appended to it. The \u003Ccode>'compression_level'\u003C\u002Fcode> can be \u003Ccode>'low'\u003C\u002Fcode>, \u003Ccode>'medium'\u003C\u002Fcode>, or \u003Ccode>'high'\u003C\u002Fcode>, depending on the desired compression ratio.\u003C\u002Fp>\n\n\u003Cpre class=\"language-javascript\">var config = {\n  \u002F\u002F ... other configuration options\n  headers: { \n    'Api-Key': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', \u002F\u002F Replace with your API key\n    ...data.getHeaders() \u002F\u002F set headers for the request\n  },\n  data : data \u002F\u002F set the data to be sent with the request\n};\n\u003C\u002Fpre>\n\n\u003Cp>The \u003Ccode>config\u003C\u002Fcode> object contains the request configuration, including the API endpoint URL, headers (with your API key), and the data payload.\u003C\u002Fp>\n\n\u003Cpre class=\"language-javascript\">axios(config)\n.then(function (response) {\n  console.log(JSON.stringify(response.data));\n})\n.catch(function (error) {\n  console.log(error); \n});\n\u003C\u002Fpre>\n\n\u003Cp>The \u003Ccode>axios\u003C\u002Fcode> library is used to send the request. The response is then logged to the console, or an error is logged if the request fails.\u003C\u002Fp>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>By following the steps above, you've learned how to make an API call to compress a PDF file using JavaScript. This is a practical skill for any web application that handles PDFs, as it allows for efficient file management and faster data transfer. To explore the full capabilities of the pdfRest API, you can demo all of the pdfRest API Tools in the API Lab at \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa> and refer to the API Reference documentation at \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fcompress-pdf\u002F\">Cloud API Reference Guide\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Cp>Note: This is an example of a multipart API call. Code samples using JSON payloads can also be found at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FJavaScript\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Fcompressed-pdf.js\">GitHub\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","65a1c7682d4014c9499b3e16","2024-01-12T23:12:40.000+00:00","Learn how to compress PDF files programmatically with JavaScript using the Compress PDF API Tool by pdfRest.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-compress-pdf-files-with-javascript-in-nodejs\u002F#article\",\n      \"headline\": \"How to Compress PDF Files with JavaScript in NodeJS\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-compress-pdf-files-with-javascript-in-nodejs\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-compress-pdf-files-with-javascript-in-nodejs\u002F\",\n      \"datePublished\": \"2024-01-12T23:12:40.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:54.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to compress PDF files programmatically with JavaScript using the Compress PDF API Tool by pdfRest.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Compress PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fcompress-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fcompressed-pdf API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fcompress-pdf\"\n        }\n      ],\n      \"keywords\": \"Compress PDF, File Size, JavaScript\",\n      \"dependencies\": \"JavaScript, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Compress PDF Files with JavaScript in NodeJS\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-compress-pdf-files-with-javascript-in-nodejs\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3701,3702,3703,3704,3705],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1736,"name":1737,"slug":1738,"description":1283,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":1283,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2223,"name":2224,"slug":2225,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1740,"name":1741,"slug":1742,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-compress-pdf-files-with-javascript-in-nodejs\u002F","How to Compress PDF Files with JavaScript in NodeJS, Tutorial | pdfRest",{"id":3710,"uuid":3711,"title":3712,"slug":3713,"html":3714,"comment_id":3715,"feature_image":48,"featured":284,"visibility":1257,"created_at":3716,"updated_at":3717,"published_at":3716,"custom_excerpt":3718,"codeinjection_head":3719,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3720,"primary_tag":3726,"url":3727,"excerpt":3718,"reading_time":295,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3728,"meta_description":3718,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65ae9a86656af204db4b137f","dc2e91c0-3dd1-4fc7-93a8-3a46d00c94a3","How to Compress PDF Files with PHP","how-to-compress-pdf-files-with-php","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Compress PDF with PHP?\u003C\u002Fh2>\n\n\u003Cp>The pdfRest \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fcompress-pdf\u002F'>Compress PDF API Tool\u003C\u002Fa> is a powerful resource for developers looking to reduce the size of PDF files programmatically. Compressing PDFs can be crucial in many scenarios, such as when you need to send large documents via email, save storage space, or improve website load times by serving smaller files.\u003C\u002Fp> \n\u003Cp>\u003C\u002Fp>This tutorial will demonstrate how to send an API call to Compress PDF using PHP, a popular server-side scripting language.\u003C\u002Fp>\n\n\u003Ch2>Compress PDF with PHP Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-python\">\nrequire 'vendor\u002Fautoload.php'; \u002F\u002F Require the autoload file to load Guzzle HTTP client.\n\nuse GuzzleHttp\\Client; \u002F\u002F Import the Guzzle HTTP client namespace.\nuse GuzzleHttp\\Psr7\\Request; \u002F\u002F Import the PSR-7 Request class.\nuse GuzzleHttp\\Psr7\\Utils; \u002F\u002F Import the PSR-7 Utils class for working with streams.\n\n$client = new Client(); \u002F\u002F Create a new instance of the Guzzle HTTP client.\n\n$headers = [\n  'Api-Key' =--> 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' \u002F\u002F Set the API key in the headers for authentication.\n];\n\n$options = [\n  'multipart' => [\n    [\n      'name' => 'file', \u002F\u002F Specify the field name for the file.\n      'contents' => Utils::tryFopen('\u002Fpath\u002Fto\u002Ffile', 'r'), \u002F\u002F Open the file specified by the '\u002Fpath\u002Fto\u002Ffile' for reading.\n      'filename' => '\u002Fpath\u002Fto\u002Ffile', \u002F\u002F Set the filename for the file to be compressed, in this case, '\u002Fpath\u002Fto\u002Ffile'.\n      'headers' => [\n        'Content-Type' => '\u003Ccontent-type header=\"\">' \u002F\u002F Set the Content-Type header for the file.\n      ]\n    ],\n    [\n      'name' => 'compression_level', \u002F\u002F Specify the field name for the compression level.\n      'contents' => 'medium' \u002F\u002F Set the value for the compression level (in this case, 'medium').\n    ],\n    [\n      'name' => 'output', \u002F\u002F Specify the field name for the output option.\n      'contents' => 'pdfrest_compressed_pdf' \u002F\u002F Set the value for the output option (in this case, 'pdfrest_compressed_pdf').\n    ]\n  ]\n];\n\n$request = new Request('POST', 'https:\u002F\u002Fapi.pdfrest.com\u002Fcompressed-pdf', $headers); \u002F\u002F Create a new HTTP POST request with the API endpoint and headers.\n\n$res = $client->sendAsync($request, $options)->wait(); \u002F\u002F Send the asynchronous request and wait for the response.\n\necho $res->getBody(); \u002F\u002F Output the response body, which contains the compressed PDF content.\n\n\u003C\u002Fcontent-type>\u003C\u002Fpre>\n\n\u003Cp>Source of the provided code: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FPHP\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fcompressed-pdf.php\">GitHub\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the PHP Code\u003C\u002Fh2>\n\n\u003Cp>This code snippet demonstrates how to use the Guzzle HTTP client to send a multipart\u002Fform-data POST request to the pdfRest API to compress a PDF file.\u003C\u002Fp>\n\n\u003Cp>The \u003Ccode>$headers\u003C\u002Fcode> array includes the 'Api-Key' which is used for authentication with the pdfRest API.\u003C\u002Fp>\n\n\u003Cp>The \u003Ccode>$options\u003C\u002Fcode> array specifies the multipart body of the request. It contains three parts:\u003C\u002Fp>\n\n\u003Cul>\n  \u003Cli>\u003Cstrong>file:\u003C\u002Fstrong> The file to be compressed. It includes the 'contents', which is a stream of the file opened for reading, and 'filename', which is the path to the file.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>compression_level:\u003C\u002Fstrong> The desired level of compression, which can be 'low', 'medium', or 'high'.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>output:\u003C\u002Fstrong> The name of the output file or the option to return the compressed PDF content.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Cp>The \u003Ccode>new Request()\u003C\u002Fcode> function creates a new HTTP POST request with the specified endpoint and headers. The \u003Ccode>$client->sendAsync()\u003C\u002Fcode> function sends the request and \u003Ccode>wait()\u003C\u002Fcode> is called to wait for the response. Finally, \u003Ccode>$res->getBody()\u003C\u002Fcode> outputs the response body.\u003C\u002Fp>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>In this tutorial, we have learned how to compress a PDF file using the pdfRest Compress PDF API Tool with PHP. The code sends a multipart request to the pdfRest API, which processes the file and returns the compressed PDF content.\u003C\u002Fp>\n\n\u003Cp>To explore all of the pdfRest API Tools, you can demo them in the API Lab at \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. For more detailed information, refer to the API Reference documentation at \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fcompress-pdf\u002F\">Cloud API Reference Guide\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Cp>Note: This is an example of a multipart API call. Code samples using JSON payloads can be found at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FPHP\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Fcompressed-pdf.php\">GitHub\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","65a469ca2d4014c9499b3e21","2024-01-14T23:10:02.000+00:00","2026-09-02T18:27:03.000+00:00","Learn how to use pdfRest Compress PDF API Tool with PHP to compress PDF files and reduce file size.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-compress-pdf-files-with-php\u002F#article\",\n      \"headline\": \"How to Compress PDF Files with PHP\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-compress-pdf-files-with-php\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-compress-pdf-files-with-php\u002F\",\n      \"datePublished\": \"2024-01-14T23:10:02.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:54.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to use pdfRest Compress PDF API Tool with PHP to compress PDF files and reduce file size.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Compress PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fcompress-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fcompressed-pdf API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fcompress-pdf\"\n        }\n      ],\n      \"keywords\": \"Compress PDF, File Size, PHP\",\n      \"dependencies\": \"PHP, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Compress PDF Files with PHP\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-compress-pdf-files-with-php\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3721,3722,3723,3724,3725],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1736,"name":1737,"slug":1738,"description":1283,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":1283,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2227,"name":2228,"slug":2229,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1740,"name":1741,"slug":1742,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-compress-pdf-files-with-php\u002F","How to Compress PDF Files with PHP, Tutorial | pdfRest",{"id":3730,"uuid":3731,"title":3732,"slug":3733,"html":3734,"comment_id":3730,"feature_image":48,"featured":284,"visibility":1257,"created_at":3735,"updated_at":3717,"published_at":3735,"custom_excerpt":3736,"codeinjection_head":3737,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3738,"primary_tag":3744,"url":3745,"excerpt":3736,"reading_time":295,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3746,"meta_description":3736,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65eb594b533c9f26b9436817","968540d5-0ed7-4182-ae1e-155a05069d2c","How to Compress PDF with cURL","how-to-compress-pdf-with-curl","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Use Compress PDF with cURL?\u003C\u002Fh2>\n\n\u003Cp>The pdfRest \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fcompress-pdf\u002F'>Compress PDF API Tool\u003C\u002Fa> is an invaluable resource for reducing the size of PDF files while maintaining their quality. This tool can be particularly useful when dealing with large documents that need to be shared or stored efficiently. This tutorial will guide you through the process of sending an API call to Compress PDF using cURL, a powerful command-line tool used for transferring data with URLs.\u003C\u002Fp>\n\n\u003Cp>Imagine you need to email a large PDF report to your colleagues, but your email service has a file size limit. Or perhaps you need to upload a PDF to a website that restricts the upload size. In such scenarios, using the Compress PDF API can significantly reduce the file size, making it easier to share and upload documents without compromising on the quality of the content.\u003C\u002Fp>\n\n\u003Ch2>Compress PDF with cURL Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-bash\">curl -X POST \"https:\u002F\u002Fapi.pdfrest.com\u002Fcompressed-pdf\" \\\n  -H \"Accept: application\u002Fjson\" \\\n  -H \"Content-Type: multipart\u002Fform-data\" \\\n  -H \"Api-Key: xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\" \\\n  -F \"file=@\u002Fpath\u002Fto\u002Ffile\" \\\n  -F \"output=example_out\" \\\n  -F \"compression_level=medium\"\n\u003C\u002Fpre>\n\n\u003Cp>Reference to the code: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FcURL\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fcompressed-pdf.sh\">pdf-rest-api-samples on GitHub\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>This cURL command is used to send a POST request to the pdfRest Compress PDF API endpoint:\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">-X POST \"https:\u002F\u002Fapi.pdfrest.com\u002Fcompressed-pdf\"\u003C\u002Fpre>\n\n\u003Cp>The \u003Ccode>-X POST\u003C\u002Fcode> flag specifies the request method, which is POST in this case.\u003C\u002Fp>\n\n\u003Cp>Headers are added to the request to indicate the expected response format and the content type of the request:\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">-H \"Accept: application\u002Fjson\"\n-H \"Content-Type: multipart\u002Fform-data\"\n\u003C\u002Fpre>\n\n\u003Cp>The \u003Ccode>Accept: application\u002Fjson\u003C\u002Fcode> header tells the server that the client expects a JSON response. The \u003Ccode>Content-Type: multipart\u002Fform-data\u003C\u002Fcode> header is used because the request will include a file upload.\u003C\u002Fp>\n\n\u003Cp>The API key is included as a header for authentication:\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">-H \"Api-Key: xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"\u003C\u002Fpre>\n\n\u003Cp>Replace \u003Ccode>xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\u003C\u002Fcode> with your actual API key.\u003C\u002Fp>\n\n\u003Cp>The file to be compressed is included in the form data:\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">-F \"file=@\u002Fpath\u002Fto\u002Ffile\"\u003C\u002Fpre>\n\n\u003Cp>The \u003Ccode>-F\u003C\u002Fcode> flag is used to specify each piece of form data. The \u003Ccode>file=@\u002Fpath\u002Fto\u002Ffile\u003C\u002Fcode> form field specifies the file path for the PDF to be compressed.\u003C\u002Fp>\n\n\u003Cp>Additional form fields specify the output file name and the desired compression level:\u003C\u002Fp>\n\n\u003Cpre class=\"language-bash\">-F \"output=example_out\"\n-F \"compression_level=medium\"\n\u003C\u002Fpre>\n\n\u003Cp>The \u003Ccode>output\u003C\u002Fcode> field determines the name of the output file, and \u003Ccode>compression_level\u003C\u002Fcode> can be set to 'low', 'medium', or 'high', depending on the desired balance between file size and quality.\u003C\u002Fp>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>By following this tutorial, you have learned how to compress a PDF using the pdfRest Compress PDF API with cURL. This capability can be a game-changer when it comes to managing and distributing PDF files efficiently.\u003C\u002Fp>\n\n\u003Cp>Feel free to explore and demo all of the pdfRest API Tools in the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. For further information and detailed documentation, refer to the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fcompress-pdf\u002F\">API Reference Guide\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Cp>Note: This is an example of a multipart API call. Code samples using JSON payloads can be found at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FcURL\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Fcompressed-pdf.sh\">pdf-rest-api-samples on GitHub\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2024-03-08T18:30:35.000+00:00","Learn how to compress a PDF file to reduce file size using pdfRest Compress PDF API Tool with cURL","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-compress-pdf-with-curl\u002F#article\",\n      \"headline\": \"How to Compress PDF with cURL\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-compress-pdf-with-curl\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-compress-pdf-with-curl\u002F\",\n      \"datePublished\": \"2024-03-08T18:30:35.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:43.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to compress a PDF file to reduce file size using pdfRest Compress PDF API Tool with cURL\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Compress PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fcompress-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fcompressed-pdf API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fcompress-pdf\"\n        }\n      ],\n      \"keywords\": \"Compress PDF, File Size, cURL\",\n      \"dependencies\": \"cURL, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Compress PDF with cURL\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-compress-pdf-with-curl\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3739,3740,3741,3742,3743],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1736,"name":1737,"slug":1738,"description":1283,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":1283,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2239,"name":2240,"slug":2241,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1740,"name":1741,"slug":1742,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-compress-pdf-with-curl\u002F","How to Compress PDF with cURL, Tutorial | pdfRest",{"id":3748,"uuid":3749,"title":3750,"slug":3751,"html":3752,"comment_id":3748,"feature_image":48,"featured":284,"visibility":1257,"created_at":3753,"updated_at":3717,"published_at":3753,"custom_excerpt":3754,"codeinjection_head":3755,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3756,"primary_tag":3762,"url":3763,"excerpt":3754,"reading_time":320,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3764,"meta_description":3754,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65eb5980533c9f26b9436821","d4b8e588-a645-4723-ab3f-2612a56f7728","How to Compress PDF with Java","how-to-compress-pdf-with-java","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Use Compress PDF with Java?\u003C\u002Fh2>\n\n\u003Cp>The pdfRest \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fcompress-pdf\u002F'>Compress PDF API Tool\u003C\u002Fa> is a powerful resource for developers looking to optimize their PDF files by reducing their size without sacrificing quality. This tutorial will guide you through the process of making an API call to the Compress PDF endpoint using Java. The ability to compress PDFs programmatically allows for seamless integration into various workflows, such as document management systems, web applications, or automated batch processing tasks.\u003C\u002Fp>\n\n\u003Cp>You might need to compress a PDF to meet email attachment size limits, save storage space, or improve the speed of document sharing and loading on the web. For instance, a legal firm may need to email a large batch of case files, which are too large to send without compression. By using the Compress PDF API, they can easily reduce the file size while maintaining the necessary level of document clarity and detail.\u003C\u002Fp>\n\n\u003Ch2>Compress PDF with Java Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-java\">import io.github.cdimascio.dotenv.Dotenv;\nimport java.io.File;\nimport java.io.IOException;\nimport java.util.concurrent.TimeUnit;\nimport okhttp3.MediaType;\nimport okhttp3.MultipartBody;\nimport okhttp3.OkHttpClient;\nimport okhttp3.Request;\nimport okhttp3.RequestBody;\nimport okhttp3.Response;\nimport org.json.JSONObject;\n\npublic class CompressedPDF {\n\n  \u002F\u002F Specify the path to your file here, or as the first argument when running the program.\n  private static final String DEFAULT_FILE_PATH = \"\u002Fpath\u002Fto\u002Ffile.pdf\";\n\n  \u002F\u002F Specify your API key here, or in the environment variable PDFREST_API_KEY.\n  \u002F\u002F You can also put the environment variable in a .env file.\n  private static final String DEFAULT_API_KEY = \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\";\n\n  private static final String COMPRESSION_LEVEL = \"medium\";\n\n  public static void main(String[] args) {\n    File inputFile;\n    if (args.length > 0) {\n      inputFile = new File(args[0]);\n    } else {\n      inputFile = new File(DEFAULT_FILE_PATH);\n    }\n\n    final Dotenv dotenv = Dotenv.configure().ignoreIfMalformed().ignoreIfMissing().load();\n\n    final RequestBody inputFileRequestBody =\n        RequestBody.create(inputFile, MediaType.parse(\"application\u002Fpdf\"));\n    RequestBody requestBody =\n        new MultipartBody.Builder()\n            .setType(MultipartBody.FORM)\n            .addFormDataPart(\"file\", inputFile.getName(), inputFileRequestBody)\n            .addFormDataPart(\"compression_level\", COMPRESSION_LEVEL)\n            .addFormDataPart(\"output\", \"pdfrest_compressed_pdf\")\n            .build();\n    Request request =\n        new Request.Builder()\n            .header(\"Api-Key\", dotenv.get(\"PDFREST_API_KEY\", DEFAULT_API_KEY))\n            .url(\"https:\u002F\u002Fapi.pdfrest.com\u002Fcompressed-pdf\")\n            .post(requestBody)\n            .build();\n    try {\n      OkHttpClient client =\n          new OkHttpClient().newBuilder().readTimeout(60, TimeUnit.SECONDS).build();\n      Response response = client.newCall(request).execute();\n      System.out.println(\"Result code \" + response.code());\n      if (response.body() != null) {\n        System.out.println(prettyJson(response.body().string()));\n      }\n    } catch (IOException e) {\n      throw new RuntimeException(e);\n    }\n  }\n\n  private static String prettyJson(String json) {\n    \u002F\u002F https:\u002F\u002Fstackoverflow.com\u002Fa\u002F9583835\u002F11996393\n    return new JSONObject(json).toString(4);\n  }\n}\n\u003C\u002Fpre>\n\n\u003Cp>This code is sourced from the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FJava\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002FCompressedPDF.java\">pdf-rest-api-samples repository on GitHub\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>The code begins by defining constants for the file path and API key, which you can set directly in the code or through environment variables. The \u003Ccode>COMPRESSION_LEVEL\u003C\u002Fcode> is set to \"medium\", but you can adjust this based on your needs.\u003C\u002Fp>\n\n\u003Cpre class=\"language-java\">private static final String DEFAULT_FILE_PATH = \"\u002Fpath\u002Fto\u002Ffile.pdf\";\nprivate static final String DEFAULT_API_KEY = \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\";\nprivate static final String COMPRESSION_LEVEL = \"medium\";\n\u003C\u002Fpre>\n\n\u003Cp>The main method checks for an input file argument; if none is provided, it uses the default file path. It then creates a multipart request body with the file, compression level, and output name. The API key is set in the request header, and the request is sent to the endpoint \u003Ccode>https:\u002F\u002Fapi.pdfrest.com\u002Fcompressed-pdf\u003C\u002Fcode>.\u003C\u002Fp>\n\n\u003Cpre class=\"language-java\">\u002F\u002F ... (code for setting up the file and request body) ...\nRequest request = new Request.Builder()\n    .header(\"Api-Key\", dotenv.get(\"PDFREST_API_KEY\", DEFAULT_API_KEY))\n    .url(\"https:\u002F\u002Fapi.pdfrest.com\u002Fcompressed-pdf\")\n    .post(requestBody)\n    .build();\n\u003C\u002Fpre>\n\n\u003Cp>An \u003Ccode>OkHttpClient\u003C\u002Fcode> is configured with a 60-second read timeout, and the request is executed. The response is printed out, and if it contains a body, the JSON response is formatted and printed.\u003C\u002Fp>\n\n\u003Cpre class=\"language-java\">OkHttpClient client = new OkHttpClient().newBuilder().readTimeout(60, TimeUnit.SECONDS).build();\nResponse response = client.newCall(request).execute();\n\u002F\u002F ... (code for handling the response) ...\n\u003C\u002Fpre>\n\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>By following the steps outlined in this tutorial, you've learned how to compress a PDF file using Java and the pdfRest Compress PDF API. This example demonstrates a multipart API call, which is suitable for file uploads and additional form data.\u003C\u002Fp>\n\n\u003Cp>To explore and demo all of the pdfRest API Tools, visit the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. For further learning and experimentation, you can dive into the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fcompress-pdf\u002F\">API Reference Guide\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Cp>Note: This is an example of a multipart API call. Code samples using JSON payloads can be found at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FJava\u002FEndpoint%20Examples\u002FJSON%20Payload\u002FCompressedPDF.java\">https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FJava\u002FEndpoint%20Examples\u002FJSON%20Payload\u002FCompressedPDF.java\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2024-03-08T18:31:28.000+00:00","Learn how to use pdfRest Compress PDF API Tool with Java to optimally reduce the size of PDF files","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-compress-pdf-with-java\u002F#article\",\n      \"headline\": \"How to Compress PDF with Java\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-compress-pdf-with-java\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-compress-pdf-with-java\u002F\",\n      \"datePublished\": \"2024-03-08T18:31:28.000Z\",\n      \"dateModified\": \"2026-09-01T14:52:11.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to use pdfRest Compress PDF API Tool with Java to optimally reduce the size of PDF files\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Compress PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fcompress-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fcompressed-pdf API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fcompress-pdf\"\n        }\n      ],\n      \"keywords\": \"Compress PDF, File Size, Java\",\n      \"dependencies\": \"Java, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Compress PDF with Java\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-compress-pdf-with-java\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3757,3758,3759,3760,3761],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1736,"name":1737,"slug":1738,"description":1283,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":1283,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2235,"name":2236,"slug":2237,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1740,"name":1741,"slug":1742,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-compress-pdf-with-java\u002F","How to Compress PDF with Java, Tutorial | pdfRest",{"id":3766,"uuid":3767,"title":3768,"slug":3769,"html":3770,"comment_id":3771,"feature_image":48,"featured":284,"visibility":1257,"created_at":3772,"updated_at":3773,"published_at":3772,"custom_excerpt":3774,"codeinjection_head":3775,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3776,"primary_tag":3782,"url":3783,"excerpt":3774,"reading_time":295,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3784,"meta_description":3774,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65ae9a86656af204db4b1355","af0d6422-81c0-4c23-b252-1ca21c6ab8aa","How to Compress PDF with Python","how-to-compress-pdf-with-python","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Compress PDFs via API?\u003C\u002Fh2>\n\n\u003Cp>The pdfRest \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fcompress-pdf\u002F\">Compress PDF API Tool\u003C\u002Fa> is a powerful resource for developers and businesses looking to reduce the size of their PDF files without compromising on quality.\u003C\u002Fp>\n\n\u003Cp>This tutorial will guide you through the process of making an API call to the Compress PDF endpoint using Python. Compressing PDFs is particularly useful in scenarios where you need to save storage space, speed up file transfers, or meet file size requirements for email attachments or website uploads.\u003C\u002Fp>\n\n\u003Ch2>Python Code Example for Compression\u003C\u002Fh2>\n\n\u003Cpre class=\"language-python\">from requests_toolbelt import MultipartEncoder\nimport requests\nimport json\n\ncompressed_pdf_endpoint_url = 'https:\u002F\u002Fapi.pdfrest.com\u002Fcompressed-pdf'\n\n# The \u002Fcompressed-pdf endpoint can take a single PDF file or id as input.\n# This sample demonstrates setting compression_level to 'medium'.\n# We have preset 'high', 'medium', and 'low' compression levels available for use. These preset levels do not require the 'profile' parameter.\nmp_encoder_compressedPdf = MultipartEncoder(\n    fields={\n        'file': ('file_name.pdf', open('\u002Fpath\u002Fto\u002Ffile', 'rb'), 'application\u002Fpdf'),\n        'output' : 'example_compressedPdf_out',\n        'compression_level': 'medium',\n    }\n)\n\n# Let's set the headers that the compressed-pdf endpoint expects.\n# Since MultipartEncoder is used, the 'Content-Type' header gets set to 'multipart\u002Fform-data' via the content_type attribute below.\nheaders = {\n    'Accept': 'application\u002Fjson',\n    'Content-Type': mp_encoder_compressedPdf.content_type,\n    'Api-Key': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' # place your api key here\n}\n\nprint(\"Sending POST request to compressed-pdf endpoint...\")\nresponse = requests.post(compressed_pdf_endpoint_url, data=mp_encoder_compressedPdf, headers=headers)\n\nprint(\"Response status code: \" + str(response.status_code))\n\nif response.ok:\n    response_json = response.json()\n    print(json.dumps(response_json, indent = 2))\nelse:\n    print(response.text)\n\n# If you would like to download the file instead of getting the JSON response, please see the 'get-resource-id-endpoint.py' sample.\n\u003C\u002Fpre>\n\n\u003Cp>The code above is sourced from the pdfRest API samples repository on GitHub, specifically from \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FPython\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fcompressed-pdf.py\">this file\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Python Code\u003C\u002Fh2>\n\n\u003Cp>The sample uses \u003Ccode>requests\u003C\u002Fcode> to send the HTTP request, \u003Ccode>MultipartEncoder\u003C\u002Fcode> from \u003Ccode>requests-toolbelt\u003C\u002Fcode> to build a multipart body, and \u003Ccode>json\u003C\u002Fcode> to format the response. Install the two external packages with \u003Ccode>python -m pip install requests requests-toolbelt\u003C\u002Fcode> if they are not already available.\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">compressed_pdf_endpoint_url = 'https:\u002F\u002Fapi.pdfrest.com\u002Fcompressed-pdf'\u003C\u002Fpre>\n\n\u003Cp>\u003Ccode>\u002Fcompressed-pdf\u003C\u002Fcode> accepts either an uploaded PDF or an existing pdfRest resource ID. This multipart example uploads the source directly.\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">mp_encoder_compressedPdf = MultipartEncoder(\n    fields={\n        'file': ('file_name.pdf', open('\u002Fpath\u002Fto\u002Ffile', 'rb'), 'application\u002Fpdf'),\n        'output': 'example_compressedPdf_out',\n        'compression_level': 'medium',\n    }\n)\u003C\u002Fpre>\n\n\u003Cp>The \u003Ccode>file\u003C\u002Fcode> tuple supplies the multipart filename, binary stream, and PDF media type. \u003Ccode>output\u003C\u002Fcode> sets the generated filename without its extension. \u003Ccode>compression_level\u003C\u002Fcode> accepts \u003Ccode>low\u003C\u002Fcode>, \u003Ccode>medium\u003C\u002Fcode>, \u003Ccode>high\u003C\u002Fcode>, or \u003Ccode>custom\u003C\u002Fcode>. The preset levels balance output fidelity against size reduction; \u003Ccode>custom\u003C\u002Fcode> additionally requires a compression profile or profile resource ID.\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">headers = {\n    'Accept': 'application\u002Fjson',\n    'Content-Type': mp_encoder_compressedPdf.content_type,\n    'Api-Key': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'\n}\u003C\u002Fpre>\n\n\u003Cp>\u003Ccode>MultipartEncoder.content_type\u003C\u002Fcode> contains both \u003Ccode>multipart\u002Fform-data\u003C\u002Fcode> and the generated boundary, so it must be passed through unchanged. \u003Ccode>Api-Key\u003C\u002Fcode> authenticates the call, while \u003Ccode>Accept: application\u002Fjson\u003C\u002Fcode> requests the standard resource response.\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">response = requests.post(\n    compressed_pdf_endpoint_url,\n    data=mp_encoder_compressedPdf,\n    headers=headers\n)\u003C\u002Fpre>\n\n\u003Cp>The encoder is supplied as the request body rather than through \u003Ccode>json=\u003C\u002Fcode> or \u003Ccode>files=\u003C\u002Fcode>. This keeps the file and conversion parameters in the same multipart request.\u003C\u002Fp>\n\n\u003Cpre class=\"language-python\">if response.ok:\n    response_json = response.json()\n    print(json.dumps(response_json, indent=2))\nelse:\n    print(response.text)\u003C\u002Fpre>\n\n\u003Cp>A successful response describes the generated PDF resource, including the ID and retrieval information used by later API calls. The failure branch prints the service response so validation and processing errors are not hidden.\u003C\u002Fp>\n\n\u003Ch2>Compression and So Much More\u003C\u002Fh2>\n\n\u003Cp>In this tutorial, we walked through a Python script that calls the pdfRest Compress PDF API to compress a PDF file. By following the steps outlined, you can integrate this functionality into your own applications. To explore and demo all of the pdfRest API Tools, visit the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">API Lab\u003C\u002Fa>. For more detailed information, refer to the \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fcompress-pdf\u002F\">API Reference documentation\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Cp>Note: This is an example of a multipart API call. Code samples using JSON payloads can be found at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FPython\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Fcompressed-pdf.py\">this GitHub repository\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","658216352d4014c9499b3a02","2023-12-19T22:16:21.000+00:00","2026-09-02T18:27:04.000+00:00","Learn how to make a PDF smaller with Python by calling the Compress PDF API Tool from pdfRest.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-compress-pdf-with-python\u002F#article\",\n      \"headline\": \"How to Compress PDF with Python\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-compress-pdf-with-python\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-compress-pdf-with-python\u002F\",\n      \"datePublished\": \"2023-12-19T22:16:21.000Z\",\n      \"dateModified\": \"2026-09-01T14:25:28.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to make a PDF smaller with Python by calling the Compress PDF API Tool from pdfRest.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Compress PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fcompress-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fcompressed-pdf API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fcompress-pdf\"\n        }\n      ],\n      \"keywords\": \"Compress PDF, File Size, Python\",\n      \"dependencies\": \"Python, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Compress PDF with Python\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-compress-pdf-with-python\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3777,3778,3779,3780,3781],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1736,"name":1737,"slug":1738,"description":1283,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":1283,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2219,"name":2220,"slug":2221,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1740,"name":1741,"slug":1742,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-compress-pdf-with-python\u002F","How to Compress PDF with Python, Tutorial | pdfRest",{"id":3786,"uuid":3787,"title":3788,"slug":3789,"html":3790,"comment_id":3791,"feature_image":48,"featured":284,"visibility":1257,"created_at":3792,"updated_at":3793,"published_at":3794,"custom_excerpt":3795,"codeinjection_head":3796,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3797,"primary_tag":3802,"url":3803,"excerpt":3795,"reading_time":295,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3804,"meta_description":3795,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65ae9a86656af204db4b1358","7749558e-1949-42f7-abef-fb9b95c4720e","How to Connect to a pdfRest Self-Hosted EC2 from Windows","connect-to-a-pdfrest-self-hosted-ec2-from-windows","\u003Ch2 id=\"connect-to-a-pdfrest-ec2-instance-from-windows\">Connect to a pdfRest EC2 Instance from Windows\u003C\u002Fh2>\u003Cp>pdfRest API Toolkit on AWS runs inside infrastructure that your organization controls. When you deploy the \u003Ca href=\"https:\u002F\u002Faws.amazon.com\u002Fmarketplace\u002Fpp\u002Fprodview-zqzfwidsvldja\">pdfRest API Toolkit EC2 product\u003C\u002Fa> through its Amazon Machine Image or CloudFormation fulfillment option, you may need an SSH connection to the underlying Linux-based EC2 instance for configuration, maintenance, or troubleshooting.\u003C\u002Fp>\u003Cp>Windows users can connect with the built-in OpenSSH client or with PuTTY. OpenSSH can use an AWS \u003Ccode>.pem\u003C\u002Fcode> private key directly. PuTTY uses a \u003Ccode>.ppk\u003C\u002Fcode> key, which you can select when creating the AWS key pair or generate from an existing \u003Ccode>.pem\u003C\u002Fcode> file with PuTTYgen.\u003C\u002Fp>\u003Cp>If your team prefers a container-native deployment, pdfRest also offers a separate \u003Ca href=\"https:\u002F\u002Faws.amazon.com\u002Fmarketplace\u002Fpp\u002Fprodview-ytxnc5kdjfsuo\">API Toolkit Container Image on AWS Marketplace\u003C\u002Fa>. The Container can be deployed through services such as Amazon ECS, EKS, or Fargate and does not follow the same single-instance SSH setup described in this tutorial.\u003C\u002Fp>\u003Ch2 id=\"gather-the-ec2-connection-details\">Gather the EC2 Connection Details\u003C\u002Fh2>\u003Cp>Before connecting, confirm that the EC2 instance is running and has passed its AWS status checks. You will also need:\u003C\u002Fp>\u003Cul>\u003Cli>The instance's public DNS name or an address reachable from your network\u003C\u002Fli>\u003Cli>The Linux username shown by AWS for the selected AMI\u003C\u002Fli>\u003Cli>The private key associated with the instance\u003C\u002Fli>\u003Cli>A security-group rule that permits inbound SSH traffic on port 22 from your IP address\u003C\u002Fli>\u003C\u002Ful>\u003Cp>If the instance is private, your organization may require a VPN, bastion host, EC2 Instance Connect Endpoint, or AWS Systems Manager Session Manager instead of a direct public SSH connection.\u003C\u002Fp>\u003Ch2 id=\"option-1-connect-with-openssh-on-windows\">Option 1: Connect with OpenSSH on Windows\u003C\u002Fh2>\u003Cp>Current Windows versions commonly include the OpenSSH client. Open PowerShell or Windows Terminal and run \u003Ccode>ssh\u003C\u002Fcode> to confirm that it is available. Then connect with the private key, instance username, and DNS name supplied by AWS:\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-powershell\">ssh -i \"C:\\path\\to\\your-key.pem\" &lt;instance-user&gt;@&lt;instance-public-dns-name&gt;\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Windows must protect the private key from access by other users. If SSH reports that the key permissions are too open, follow the AWS instructions for limiting permissions on the \u003Ccode>.pem\u003C\u002Fcode> file before retrying the connection.\u003C\u002Fp>\u003Ch2 id=\"option-2-connect-with-putty\">Option 2: Connect with PuTTY\u003C\u002Fh2>\u003Cp>PuTTY remains useful for teams that prefer a graphical SSH client. If your AWS key pair was downloaded as a \u003Ccode>.pem\u003C\u002Fcode> file, open PuTTYgen, import the \u003Ccode>.pem\u003C\u002Fcode> file, and save it as a \u003Ccode>.ppk\u003C\u002Fcode> private key. You can skip the conversion if you selected the \u003Ccode>.ppk\u003C\u002Fcode> format when creating the key pair in AWS.\u003C\u002Fp>\u003Cp>In PuTTY, enter the EC2 username and public DNS name as the host, keep the SSH port set to \u003Ccode>22\u003C\u002Fcode>, and select the \u003Ccode>.ppk\u003C\u002Fcode> file under the SSH authentication settings. Save the session if you expect to reconnect to the same deployment.\u003C\u002Fp>\u003Ch2 id=\"troubleshoot-an-ec2-ssh-connection\">Troubleshoot an EC2 SSH Connection\u003C\u002Fh2>\u003Cp>If the connection times out, verify the instance state, route to the instance, public or private address, and security-group source IP. If authentication fails, confirm that you are using the key pair and Linux username associated with the deployed instance. AWS also provides browser-based connection options that may be appropriate when an organization does not permit direct SSH access.\u003C\u002Fp>\u003Cp>Store private keys securely and never place them in source control. For deployment-specific configuration, use the current \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-on-aws\u002Fgetting-started\u002F\">pdfRest API Toolkit on AWS documentation\u003C\u002Fa>. For the connection methods and security prerequisites maintained by AWS, see \u003Ca href=\"https:\u002F\u002Fdocs.aws.amazon.com\u002FAWSEC2\u002Flatest\u002FUserGuide\u002Fconnect-to-linux-instance.html\">Connect to your Linux instance using SSH\u003C\u002Fa>.\u003C\u002Fp>\u003Cp>If you need help at any point, the \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fsupport\u002F\">pdfRest Support team\u003C\u002Fa> is available to assist with deployment or configuration questions.\u003C\u002Fp>","658218652d4014c9499b3a2a","2023-12-19T22:25:41.000+00:00","2026-09-10T15:13:16.000+00:00","2023-12-19T22:37:08.000+00:00","Learn how to connect to a Linux-based EC2 instance using OpenSSH or PuTTY on Windows. Useful for connecting to your pdfRest Self-Hosted product on AWS.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fconnect-to-a-pdfrest-self-hosted-ec2-from-windows\u002F#article\",\n      \"headline\": \"How to Connect to a pdfRest Self-Hosted EC2 from Windows\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fconnect-to-a-pdfrest-self-hosted-ec2-from-windows\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fconnect-to-a-pdfrest-self-hosted-ec2-from-windows\u002F\",\n      \"datePublished\": \"2023-12-19T22:37:08.000Z\",\n      \"dateModified\": \"2026-09-09T21:00:36.237Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to connect to a Linux-based EC2 instance using OpenSSH or PuTTY on Windows. Useful for connecting to your pdfRest Self-Hosted product on AWS.\",\n      \"keywords\": \"Self-Hosted, AWS, Security\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Connect to a pdfRest Self-Hosted EC2 from Windows\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fconnect-to-a-pdfrest-self-hosted-ec2-from-windows\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3798,3799,3800,3801],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2277,"name":2278,"slug":2279,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2269,"name":2270,"slug":2271,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":1989,"name":1990,"slug":1991,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fconnect-to-a-pdfrest-self-hosted-ec2-from-windows\u002F","How to Connect to a pdfRest Self-Hosted EC2 from Windows | pdfRest",{"id":3806,"uuid":3807,"title":3808,"slug":3809,"html":3810,"comment_id":3806,"feature_image":48,"featured":284,"visibility":1257,"created_at":3811,"updated_at":3812,"published_at":3811,"custom_excerpt":3813,"codeinjection_head":3814,"codeinjection_foot":48,"custom_template":48,"canonical_url":48,"tags":3815,"primary_tag":3820,"url":3821,"excerpt":3813,"reading_time":295,"access":124,"comments":284,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":3822,"meta_description":3813,"email_subject":48,"frontmatter":48,"feature_image_alt":48,"feature_image_caption":48},"65c6a7c9533c9f26b943624d","6cc5091f-9c09-4c32-bb4a-c7b691dfd146","How to Convert BMP to PDF in .NET with C#","how-to-convert-bmp-to-pdf-in-net-with-c","\n\u003C!--kg-card-begin: html-->\n\u003Ch2>Why Convert BMP to PDF with C#?\u003C\u002Fh2>\n\n\u003Cp>The pdfRest \u003Ca href='https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fconvert-to-pdf\u002F'>Convert to PDF API Tool\u003C\u002Fa> is a powerful resource for developers who need to convert documents into PDF format programmatically. This tutorial will guide you through the process of sending an API call to Convert to PDF using C#.\u003C\u002Fp> \n  \n\u003Cp>A real-world example of why a user might use Convert to PDF could be an enterprise application that generates reports in various formats and needs to standardize them into PDFs for archiving, sharing, or printing.\u003C\u002Fp>\n\n\u003Ch2>Convert BMP to PDF with C# Code Example\u003C\u002Fh2>\n\n\u003Cpre class=\"language-csharp\">using System.Text;\n\nusing (var httpClient = new HttpClient { BaseAddress = new Uri(\"https:\u002F\u002Fapi.pdfrest.com\") })\n{\n    using (var request = new HttpRequestMessage(HttpMethod.Post, \"pdf\"))\n    {\n        request.Headers.TryAddWithoutValidation(\"Api-Key\", \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\");\n        request.Headers.Accept.Add(new(\"application\u002Fjson\"));\n        var multipartContent = new MultipartFormDataContent();\n\n        var byteArray = File.ReadAllBytes(\"\u002Fpath\u002Fto\u002Ffile\");\n        var byteAryContent = new ByteArrayContent(byteArray);\n        multipartContent.Add(byteAryContent, \"file\", \"file_name.bmp\");\n        byteAryContent.Headers.TryAddWithoutValidation(\"Content-Type\", \"text\u002Fhtml\");\n\n        var byteArrayOption = new ByteArrayContent(Encoding.UTF8.GetBytes(\"output.pdf\"));\n        multipartContent.Add(byteArrayOption, \"output\");\n        request.Content = multipartContent;\n        var response = await httpClient.SendAsync(request);\n\n        var apiResult = await response.Content.ReadAsStringAsync();\n\n        Console.WriteLine(\"API response received.\");\n        Console.WriteLine(apiResult);\n    }\n}\n\u003C\u002Fpre>\n\n\u003Cp>Reference: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FDotNET\u002FEndpoint%20Examples\u002FMultipart%20Payload\u002Fpdf.cs\">pdfRest API C# Sample Code\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Ch2>Breaking Down the Code\u003C\u002Fh2>\n\n\u003Cp>The code above demonstrates how to make a multipart\u002Fform-data POST request to the pdfRest API to convert a document to PDF.\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">using (var httpClient = new HttpClient { BaseAddress = new Uri(\"https:\u002F\u002Fapi.pdfrest.com\") })\n\u003C\u002Fpre>\n\n\u003Cp>This line initializes a new \u003Ccode>HttpClient\u003C\u002Fcode> instance with the base address set to the pdfRest API.\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">request.Headers.TryAddWithoutValidation(\"Api-Key\", \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\");\n\u003C\u002Fpre>\n\n\u003Cp>The API key is added to the request headers. Replace \u003Ccode>\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"\u003C\u002Fcode> with your actual API key.\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">var byteArray = File.ReadAllBytes(\"\u002Fpath\u002Fto\u002Ffile\");\nmultipartContent.Add(byteAryContent, \"file\", \"file_name\");\n\u003C\u002Fpre>\n\n\u003Cp>Here, the file to be converted is read into a byte array and added to the multipart form data content with the name \u003Ccode>\"file\"\u003C\u002Fcode>. Replace \u003Ccode>\"\u002Fpath\u002Fto\u002Ffile\"\u003C\u002Fcode> with the path to your source file, and \u003Ccode>\"file_name\"\u003C\u002Fcode> with the actual file name.\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">byteAryContent.Headers.TryAddWithoutValidation(\"Content-Type\", \"text\u002Fhtml\");\n\u003C\u002Fpre>\n\n\u003Cp>The content type for the file is set to \u003Ccode>\"text\u002Fhtml\"\u003C\u002Fcode>. This should be changed to match the content type of your source file.\u003C\u002Fp>\n\n\u003Cpre class=\"language-csharp\">var response = await httpClient.SendAsync(request);\nvar apiResult = await response.Content.ReadAsStringAsync();\n\u003C\u002Fpre>\n\n\u003Cp>Finally, the request is sent asynchronously, and the response is read as a string. The result is then printed to the console.\u003C\u002Fp>\n\n\u003Ch2>Beyond the Tutorial\u003C\u002Fh2>\n\n\u003Cp>In this tutorial, we've accomplished the task of converting a document to PDF using the pdfRest API and C#. The code sample provided demonstrates a multipart\u002Fform-data request, which is suitable for file uploads. We encourage you to demo all of the pdfRest API Tools in the API Lab at \u003Ca href=\"https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\">https:\u002F\u002Fpdfrest.com\u002Fapilab\u002F\u003C\u002Fa> and to refer to the API Reference documentation at \u003Ca href=\"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\">https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002F\u003C\u002Fa> for further exploration and understanding of the full capabilities of the API.\u003C\u002Fp>\n\n\u003Cp>Note: This is an example of a multipart API call. Code samples using JSON payloads can be found at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpdfrest\u002Fpdfrest-api-samples\u002Fblob\u002Fmain\u002FDotNET\u002FEndpoint%20Examples\u002FJSON%20Payload\u002Fpdf.cs\">JSON Payload Examples\u003C\u002Fa>.\u003C\u002Fp>\n\u003C!--kg-card-end: html-->\n","2024-02-09T22:31:37.000+00:00","2026-09-02T18:27:05.000+00:00","Learn how to use .NET to convert BMP image files to PDF files by calling Convert to PDF API Tool by pdfRest.","{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"TechArticle\",\n      \"@id\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-bmp-to-pdf-in-net-with-c\u002F#article\",\n      \"headline\": \"How to Convert BMP to PDF in .NET with C#\",\n      \"url\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-bmp-to-pdf-in-net-with-c\u002F\",\n      \"mainEntityOfPage\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-bmp-to-pdf-in-net-with-c\u002F\",\n      \"datePublished\": \"2024-02-09T22:31:37.000Z\",\n      \"dateModified\": \"2026-09-01T14:23:49.000Z\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"pdfRest\",\n        \"url\": \"https:\u002F\u002Fpdfrest.com\u002F\",\n        \"logo\": {\n          \"@type\": \"ImageObject\",\n          \"url\": \"https:\u002F\u002Fcms.pdfrest.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FpdfRest_submark_750_750.png\"\n        }\n      },\n      \"description\": \"Learn how to use .NET to convert BMP image files to PDF files by calling Convert to PDF API Tool by pdfRest.\",\n      \"about\": [\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"Convert to PDF API Tool\",\n          \"url\": \"https:\u002F\u002Fpdfrest.com\u002Fapitools\u002Fconvert-to-pdf\u002F\"\n        },\n        {\n          \"@type\": \"Thing\",\n          \"name\": \"POST \u002Fpdf API endpoint\",\n          \"url\": \"https:\u002F\u002Fdocs.pdfrest.com\u002Fpdfrest-api-toolkit-cloud\u002Fapi-reference-guide\u002Ftool\u002Fconvert-to-pdf\"\n        }\n      ],\n      \"keywords\": \".NET, Convert to PDF\",\n      \"dependencies\": \".NET, pdfRest API key\"\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Learning\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Tutorials\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002F\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How to Convert BMP to PDF in .NET with C#\",\n          \"item\": \"https:\u002F\u002Fpdfrest.com\u002Flearning\u002Ftutorials\u002Fhow-to-convert-bmp-to-pdf-in-net-with-c\u002F\"\n        }\n      ]\n    }\n  ]\n}",[3816,3817,3818,3819],{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},{"id":2709,"name":2710,"slug":2710,"description":2711,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2712},{"id":1394,"name":1395,"slug":1396,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2231,"name":2232,"slug":2233,"description":48,"feature_image":48,"visibility":1282,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":1284},{"id":2705,"name":2706,"slug":2706,"description":48,"feature_image":48,"visibility":1257,"og_image":48,"og_title":48,"og_description":48,"twitter_image":48,"twitter_title":48,"twitter_description":48,"meta_title":48,"meta_description":48,"codeinjection_head":48,"codeinjection_foot":48,"canonical_url":48,"accent_color":48,"url":2707},"https:\u002F\u002Fcms.pdfrest.com\u002Fhow-to-convert-bmp-to-pdf-in-net-with-c\u002F","How to Convert BMP to PDF in .NET with C#, Tutorial | pdfRest",{"pagination":3824},{"page":5,"limit":323,"pages":466,"total":3825,"next":295,"prev":48},495,{"data":3827,"meta":3923},{"id":5,"createdAt":6,"updatedAt":7,"publishedAt":8,"stateful_cta":3828,"documentId":43,"seo":3848,"api_tool_buckets":3861,"nav":3870,"footer_developers":3891,"footer_products":3911},{"pro":3829,"default":3833,"premium":3836,"starter":3840,"enterprise":3844},{"links":3830,"title":18,"description":19},[3831,3832],{"to":13,"label":14},{"to":16,"label":17},{"links":3834,"title":25,"description":26},[3835],{"label":23,"action":24},{"links":3837,"title":18,"description":19},[3838,3839],{"to":13,"label":14},{"to":16,"label":17},{"links":3841,"title":37,"description":38},[3842,3843],{"to":34,"label":35},{"to":16,"label":17},{"links":3845,"title":18,"description":19},[3846,3847],{"to":13,"label":14},{"to":16,"label":17},{"id":45,"metaTitle":46,"metaDescription":47,"canonicalUrl":48,"structured_data":3849},{"@graph":3850,"@context":85},[3851,3856,3858],{"@id":52,"url":53,"logo":3852,"name":57,"@type":58,"sameAs":3853,"knowsAbout":3854,"description":71,"parentOrganization":3855},{"url":55,"@type":56},[60,61,62],[64,65,66,67,68,69,70],{"url":73,"name":74,"@type":58},{"@id":76,"url":53,"name":57,"@type":77,"publisher":3857},{"@id":52},{"@id":80,"url":53,"name":46,"@type":81,"about":3859,"isPartOf":3860,"description":84},{"@id":52},{"@id":76},[3862,3863,3864,3865,3866,3867,3868,3869],{"id":209,"name":210,"description":211,"createdAt":212,"updatedAt":213,"publishedAt":214,"rank":215,"documentId":216},{"id":5,"name":273,"description":274,"createdAt":275,"updatedAt":276,"publishedAt":277,"rank":5,"documentId":278},{"id":295,"name":504,"description":505,"createdAt":506,"updatedAt":507,"publishedAt":508,"rank":295,"documentId":509},{"id":394,"name":665,"description":666,"createdAt":667,"updatedAt":668,"publishedAt":669,"rank":320,"documentId":670},{"id":369,"name":811,"description":812,"createdAt":813,"updatedAt":814,"publishedAt":815,"rank":345,"documentId":816},{"id":320,"name":934,"description":935,"createdAt":936,"updatedAt":937,"publishedAt":938,"rank":369,"documentId":939},{"id":345,"name":1055,"description":1056,"createdAt":1057,"updatedAt":1058,"publishedAt":1059,"rank":394,"documentId":1060},{"id":419,"name":1153,"description":1154,"createdAt":1155,"updatedAt":1156,"publishedAt":1157,"rank":419,"documentId":1158},[3871,3872,3873,3874,3882,3889,3890],{"id":88,"label":89,"description":48,"to":13,"icon":48,"external":48,"target":48,"children":48,"__component":90},{"id":92,"label":93,"description":48,"to":94,"icon":48,"external":48,"target":48,"children":48,"__component":90},{"id":96,"label":97,"description":48,"to":98,"icon":48,"external":48,"target":48,"children":48,"__component":90},{"id":100,"label":101,"description":48,"to":102,"icon":48,"external":48,"target":48,"children":3875,"__component":90},[3876,3881],{"to":102,"label":105,"children":3877,"description":119},[3878,3879,3880],{"to":108,"label":109,"description":110},{"to":112,"label":113,"description":114},{"to":116,"label":117,"description":118},{"to":121,"label":122,"target":123,"external":124,"description":125},{"id":127,"label":128,"description":48,"to":16,"icon":48,"external":48,"target":48,"children":3883,"__component":90},[3884],{"to":16,"label":105,"children":3885,"description":119},[3886,3887,3888],{"to":133,"label":109,"exactHash":124,"description":110},{"to":135,"label":113,"exactHash":124,"description":118},{"to":137,"label":117,"exactHash":124,"description":118},{"id":139,"label":140,"description":48,"to":141,"icon":48,"external":48,"target":123,"children":48,"__component":90},{"id":143,"label":144,"description":48,"to":145,"icon":48,"external":48,"target":123,"children":48,"__component":90},[3892,3896,3901,3908],{"id":148,"label":149,"description":48,"to":48,"icon":48,"external":48,"target":48,"children":3893,"__component":90},[3894,3895],{"to":152,"label":153,"target":123,"external":124},{"to":155,"label":156,"target":123,"external":124},{"id":158,"label":159,"description":48,"to":48,"icon":48,"external":48,"target":48,"children":3897,"__component":90},[3898,3899,3900],{"to":162,"label":109,"target":123,"external":124},{"to":164,"label":117,"target":123,"external":124},{"to":166,"label":113,"target":123,"external":124},{"id":168,"label":169,"description":48,"to":48,"icon":48,"external":48,"target":48,"children":3902,"__component":90},[3903,3904,3905,3906,3907],{"to":13,"label":89},{"to":173,"label":174,"target":123,"external":124},{"to":176,"label":177,"target":123,"external":124},{"to":179,"label":180,"target":123,"external":124},{"to":182,"label":183,"target":123,"external":124},{"id":185,"label":144,"description":48,"to":48,"icon":48,"external":48,"target":48,"children":3909,"__component":90},[3910],{"to":145,"label":188,"target":123,"external":124},[3912,3918],{"id":191,"label":105,"description":48,"to":48,"icon":48,"external":48,"target":48,"children":3913,"__component":90},[3914,3915,3916,3917],{"to":108,"label":109},{"to":116,"label":117},{"to":112,"label":113},{"to":16,"label":128},{"id":198,"label":122,"description":48,"to":48,"icon":48,"external":48,"target":48,"children":3919,"__component":90},[3920,3921,3922],{"to":121,"label":201,"target":123,"external":124},{"to":203,"label":204,"target":123,"external":124},{"to":206,"label":128,"target":123,"external":124},{},1790965728996]