{"id":21133328,"url":"https://github.com/pdfgeneratorapi/pdfviewer","last_synced_at":"2026-05-26T10:00:39.597Z","repository":{"id":257813357,"uuid":"863437668","full_name":"pdfgeneratorapi/pdfviewer","owner":"pdfgeneratorapi","description":"PDFViewer is a library to display and interact with PDF documents in web applications, offering features such as document loading via URL and base64 encoded strings.","archived":false,"fork":false,"pushed_at":"2026-05-26T08:17:11.000Z","size":10221,"stargazers_count":4,"open_issues_count":1,"forks_count":2,"subscribers_count":4,"default_branch":"develop","last_synced_at":"2026-05-26T09:27:55.619Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://pdfviewer.com","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pdfgeneratorapi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-09-26T09:43:16.000Z","updated_at":"2026-05-26T07:29:34.000Z","dependencies_parsed_at":null,"dependency_job_id":"1e9dd637-7428-4fa3-92e3-02a513955313","html_url":"https://github.com/pdfgeneratorapi/pdfviewer","commit_stats":null,"previous_names":["pdfgeneratorapi/pdfviewer"],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/pdfgeneratorapi/pdfviewer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pdfgeneratorapi%2Fpdfviewer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pdfgeneratorapi%2Fpdfviewer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pdfgeneratorapi%2Fpdfviewer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pdfgeneratorapi%2Fpdfviewer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pdfgeneratorapi","download_url":"https://codeload.github.com/pdfgeneratorapi/pdfviewer/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pdfgeneratorapi%2Fpdfviewer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33514912,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T03:12:49.672Z","status":"ssl_error","status_checked_at":"2026-05-26T03:12:47.976Z","response_time":63,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-20T06:06:40.322Z","updated_at":"2026-05-26T10:00:39.591Z","avatar_url":"https://github.com/pdfgeneratorapi.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PDF Viewer by PDF Generator API\n\n[PDFViewer](http://pdfviewer.com/) is a library to display and interact with PDF documents in web applications,\noffering features such as document loading via URL and base64 encoded strings.\n\n![PDF Viewer](https://pdfgeneratorapi-web-assets.s3.amazonaws.com/images/pdfviewer-example.png)\n\n## Installing PDFViewer\n\n### npm\n    $ npm install pdf-generator-api-pdfviewer\n### yarn\n    $ yarn add pdf-generator-api-pdfviewer\n\n## Using PDFViewer\n\n### API\n* `loadUrl(string)` - load PDF from an URL\n* `loadBase64(string)` - load PDF from a base64 encoded string\n* `getBase64()` - get base64 encoded PDF\n* `startSignatureFlow(params)` - open the signature dialog programmatically\n* `cancelSignatureFlow()` - close the signature dialog\n* `setOptions(object)` - update options\n  * `theme`: Theme - set viewer theme\n  * `initialScale`: Scale - set initial page scale\n  * `toolbarFontSize`: number - set toolbar font size\n  * `toolbarIconSize`: number - set toolbar icon size\n  * `scaleDropdown`: boolean - display scaling options\n  * `search`: boolean - enable search button\n  * `signature`: boolean - enable signature feature (toolbar button and dialog)\n  * `signatureButton`: boolean - show/hide the signature toolbar button\n  * `print`: boolean - enable print button\n  * `download`: boolean - enable download button\n  * `upload`: boolean - enable upload file button\n  * `sidebar`: boolean - display sidebar on load\n\n\n### ECMAScript module\n\n```javascript\n\nimport { PDFViewer } from \"pdf-generator-api-pdfviewer\";\n\nconst viewer = new PDFViewer({\n  container: document.getElementById(\"viewer-container\"),\n});\n\nviewer.loadUrl(\"https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/examples/learning/helloworld.pdf\");\n```\n\n### CommonJS\n\n```javascript\nconst { PDFViewer } = require(\"pdf-generator-api-pdfviewer\");\n\nconst viewer = new PDFViewer({\n  container: document.getElementById(\"viewer-container\"),\n});\n\nviewer.loadUrl(\"https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/examples/learning/helloworld.pdf\");\n```\n\n### CDN\n\n```html\n\u003cdiv id=\"viewer-container\"\u003e\u003c/div\u003e\n\u003cscript src=\"https://unpkg.com/pdf-generator-api-pdfviewer@latest/dist/PDFViewer.iife.js\"\u003e\u003c/script\u003e\n\u003cscript\u003e\n  const { PDFViewer } = PDFGeneratorApi;\n\n  const viewer = new PDFViewer({\n    container: document.getElementById(\"viewer-container\"),\n  });\n\n  viewer.loadUrl(\"https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/examples/learning/helloworld.pdf\");\n\u003c/script\u003e\n```\n\n## Loading PDF documents\n\nThe PDF Viewer library loads documents from various sources:\n\n+ **URL**\n\n```typescript\nconst viewer = new PDFViewer({\n  container: document.getElementById(\"viewer-container\"),\n})\n\nviewer.loadUrl(\"https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/examples/learning/helloworld.pdf\");\n```\n\n+ **Base64 Encoded String**\n\n```typescript\nconst viewer = new PDFViewer({\n  container: document.getElementById(\"viewer-container\"),\n})\n\nconst base64encodedPdf =\n  \"JVBERi0xLjcKCjEgMCBvYmogICUgZW50cnkgcG9pbnQKPDwKICAvVHlwZSAvQ2F0YWxvZwog\" +\n  \"IC9QYWdlcyAyIDAgUgo+PgplbmRvYmoKCjIgMCBvYmoKPDwKICAvVHlwZSAvUGFnZXMKICAv\" +\n  \"TWVkaWFCb3ggWyAwIDAgMjAwIDIwMCBdCiAgL0NvdW50IDEKICAvS2lkcyBbIDMgMCBSIF0K\" +\n  \"Pj4KZW5kb2JqCgozIDAgb2JqCjw8CiAgL1R5cGUgL1BhZ2UKICAvUGFyZW50IDIgMCBSCiAg\" +\n  \"L1Jlc291cmNlcyA8PAogICAgL0ZvbnQgPDwKICAgICAgL0YxIDQgMCBSIAogICAgPj4KICA+\" +\n  \"PgogIC9Db250ZW50cyA1IDAgUgo+PgplbmRvYmoKCjQgMCBvYmoKPDwKICAvVHlwZSAvRm9u\" +\n  \"dAogIC9TdWJ0eXBlIC9UeXBlMQogIC9CYXNlRm9udCAvVGltZXMtUm9tYW4KPj4KZW5kb2Jq\" +\n  \"Cgo1IDAgb2JqICAlIHBhZ2UgY29udGVudAo8PAogIC9MZW5ndGggNDQKPj4Kc3RyZWFtCkJU\" +\n  \"CjcwIDUwIFRECi9GMSAxMiBUZgooSGVsbG8sIHdvcmxkISkgVGoKRVQKZW5kc3RyZWFtCmVu\" +\n  \"ZG9iagoKeHJlZgowIDYKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDEwIDAwMDAwIG4g\" +\n  \"CjAwMDAwMDAwNzkgMDAwMDAgbiAKMDAwMDAwMDE3MyAwMDAwMCBuIAowMDAwMDAwMzAxIDAw\" +\n  \"MDAwIG4gCjAwMDAwMDAzODAgMDAwMDAgbiAKdHJhaWxlcgo8PAogIC9TaXplIDYKICAvUm9v\" +\n  \"dCAxIDAgUgo+PgpzdGFydHhyZWYKNDkyCiUlRU9G\";\n\nviewer.loadBase64(base64encodedPdf);\n```\n\nListen for the lifecycle via `postMessage` events: `signature-added`, `signature-cancelled`, `signature-click-outside`. See [Available events](#available-events).\n\n## Available options\nPDFViewer theme:\n* **theme**: (`Theme.Light` | `Theme.Dark` | `Theme.PDFApi`)\n  * *Default*: Theme.Light\n\nInitial page scale:\n* **initialScale**: (`Scale.AutomaticZoom` | `Scale.ActualSize` | `Scale.PageFit` | `Scale.PageWidth` | `number`)\n  * *Default*: Scale.PageFit\n\nToolbar font size:\n* **toolbarFontSize**: (`number`):\n  * Ranged from 10 to 24\n  * *Default*: 16\n\nToolbar icon size:\n* **toolbarIconSize**: (`16` | `24` | `32` | `48`):\n  * *Default*: 24\n\nPage scale dropdown:\n* **scaleDropdown**: (`boolean`):\n  * *Default*: true\n\nSearching:\n* **search**: (`boolean`):\n  * *Default*: true\n\nAdding signature:\n* **signature**: (`boolean`):\n  * *Default*: false\n\nSignature toolbar button:\n* **signatureButton**: (`boolean`):\n  * *Default*: true\n\nPrinting:\n* **print**: (`boolean`):\n  * *Default*: true\n\nDownloading:\n* **download**: (`boolean`):\n  * *Default*: true\n\nUploading:\n* **upload**: (`boolean`):\n  * *Default*: true\n\nSidebar:\n* **sidebar**: (`boolean`)\n  * *Default*: true\n\n```typescript\nimport { PDFViewer, Scale, Theme } from \"pdf-generator-api-pdfviewer\";\n\n// Initialize options in the constructor\nconst viewer = new PDFViewer({\n  container: document.getElementById(\"viewer-container\") as HTMLElement,\n  options: {\n    theme: Theme.Light,\n    initialScale: Scale.PageFit,\n    toolbarFontSize: 16,\n    toolbarIconSize: 24,\n    scaleDropdown: true,\n    search: true,\n    signature: true,\n    signatureButton: true,\n    print: true,\n    download: true,\n    upload: true,\n    sidebar: true,\n  },\n});\n\n// Or set them using API function\nviewer.setOptions({\n  theme: Theme.Light,\n  initialScale: Scale.PageFit,\n  toolbarFontSize: 16,\n  toolbarIconSize: 24,\n  scaleDropdown: true,\n  search: true,\n  signature: true,\n  signatureButton: true,\n  print: true,\n  download: true,\n  upload: true,\n  sidebar: true,\n});\n```\n\n## Available events\n\nEvents are dispatched as window.postMessage messages with an object containing a type\nfield (matching one of the event names).\n\n| Event                     | Description                                                 |\n|:--------------------------|:------------------------------------------------------------|\n| `document-uploaded`       | Triggered after a PDF file has been successfully uploaded.  |\n| `document-saved`          | Triggered after the current PDF file has been saved.        |\n| `document-updated`        | Triggered after the current PDF file has been updated.      |\n| `document-printed`        | Triggered after the current PDF file has been printed.      |\n| `signature-added`         | Triggered after a signature has been added to the document. |\n| `signature-cancelled`     | Triggered after a signature flow has been cancelled.        |\n| `signature-click-outside` | Triggered after a user clicked outside the signature area.  |\n\n```typescript\nconst viewer = new PDFViewer({\n  container: document.getElementById(\"viewer-container\"),\n})\n\nviewer.loadUrl(\"https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/examples/learning/helloworld.pdf\");\n\nwindow.addEventListener(\"message\", async (event) =\u003e {\n  switch (event.data.type) {\n    case Event.DocumentUploaded:\n      console.log(\"Triggered after a PDF file has been successfully uploaded.\");\n      break;\n    case Event.DocumentSaved:\n      console.log(\"Triggered after the current PDF file has been saved.\");\n      break;\n    case Event.DocumentUpdated:\n      console.log(\"Triggered after the current PDF file has been updated.\");\n      break;\n    case Event.DocumentPrinted:\n      console.log(\"Triggered after the current PDF file has been printed.\");\n      break;\n    case Event.SignatureAdded:\n      console.log(\"Triggered after a signature has been added to the document.\");\n      break;\n    case Event.SignatureCancelled:\n      console.log(\"Triggered after a signature flow has been cancelled.\");\n      break;\n    case Event.SignatureClickOutside:\n      console.log(\"Triggered after a user clicked outside the signature area.\");\n      break;\n  }\n});\n```\n\n## Examples\nComplete code examples can be found in the [examples folder](https://github.com/pdfgeneratorapi/pdfviewer/tree/main/examples).\n\n * [Webpack](https://github.com/pdfgeneratorapi/pdfviewer/tree/main/examples/webpack)\n * [ESBuild](https://github.com/pdfgeneratorapi/pdfviewer/tree/main/examples/esbuild)\n * [Rollup](https://github.com/pdfgeneratorapi/pdfviewer/tree/main/examples/rollup)\n * [Parcel](https://github.com/pdfgeneratorapi/pdfviewer/tree/main/examples/parcel)\n * [Browserify](https://github.com/pdfgeneratorapi/pdfviewer/tree/main/examples/browserify)\n\n## Building PDF Viewer\n\nTo apply customization changes and build the library, run:\n\n    $ npm run build\n\n\nThis will compile minified files in the `dist` directory.\n\n## Contributing\n\nPDFViewer is an open source project and always looking for more contributors.\n\n## Issues\n\n+ https://github.com/pdfgeneratorapi/pdfviewer/issues/new\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpdfgeneratorapi%2Fpdfviewer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpdfgeneratorapi%2Fpdfviewer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpdfgeneratorapi%2Fpdfviewer/lists"}