Adobe PDF Services can convert static or dynamic HTML, a ZIP package of HTML assets, or a webpage URL into a PDF. The REST operation is POST https://pdf-services.adobe.io/operation/htmltopdf; send an API key and Bearer token, then poll the job and download its result. Keep credentials on a trusted server, package local assets correctly, and account for the API’s documented file-size and request-rate limits.
Choose the right kind of HTML input
Adobe’s HTML-to-PDF operation supports three input patterns: a single HTML document, a ZIP package of a page and its local assets, or a URL. Choose based on where the content and its dependencies live. This is a document-conversion workflow: it is distinct from taking an image screenshot of a webpage.
| Input | Use it when | Preparation |
|---|---|---|
| Single HTML file | The page is self-contained, with CSS and other required content inline. | Provide the HTML as text/html. |
| ZIP package | The page refers to local stylesheets, images, or other packaged assets. | Put index.html at the ZIP’s top level. Include referenced files and preserve their relative paths. |
| URL | The content is available at a webpage address and should be rendered from that URL. | Supply the URL through inputURL. Adobe’s request options include waitTimeToLoad for allowing page content time to load. |
For a ZIP, check the archive itself before uploading: a common packaging mistake is putting the whole site inside a containing folder so that index.html is one directory below the archive root. Adobe specifies the top-level location, so arrange the ZIP so its first-level contents include index.html. For a standalone document, inline CSS avoids the need to resolve a separate stylesheet.
Keep credentials on the server
Create Adobe service-principal credentials and store the client ID and secret in server-side environment variables or another secure server-side secret store. Do not embed them in browser JavaScript, a mobile app, a public repository, or an end-user device. Adobe states: “The SDK only supports server-based use cases where credentials are saved securely in a safe environment. SDK credentials should not be sent to untrusted environments or end user devices.”
Free tools Windows power users keep installed
One-click scans. No signup required.
#1 Best Overall
- Create and edit PDFs. Collaborate with ease. E-sign documents and collect signatures. Get everything done in one app, wherever you go.
- Edit text and images without jumping to another app.
- E-sign documents or request e-signatures on any device. Recipients don’t need to log in to e-sign.
- Convert PDFs to editable Microsoft Word, Excel, or PowerPoint documents.
- Share PDFs for collaboration. Commenting features make it easy for reviewers to comment, mark up, and annotate.
The HTML-to-PDF REST request uses both an API key in x-api-key and a Bearer token in Authorization. The credential setup and token lifecycle are separate from the conversion call: obtain the token using your Adobe service-principal setup, keep it private, and send it from your server. The operation’s documented request also uses Content-Type: application/json.
REST workflow: submit, poll, and save the PDF
The REST operation is asynchronous in the documented workflow. Prepare or upload the input asset, submit the HTML-to-PDF job, poll the returned job URL, retrieve the result asset, and save the returned stream. Adobe’s request supports fields including assetID, json, includeHeaderFooter, pageLayout, and waitTimeToLoad. The exact asset-upload and token-acquisition steps depend on the Adobe credentials and asset flow configured for your integration; use Adobe’s current API documentation for those service-specific details.
Rank #2
- Transform static files into dynamic workspaces with instant answers and insights using PDF Spaces.
- Generate new ideas, summarize information, and get next steps with pre-built or customized assistants.
- Effortlessly create standout content using Adobe Express templates, creative assets, and design tools that bring your content to life.
- Create, organize, edit, and sign your documents with a complete set of PDF tools.
- Convert PDFs to editable Microsoft Word, Excel, or PowerPoint documents.
The following cURL command shows the conversion request shape once you have an uploaded asset ID and a valid Bearer token. Replace the three environment-variable values before running it. Adobe documents the operation endpoint and these headers; the JSON request body identifies the input asset.
export ADOBE_API_KEY='YOUR_ADOBE_API_KEY'
export ADOBE_ACCESS_TOKEN='YOUR_BEARER_TOKEN'
export ADOBE_ASSET_ID='YOUR_UPLOADED_ASSET_ID'
curl -X POST 'https://pdf-services.adobe.io/operation/htmltopdf'
-H "x-api-key: ${ADOBE_API_KEY}"
-H "Authorization: Bearer ${ADOBE_ACCESS_TOKEN}"
-H 'Content-Type: application/json'
-d "{"assetID":"${ADOBE_ASSET_ID}"}"
-i
Inspect the response for the job information and poll the returned job URL as directed by Adobe’s API response. When the job completes, retrieve its result asset and write the response stream to a file such as output.pdf. Do not assume the first response body is the finished PDF: submission, status polling, and result retrieval are distinct parts of the workflow.
Rank #3
- Perfect Adobe Acrobat Pro alternative – lifetime license for Windows 10 and 11.
- EDIT text, images, pages, hyperlinks, designs in PDF documents. ORGANIZE PDFs.
- READ and Comment on PDFs – Intuitive reading modes & document commenting and mark up tools!
- CREATE, COMBINE, SCAN and COMPRESS PDFs.
- FILL forms & Digitally Sign PDFs. Work with Digital certificates
Adobe’s documentation also describes URL input and the request’s json field, but the precise schema for these inputs should be taken from the current operation reference rather than guessed. The REST example above is intentionally limited to the documented asset identifier and headers. Adobe’s [PDF creation how-to](https://developer.adobe.com/document-services/docs/overview/pdf-services-api/howtos/create-pdf) explains the job/result pattern and notes an output-handling edge case: if includeRenderedHtml is enabled, the output is a ZIP containing the generated PDF and rendered HTML. Unzip it before passing the PDF to another system.
Adobe SDK flow and page controls
Adobe’s Node.js SDK follows the same broad sequence while wrapping service operations in SDK objects: construct ServicePrincipalCredentials, create PDFServices, upload an input asset, create an HTMLToPDFJob, submit it, poll the returned URL, download the result asset, and save the stream. Use the SDK if you prefer its job and asset abstractions; use REST when you want to call the operation directly. In either case, credentials belong on the server.
Rank #4
- Work securely offline — without connecting to the cloud — with desktop-only PDF tools.
- Edit text and images and reorder and delete pages in a PDF.
- Convert PDFs to Microsoft Word, Excel, or PowerPoint files while preserving fonts, formatting, and layouts.
- Easily create, fill, and sign forms.
- Password-protect documents or redact sections of a PDF to keep sensitive information secure.
Choose the input and rendering options with the output in mind:
- Input packaging: Use inline HTML for a single self-contained file, a root-level
index.htmlZIP for multiple local assets, orinputURLfor a page served at a URL. - Page dimensions: The sample exposes page width and page height through
pageLayout. Set dimensions appropriate to the document rather than assuming a webpage’s screen dimensions map to the desired paper size. - Headers and footers: Use
includeHeaderFooterwhen the generated document should include them; check the operation reference for the accepted value structure. - Load time: For URL input,
waitTimeToLoadis available to let page content load before conversion. It is a rendering control, not a guarantee that every remote dependency or delayed element will be ready. - Output form: Normally retrieve and save the PDF asset. If rendered HTML is included, treat the result as a ZIP and extract the PDF.
The official material used here establishes supported input types and configuration options, but does not establish independent rendering-fidelity, latency, JavaScript-execution, or error-rate benchmarks. If exact pagination or complex dynamic content is critical, validate the output with representative pages from your own site and configuration.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Best Value
- Create PDF's: Convert any Office file, image, or web page into a high-quality PDF that looks great on any device — desktop, tablet, or smartphone.
- Convert PDF's: Work seamlessly with PDF files, right inside Microsoft 365. You can convert your files with the built-in PDF converter or work with Microsoft 365 files in Acrobat.
- Edit PDF's: Change text and images without leaving your PDF. With Acrobat, it’s easy to edit PDF documents from anywhere, on any mobile device.
- Share PDF's: PDF sharing and reviewing is easy. You can share a link and then review and manage all your feedback online or from your mobile device in one organized place.
- Sign PDF's: Share, track, and manage all your signed documents virtually from anywhere
Limits, monthly allowance, and request rates
Adobe measures API use in Document Transactions. For the Create operation, the transaction basis includes static or dynamic HTML, inline-CSS HTML, and URL HTML. Adobe lists 500 free Document Transactions per month. The quota is a monthly allowance, not an unlimited conversion tier.
| Constraint | Adobe-published value | Applies to |
|---|---|---|
| Free allowance | 500 Document Transactions per month | Adobe PDF Services API free tier, as listed by Adobe in 2026. |
| JSON request limit | 10 MB | Document Generation, HTML to PDF, and Import PDFForm. |
| Document file-size limit | 100 MB | Adobe’s stated document file-size limit. |
| Maximum request rate | 25 requests per minute | Free Tier. |
| Maximum request rate | 100 requests per minute | Enterprise. |
| Paid processing quota | Greater quota under a separate written agreement | Paid credentials; Adobe does not state a general public quota figure in the cited limits. |
Plan around the transaction allowance, payload size, and request rate together. A batch of conversions can hit a per-minute limit even when monthly usage remains, while a large HTML payload can exceed the JSON limit regardless of how many transactions remain. Adobe’s stated paid processing quota is governed by separate written agreement, so confirm the applicable quota and terms for your account rather than extrapolating from the free tier.
Common failures and practical fixes
- Authentication is rejected: Confirm the request includes both
x-api-keyandAuthorization: Bearer ..., and check that the token is valid for your service-principal credentials. Keep the client ID and secret on the server; do not try to fix an authentication issue by exposing credentials in a browser. - The input asset cannot be used: Verify that upload completed and that the submitted
assetIDis the identifier returned for that input. For ZIP input, putindex.htmlat the archive root and ensure referenced asset paths match the archive layout. - URL content is missing or incomplete: Confirm the supplied URL is the intended page and allow an appropriate
waitTimeToLoadfor content that appears after the initial response. The option controls waiting; it does not guarantee that remote assets or delayed content will load successfully. - The request is too large: Check the JSON payload against Adobe’s 10 MB limit for HTML to PDF and the document against the stated 100 MB file limit. Reduce or reorganize the input if it exceeds the relevant limit.
- Requests are throttled: Stay within the applicable maximum request rate: Adobe lists 25 RPM for Free Tier and 100 RPM for Enterprise. Pace submissions and poll jobs in line with the limits for your account.
- A downstream system cannot read the result as a PDF: Check whether
includeRenderedHtmlwas enabled. In that case, Adobe says the result is a ZIP containing the PDF and rendered HTML; extract the PDF before handing it off. - The PDF layout differs from what you expected: Review the supplied HTML, page width and height, header/footer setting, and load wait for URL input. The available sources do not provide a universal rendering-fidelity guarantee, so verify important layouts with representative pages.
Or skip the browser setup
If your actual need is a clean capture of a published webpage rather than conversion of an HTML file or ZIP, [ScreenshotNeo](https://screenshotneo.com) is a separate screenshot API and MCP server. It can return screenshots or PDFs; it does not replace Adobe’s workflow for uploading an HTML asset package. Its one-call screenshot example is:
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
See the [ScreenshotNeo API documentation](https://screenshotneo.com/docs/) for its parameters and output options. Before capture, it accepts cookie or consent banners like a visitor and removes more than 60 known consent platforms, newsletter popups, and chat widgets; each of those steps can be turned off. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and response headers report the page verdict and billing status. Its MCP server provides take_screenshot, get_page_info, and capture_pdf tools for Claude, Cursor, and other MCP clients. The free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000 shots.
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Clear out junk files and repair common Windows errors3Fix the driver behind crashes, sound loss and screen glitchesSign up for ScreenshotNeo free: 1,000 screenshots a month, no card required.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




