Some test text!
Web / Guides / Load and Annotate HTML
You can load HTML pages directly by importing webviewer-html module completely client-side.
This is an addon for WebViewer that allows loading HTML web pages so that live HTML pages can be annotated.
Let me know how you are planning to use WebViewer HTML or if you have any feedback on any feature missing. Let us know.
Please make sure to check the CHANGELOG to ensure versions of WebViewer and WebViewer-HTML are compatible.
https://showcase.apryse.com/webviewer-html/
Try out the react sample. It shows how to integrate WebViewer and WebViewer-HTML with webviewer-html-proxy-server, a server component for proxying web pages.
Before you begin, make sure your development environment includes Node.js and npm.
npm install @pdftron/webviewer-html
WebViewer-HTML requires the server component, @pdftron/webviewer-html-proxy-server. This proxy server solves CORS issues. It will also parse the page for text and links, allowing you to use text annotations and page navigation.
Call the createServer
function in your server component and pass in an object that includes SERVER_ROOT
and PORT
, see API docs for more.
const HTMLProxyServer = require('@pdftron/webviewer-html-proxy-server');
HTMLProxyServer.createServer({
SERVER_ROOT: `http://localhost`,
PORT: 3100
});
When making the request to the proxy-server, make sure to pass along { credentials: 'include' }
to be able to send cookies in cross-origin requests.
You can either load HTML pages from URLs, or static resources using the relative path. This API is available to load an HTML page by calling loadHTMLPage
.
import WebViewer from '@pdftron/webviewer';
import { initializeHTMLViewer } from '@pdftron/webviewer-html';
WebViewer(
{
path: 'lib',
},
document.getElementById('viewer')
).then(async (instance) => {
const url = 'https://apryse.com/';
const htmlProxyServerUrl = 'http://localhost:3100';
// Tell webviewer-html-proxy-server that you want to proxy this URL
const proxyUrlRes =
await fetch(
`${htmlProxyServerUrl}/pdftron-proxy?url=${url}`,
{ credentials: 'include' },
);
const { validUrl } = await proxyUrlRes.json();
const { href, origin, pathname } = new URL(validUrl);
const hrefWithoutOrigin = href.split(origin)[1] || pathname;
const license = `---- Insert commercial license key here after purchase ----`;
// Extends WebViewer to allow loading HTML5 files from URL or static folder.
const { loadHTMLPage } = await initializeHTMLViewer(instance, { license });
loadHTMLPage({
iframeUrl: `${htmlProxyServerUrl}${hrefWithoutOrigin}`,
// URL that is being proxied
urlToProxy: validUrl,
width: 1440,
height: 770,
});
});
New versions of WebViewer v8.5 and above requires the disableVirtualDisplayMode: true
constructor option. See documentation.
WebViewer(
{
path: 'lib',
disableVirtualDisplayMode: true,
},
document.getElementById('viewer')
).then(async (instance) => {
// ...
});
You can add a proxyLoaded
event listener to detect when the proxy iframe is fully loaded. This event comes from the DOMContentLoaded
event attached to the proxy website.
import WebViewer from '@pdftron/webviewer';
WebViewer(
{
path: 'lib',
},
document.getElementById('viewer')
).then((instance) => {
const { documentViewer } = instance.Core;
documentViewer.addEventListener('proxyLoaded', listener);
});
Older versions 3.x of WebViewer-HTML used website scraping to save the website as a snapshot in time, without the need for a separate server component. Please refer to this sample that scrapes the content of a live website and allows you to annotate. This sample along with WebViewer-HTML v3.x are no longer maintained, as the proxy solution allows to better capture accurately the content of a live website. Read more in our blog about scraping.
Beginning with version 3.x, we have added a watermark on all HTML pages being viewed in the demo mode. Version 3.x introduces quite a number of feature additions including text tools like highlighting and strikeout, as well as searching capabilities. To remove the Apryse Demo
watermark, please pass the license key to the function. The license key can be obtained on Apryse's website.
WebViewer(
{
path: 'lib',
},
document.getElementById('viewer')
).then(async (instance) => {
const license = `---- Insert commercial license key here after purchase ----`;
const { loadHTMLPage } = await initializeHTMLViewer(instance, { license });
});
For versions v4.5x and below, please pass the licence key to loadHTMLPage
.
loadHTMLPage({
// Your webviewer-html-proxy-server url
iframeUrl: 'http://localhost:3100',
// Original url that is being proxied
urlToProxy: 'https://apryse.com/',
width: 500,
height: 500,
license: 'license-key-goes-here',
});
Trial setup questions? Ask experts on Discord
Need other help? Contact Support
Pricing or product questions? Contact Sales