Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

In a canvas app, add the experimental control from Insert > PDF viewer (experimental), then set its Document property to either a directly reachable HTTPS PDF URL or a PDF value produced by the experimental PDF function. The hosted file must be an anonymous, direct PDF response with no redirect or HTML viewer, and its server must allow the required cross-origin requests from powerapps.com.

This guide covers both workflows, navigation properties, generated-PDF integrations, accessibility, failure diagnosis, and a browser-free option for creating website captures.

What the Power Apps PDF viewer can and cannot do

Microsoft describes PDF viewer as “an experimental control that shows the content of a PDF file.” It renders supported PDF32000 documents inside a canvas app, but it is not a full desktop PDF reader.

  • Supported: viewing pages, changing page and zoom state, and searching text when the document exposes searchable text.
  • Not supported: printing from the control, running embedded scripts, or activating embedded PDF buttons.
  • Fallback: expose the control menu so a user can open the document in an external browser when in-app rendering fails or a browser is required.

Because the control is experimental, accessibility support is incomplete. Give the viewer a meaningful heading Label immediately before it, and set ShowControls to true when users need the external-browser option.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Requirements for a hosted PDF

Requirement What to verify
Transport The address starts with https://. Plain HTTP links are rejected.
Response The URL resolves directly to the PDF bytes. Redirects and HTML document-viewer pages are unsupported.
Access The file is anonymously accessible; authentication-protected downloads cannot be loaded by the control.
Cross-origin policy The host permits the required requests from powerapps.com. Restrictive CORS headers can stop rendering.
File format The document conforms to the PDF32000 specification.

Display a PDF hosted at a URL

  1. Open the canvas app in Power Apps Studio.
  2. Choose Insert > PDF viewer (experimental).
  3. Select the new control. In the property selector, choose Document.
  4. Enter a quoted HTTPS URL that returns the PDF itself, for example:
    "https://example.com/file.pdf"
  5. Confirm that the web host allows anonymous access and cross-origin requests from powerapps.com.
  6. Set the control dimensions so the page area and controls are usable on the target screen. Set ShowControls to true if users should be able to open the file externally.

Do not paste a link to a SharePoint preview page, a login route, or an HTML wrapper. The viewer needs the actual PDF response. If the address redirects first, publish a non-redirecting download URL or use an external browser instead.

Add page, zoom, and search behavior

The control exposes state and command properties that you can bind to labels, buttons, sliders, and text inputs.

Property Typical use
Page Set or display the page being viewed.
PageCount Show the total number of pages.
CurrentPage Read the currently displayed page for a page indicator.
Zoom and ActualZoom Provide a zoom setting and read the effective zoom value.
FindText Supply the text to search for.
CurrentFindText Read the active search text.
FindNext and FindPrevious Connect buttons to move between search matches.
DisplayMode, Visible, Width, Height, X, and Y Control availability, visibility, size, and position like other canvas controls.
ShowControls Show the built-in menu, including the external-browser fallback.
OnSelect, OnStateChange, and Tooltip Respond to interaction or state changes and provide descriptive help text.

Microsoft documents these keyboard shortcuts for the viewer: J or N moves down a page, K moves up a page, and R rotates all pages 90 degrees clockwise. Treat shortcuts as an enhancement; provide visible buttons or instructions for touch and keyboard users who do not know them.

Generate a PDF from the current app screen

The separate experimental PDF function generates a PDF from the contents of the screen or certain supported controls. It can capture only the screen currently visible to the user.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  1. In Power Apps Studio, open Settings > Upcoming features > Experimental.
  2. Enable PDF function.
  3. On a button, set OnSelect to:
    Set(myPDF, PDF(SubmitInspectionScreen));
  4. Insert Insert > PDF viewer (experimental).
  5. Set the viewer’s Document property to myPDF.
  6. Preview the app, select the button, and verify that the generated document appears.

If you need only part of a screen, place that content in a container or gallery and target the container or gallery with PDF. Targeting a whole screen that contains the PDF viewer can produce a black shape in the output; capture the content container or gallery instead.

Send or store a generated PDF

Outlook email

You can use the Outlook connector and pass the generated PDF as attachment content. A button can generate and send it in one action:

Office365Outlook.SendEmailV2(
    "[email protected]",
    "Inspection PDF",
    "Attached is the inspection document.",
    {
        Attachments: Table(
            {
                Name: "inspection.pdf",
                ContentBytes: PDF(SubmitInspectionScreen)
            }
        )
    }
)

