How is your experience with the OutSystems Community?
adobe-pdf-embed-api
Reactive icon

Adobe PDF Embed API

Stable version 1.1.4 (Compatible with OutSystems 11)
Uploaded
 on 9 Nov (12 hours ago)
 by 
3.7
 (3 ratings)
adobe-pdf-embed-api

Adobe PDF Embed API

Details
Embeds high-fidelity, interactive PDF documents directly into OutSystems Reactive Web and Mobile apps using the free client-side Adobe PDF Embed API. Supports rendering PDFs from both URLs and OutSystems Binary Data, with customizable embed modes, annotations, interactive form filling, zoom/page layouts, and Lightbox modals.
Read more

Adobe PDF Embed API brings Adobe Acrobat-grade PDF rendering directly into your OutSystems Reactive Web and Mobile applications using Adobe’s 100% free client-side JavaScript SDK—with no server-side dependencies, watermarks, or usage limits.

Instead of relying on inconsistent browser-native <iframe> PDF viewers or forcing users to download files, this component gives you full control over how PDFs look and behave inside your application.

Key Features

  • Two Ready-to-Use Web Blocks:
    • ViewPDFByLocation: Render PDFs directly from a URL (LocationURL), with optional HTTP byte-range streaming (EnableLinearization) for fast first-page rendering.
    • ViewPDFBinary: Render PDFs directly from OutSystems BinaryData (PDFBinary) stored in database entities, returned by REST APIs, or uploaded via the Upload widget.
  • 4 Flexible Embed Modes (Entities.EmbedMode):
    • Full Window (FULL_WINDOW): Full Acrobat workspace filling the parent container—supports commenting, annotations, and interactive form filling.
    • Sized Container (SIZED_CONTAINER): Compact viewer ideal for dashboard cards and embedded panels.
    • In-Line (IN_LINE): Renders all PDF pages seamlessly within the webpage’s vertical scroll flow.
    • Lightbox (LIGHT_BOX): Opens the PDF in a centered modal overlay bound to any OutSystems button or link via LightboxTrigger.
  • Initial Zoom & Page Spread Controls (Entities.ViewMode):
    • Configure initial view modes including FIT_WIDTH, FIT_PAGE, TWO_COLUMN, and TWO_COLUMN_FIT_PAGE.
  • Granular UI & Toolbar Customization:
    • Independently toggle Annotations & Commenting (ShowAnnotation), Interactive AcroForms Filling (EnableFormFilling), Download (ShowDownloadPDF), Print (ShowPrintPDF), Full Screen (ShowFullScreen), Zoom Controls (ShowZoomControl), Page Controls (ShowPageControls / DockPageControls), and the Left Navigation Sidebar (ShowLeftPane, ShowThumbnails, ShowBookmarks).
  • Enterprise & SPA Ready:
    • Built-in singleton Promise SDK loader prevents race conditions when placing multiple PDF viewers on the same screen.
    • Instant client-side re-rendering on parameter changes (OnParametersChanged) with zero extra server round-trips and automatic DOM/event cleanup on unmount (OnDestroy).
    • Configurable AdobeScriptURL Site Property for organizations with strict Content Security Policies (CSP) or self-hosted SDK proxies.
    • Includes an interactive Demo Application (AdobePDFEmbedAPI_Demo) to test all modes, parameters, and local PDF uploads out of the box.
Release notes (1.1.4)

Adobe PDF Embed API – Release Notes

Version Summary

This major update introduces significant performance optimizations, a Promise-based SDK loader, advanced PDF viewer customization options, interactive form filling, and a new interactive Demo module (AdobePDFEmbedAPI_Demo), 


