Skip to content

Shareable links

generateShareLink() builds a URL that opens any LensPDF host page with a specific PDF pre-loaded and settings applied. parseShareParams() reads those query params back into props your component can consume.

Both are exported from @printwithsynergy/lens-pdf/host.

https://lenspdf.com/demo?url=<encoded>&fullscreen=true&zoom=150&page=1&mode=single&theme=dark
ParamTypeNotes
urlURL-encoded stringPDF URL to pre-load.
fullscreen"true" | "1"Open in fullscreen (no site chrome).
zoomintegerInitial zoom percentage.
pageintegerInitial page number (1-indexed).
mode"scroll" | "single"Defaults to "scroll" when absent.
toolscomma-separatedSubset of tools to enable.
theme"light" | "dark" | JSONPreset name or inline ThemeTokens.
import { generateShareLink } from "@printwithsynergy/lens-pdf/host";
const link = generateShareLink({
baseUrl: "https://lenspdf.com/demo",
pdfUrl: "https://cdn.example.com/proof.pdf",
fullscreen: true,
zoom: 150,
page: 2,
});
// → "https://lenspdf.com/demo?url=https%3A%2F%2Fcdn.example.com%2Fproof.pdf&fullscreen=true&zoom=150&page=2"
FieldTypeDefaultNotes
baseUrlstringrequiredHost demo/viewer page URL.
pdfUrlstringrequiredPDF URL to pre-load.
fullscreenbooleanfalseFixed-position full-viewport.
zoomnumber(omitted)Percentage.
pagenumber(omitted)1-indexed page.
mode"scroll" | "single""scroll"Only serialised when not "scroll".
toolsstring[](omitted)Comma-joined in URL.
theme"light" | "dark" | Partial<ThemeTokens>(omitted)Preset name or JSON-encoded tokens.
import { parseShareParams } from "@printwithsynergy/lens-pdf/host";
const params = parseShareParams(new URLSearchParams(window.location.search));
// params.pdfUrl → "https://cdn.example.com/proof.pdf"
// params.fullscreen → true
// params.zoom → 150
// params.page → 2
FieldTypeNotes
pdfUrlstring | undefined
fullscreenbooleanDefaults to false.
zoomnumber | undefined
pagenumber | undefined
mode"scroll" | "single" | undefined
toolsstring[] | undefined
theme"light" | "dark" | Partial<ThemeTokens> | undefined

Wire parseShareParams into <LensPDFDemo> props:

import { LensPDFDemo } from "@printwithsynergy/lens-pdf/components";
import { parseShareParams } from "@printwithsynergy/lens-pdf/host";
export function DemoPage() {
const params = parseShareParams(new URLSearchParams(window.location.search));
return (
<LensPDFDemo
brand="MyApp"
initialPdfUrl={params.pdfUrl}
fullscreen={params.fullscreen}
initialZoom={params.zoom ?? 80}
initialPage={params.page}
/>
);
}

Users can now share links like https://myapp.com/demo?url=https://cdn.example.com/proof.pdf&fullscreen=true that open the viewer full-screen with the PDF pre-loaded.