For a document that users may preview first, store it with Set(myPDF, PDF(SubmitInspectionScreen)), bind the viewer to myPDF, and use that same value when sending.

Power Automate and SharePoint

  1. Create a cloud flow with the PowerApps (V2) trigger.
  2. Add a File input for the PDF and a Text input for any filename or metadata your flow needs.
  3. Call the flow from the canvas app and pass the generated PDF value.
  4. In the flow, use SharePoint Create file to write the file to a document library.
  5. Pass a filename ending in .pdf and verify the library and folder permissions before testing with end users.

Troubleshoot a PDF that will not load

The link uses HTTP

Symptom: the viewer stays empty or rejects the address. Fix: serve the file over HTTPS and update the Document formula to the HTTPS URL.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The address redirects or shows a web page

Symptom: the same link works in a browser but not in the control. Cause: the URL returns a redirect, login page, or HTML PDF viewer. Fix: obtain a direct, non-redirecting URL whose response is the PDF bytes.

The file requires sign-in

Symptom: a private SharePoint, storage, or application URL fails. Cause: the control requires anonymous access and cannot complete an interactive authentication flow. Fix: publish an appropriately secured anonymous PDF endpoint, or use the external browser where the user can authenticate. Do not expose confidential files through an anonymous URL unless that is an intentional security decision.

CORS blocks the request

Symptom: the URL is a valid public PDF, but rendering still fails. Cause: the host’s cross-origin policy does not allow requests from powerapps.com. Fix: configure the PDF host to allow the required origin, then test again. A browser’s developer tools can help confirm a CORS error.

The document is malformed or unsupported

Symptom: only some files fail. Cause: the file does not conform to the PDF32000 specification or uses content the experimental renderer cannot process. Fix: regenerate or re-export the PDF with a standards-compliant PDF producer and test a simple document to isolate the file.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Scripts, buttons, or printing do nothing

This is expected behavior: embedded scripts and buttons do not execute, and printing is not supported by the control. Use a static PDF for in-app reading and direct users to the external browser when those capabilities are essential.

The generated preview is a black rectangle

When the screen being captured contains the viewer itself, the generated result can include a black shape. Change the PDF target to the content container or gallery that holds the material you want to export.

Users cannot find a way out of the viewer

Set ShowControls to true, add a heading Label immediately before the viewer, and provide a clearly labeled external-open instruction. This is especially important because accessibility support remains incomplete while the control is experimental.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Design and reliability checklist

  • Use a stable HTTPS URL that returns only the PDF, not a preview page.
  • Confirm anonymous access and CORS before distributing the app.
  • Keep the viewer’s width and height large enough for reading and expose page and zoom controls for touch users.
  • Use a container or gallery as the PDF target when exporting a subsection of a screen.
  • Test a small standards-compliant PDF and a multi-page PDF before connecting production data.
  • Provide an external-browser path because printing, embedded actions, and some inaccessible content cannot be handled in-app.
  • Review whether an anonymous URL is appropriate for the data; the viewer itself does not provide an authentication prompt.

Or skip the browser setup

If your source is a public website and you need a clean image or PDF capture for a Power Apps workflow, ScreenshotNeo is a separate website screenshot API and MCP server—not a replacement for the Power Apps PDF viewer. It can capture a page with one GET request, remove cookie-consent banners, newsletter popups, and chat widgets before capture, and return PNG, JPEG, WebP, or PDF. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed; response headers identify the page verdict and billing result. Its MCP server provides take_screenshot, get_page_info, and capture_pdf tools for Claude, Cursor, and other MCP clients.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Use the documented request format at ScreenshotNeo’s API documentation:

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);

ScreenshotNeo includes full-page capture with lazy images, CSS-selector element capture, dark mode, device presets and custom viewports, retina scale, custom CSS and JavaScript, click and wait actions, request/resource blocking, headers, cookies, user agents, authorization, timezone and geolocation controls, transparent backgrounds, resizing, chosen-TTL caching, signed links, asynchronous jobs with signed webhooks, bulk capture for up to 100 URLs per call, a usage API, an OpenAPI specification, and parameter names used by other screenshot APIs. Every feature is on every plan: 1,000 shots per month are free with no card; paid plans start at $5 for 3,000 shots. Create a free ScreenshotNeo account.

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.