What’s New

  • ViewMode Static Entity & DefaultViewMode Parameter:
    • Control initial zoom and page layout:
      • FIT_WIDTH (Default) – Scales page width to fill container; optimal for document readability.
      • FIT_PAGE – Fits whole page within container height.
      • TWO_COLUMN – Side-by-side spread layout.
      • TWO_COLUMN_FIT_PAGE – 2-column view fitted to page height.
  • Toolbar & Navigation Controls:
    • ShowFullScreen: Enables a full-screen expansion toggle in the viewer toolbar (especially valuable when embedded inside cards or dashboards in SIZED_CONTAINER mode).
    • ShowZoomControl: Toggle zoom in, zoom out, and reset zoom buttons.
    • ShowThumbnails & ShowBookmarks: Independently toggle thumbnail and outline panels inside the left sidebar (FULL_WINDOW and IN_LINE modes).
  • Interactive AcroForms Support (EnableFormFilling):
    • Allows end-users to interact with and fill out PDF form fields directly in the embedded viewer (FULL_WINDOW mode).
  • Fast Web Streaming for URLs (EnableLinearization on ViewPDFByLocation):
    • Enables HTTP byte-range streaming for linearized (web-optimized) PDFs in ViewPDFByLocation, rendering Page 1 immediately before the full file finishes downloading.
    • ViewPDFBinary automatically sets enableLinearization: false to prevent Adobe ValidationService errors with in-memory binary payloads.
  • Persistent Session & Annotation Support (DocumentId):
    • Optional unique document identifier passed to the Adobe SDK to persist comments, annotations, and search states across user sessions.
  • Configurable Adobe SDK CDN (AdobeScriptURL Site Property):
    • Added a configurable AdobeScriptURL site property (defaulting to Adobe’s official CDN https://acrobatservices.adobe.com/view-sdk/viewer.js), enabling enterprise environments with strict CSP or sovereign cloud policies to self-host or proxy the Adobe View SDK.
  • Enhanced Service Studio Documentation & Defaults:
    • Standardized EmbedMode default values to Entities.EmbedMode.SizedContainer and added detailed parameter descriptions across both blocks specifying mode compatibility (FULL_WINDOW, SIZED_CONTAINER, IN_LINE, LIGHT_BOX).

Performance & Reliability Improvements

  • Promise-Gated SDK Loader (Resolved AdobeDC is not defined Race Condition):
    • Refactored AddAdobeScript to use a singleton global Promise (window._adobeSdkPromise) synchronized with adobe_dc_view_sdk.ready. Multiple viewer blocks on the same screen now safely await the single script load without race conditions or duplicate <script> tags.
  • SPA Re-Initialization & Unmount Safety (OnParametersChanged / OnDestroy):
    • Added an OnDestroy lifecycle guard (isCancelled) so unmounted blocks never attempt to initialize the viewer if a user navigates away while the SDK is still downloading.
    • Explicitly clears the viewer container DOM (container.innerHTML = '') before re-rendering on parameter changes, preventing stacked iframes.
    • Detaches LightboxTrigger and SDK event listeners on destroy to prevent memory leaks.
  • Zero Server Round-Trips on Parameter Changes:
    • Refactored OnParametersChanged to re-initialize purely on the client once configuration is fetched. Dynamic document switching and UI toggles now apply instantaneously.
  • Responsive Container Styling (.adobe-pdf-embed-container):
    • Added built-in block stylesheet rules (width: 100%; height: 100%; min-height: 500px; flex: 1 1 auto; position: relative;) so viewer containers never collapse to 0px height inside flex or grid layouts.
  • Improved Error Handling:
    • Replaced the generic NotRegistered exception with a dedicated ConfigurationException. Missing AdobeClientID values now raise clear, actionable error feedback instead of redirecting users to a login screen.

Compatibility & Migration

  • 100% Backwards Compatible: All new parameters are optional with sensible default values. Existing applications consuming ViewPDFByLocation or ViewPDFBinary can upgrade seamlessly.
License (1.1.4)
Reviews (1)
by 
2023-03-24
in version 1.1.2
It requires you to create account at adobe and retrieve a api key, which is only valid for 6 months and 1000 transaction. Otherwise you won't even be able to try out the demo.
I don't think this is a viable solution. 
Answer from the owner
2023-06-16
in version 1.1.2
Hi Mohammad,

When registering for an Adobe account, you need to select the PDF Embed API (Unlimited for free) option. This component was not originally designed for the PDF Services API.
Team
Other assets in this category