Package detail

ng2-pdf-viewer

VadimDez889.7kMIT10.4.0

Angular 5+ component for rendering PDF

angular, pdf, angular, angular-pdf

readme

Angular PDF Viewer

downloads npm version Gitter PayPal donate button

PDF Viewer Component for Angular 5+

Demo page

https://vadimdez.github.io/ng2-pdf-viewer/

Stackblitz Example

https://stackblitz.com/edit/ng2-pdf-viewer

Blog post

https://medium.com/@vadimdez/render-pdf-in-angular-4-927e31da9c76

Overview

Install

Angular >= 12

npm install ng2-pdf-viewer

Partial Ivy compilated library bundles.

Angular >= 4

npm install ng2-pdf-viewer@^7.0.0

Angular < 4

npm install ng2-pdf-viewer@~3.0.8

Usage

In case you're using systemjs see configuration here.

Add PdfViewerModule to your module's imports

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app/app.component';

import { PdfViewerModule } from 'ng2-pdf-viewer';

@NgModule({
  imports: [BrowserModule, PdfViewerModule],
  declarations: [AppComponent],
  bootstrap: [AppComponent]
})

class AppModule {}

platformBrowserDynamic().bootstrapModule(AppModule);

And then use it in your component

import { Component } from '@angular/core';

@Component({
  selector: 'example-app',
  template: `
  <pdf-viewer [src]="pdfSrc"
              [render-text]="true"
              [original-size]="false"
              style="width: 400px; height: 500px"
  ></pdf-viewer>
  `
})
export class AppComponent {
  pdfSrc = "https://vadimdez.github.io/ng2-pdf-viewer/assets/pdf-test.pdf";
}

Options

[src]

Property Type Required
[src] string, object, UInt8Array Required

Pass pdf location

[src]="'https://vadimdez.github.io/ng2-pdf-viewer/assets/pdf-test.pdf'"

For more control you can pass options object to [src]. See other attributes for the object here.

Options object for loading protected PDF would be:

 {
  url: 'https://vadimdez.github.io/ng2-pdf-viewer/assets/pdf-test.pdf',
  withCredentials: true
 }

[page]

Property Type Required
[page] or [(page)] number Required with [show-all]="false" or Optional with [show-all]="true"

Page number

[page]="1"

supports two way data binding as well

[(page)]="pageVariable"

If you want that the two way data binding actually updates your page variable on page change/scroll - you have to be sure that you define the height of the container, for example:

pdf-viewer {
    height: 100vh;
}

[stick-to-page]

Property Type Required
[stick-to-page] boolean Optional

Sticks view to the page. Works in combination with [show-all]="true" and page.

[stick-to-page]="true"

[render-text]

Property Type Required
[render-text] boolean Optional

Enable text rendering, allows to select text

[render-text]="true"

[render-text-mode]

Property Type Required
[render-text-mode] RenderTextMode Optional

Used in combination with [render-text]="true"

Controls if the text layer is enabled, and the selection mode that is used.

0 = RenderTextMode.DISABLED - disable the text selection layer

1 = RenderTextMode.ENABLED - enables the text selection layer

2 = RenderTextMode.ENHANCED - enables enhanced text selection

[render-text-mode]="1"

[external-link-target]

Property Type Required
[external-link-target] string Optional

Used in combination with [render-text]="true"

Link target

  • blank
  • none
  • self
  • parent
  • top
    [external-link-target]="'blank'"

[rotation]

Property Type Required
[rotation] number Optional

Rotate PDF

Allowed step is 90 degree, ex. 0, 90, 180

[rotation]="90"

[zoom]

Property Type Required
[zoom] number Optional

Zoom pdf

[zoom]="0.5"

[zoom-scale]

Property Type Required
[zoom-scale] *'page-width'\ 'page-fit'\ 'page-height'* Optional

Defines how the Zoom scale is computed when [original-size]="false", by default set to 'page-width'.

  • 'page-width' with zoom of 1 will display a page width that take all the possible horizontal space in the container

  • 'page-height' with zoom of 1 will display a page height that take all the possible vertical space in the container

  • 'page-fit' with zoom of 1 will display a page that will be scaled to either width or height to fit completely in the container

[zoom-scale]="'page-width'"

[original-size]

Property Type Required
[original-size] boolean Optional
  • if set to true - size will be as same as original document
  • if set to false - size will be as same as container block
[original-size]="true"

[fit-to-page]

Property Type Required
[fit-to-page] boolean Optional

Works in combination with [original-size]="true". You can show your document in original size, and make sure that it's not bigger then container block.

[fit-to-page]="false"

[show-all]

Property Type Required
[show-all] boolean Optional

Show single or all pages altogether

[show-all]="true"

[autoresize]

Property Type Required
[autoresize] boolean Optional

Turn on or off auto resize.

!Important To make [autoresize] work - make sure that [original-size]="false" and pdf-viewer tag has max-width or display are set.

[autoresize]="true"

[c-maps-url]

Property Type Required
[c-maps-url] string Optional

Url for non-latin characters source maps.

[c-maps-url]="'assets/cmaps/'"

Default url is: https://unpkg.com/pdfjs-dist@2.0.550/cmaps/

To serve cmaps on your own you need to copy node_modules/pdfjs-dist/cmaps to assets/cmaps.

[show-borders]

Property Type Required
[show-borders] boolean Optional

Show page borders

[show-borders]="true"

(after-load-complete)

Property Type Required
(after-load-complete) callback Optional

Get PDF information with callback

First define callback function "callBackFn" in your controller,

callBackFn(pdf: PDFDocumentProxy) {
   // do anything with "pdf"
}

And then use it in your template:

(after-load-complete)="callBackFn($event)"

(page-rendered)

Property Type Required
(page-rendered) callback Optional

Get event when a page is rendered. Called for every page rendered.

Define callback in your component:

pageRendered(e: CustomEvent) {
  console.log('(page-rendered)', e);
}

And then bind it to <pdf-viewer>:

(page-rendered)="pageRendered($event)"

(pages-initialized)

Property Type Required
(pages-initialized) callback Optional

Get event when the pages are initialized.

Define callback in your component:

pageInitialized(e: CustomEvent) {
  console.log('(pages-initialized)', e);
}

And then bind it to <pdf-viewer>:

(pages-initialized)="pageInitialized($event)"

(text-layer-rendered)

Property Type Required
(text-layer-rendered) callback Optional

Get event when a text layer is rendered.

Define callback in your component:

textLayerRendered(e: CustomEvent) {
  console.log('(text-layer-rendered)', e);
}

And then bind it to <pdf-viewer>:

(text-layer-rendered)="textLayerRendered($event)"

(error)

Property Type Required
(error) callback Optional

Error handling callback

Define callback in your component's class

onError(error: any) {
  // do anything
}

Then add it to pdf-component in component's template

(error)="onError($event)"

(on-progress)

Property Type Required
(on-progress) callback Optional

Loading progress callback - provides progress information total and loaded bytes. Is called several times during pdf loading phase.

Define callback in your component's class

onProgress(progressData: PDFProgressData) {
  // do anything with progress data. For example progress indicator
}

Then add it to pdf-component in component's template

(on-progress)="onProgress($event)"

Render local PDF file

In your html template add input:

<input (change)="onFileSelected()" type="file" id="file">

and then add onFileSelected method to your component:

onFileSelected() {
  let $img: any = document.querySelector('#file');

  if (typeof (FileReader) !== 'undefined') {
    let reader = new FileReader();

    reader.onload = (e: any) => {
      this.pdfSrc = e.target.result;
    };

    reader.readAsArrayBuffer($img.files[0]);
  }
}

Set custom path to the worker

By default the worker is loaded from cdn.jsdelivr.net.

In your code update path to the worker to be for example /pdf.worker.mjs

(window as any).pdfWorkerSrc = '/pdf.worker.mjs';

This should be set before pdf-viewer component is rendered.

If you ever have a (super rare) edge case where you run in an environment that multiple components are somehow loaded within the same web page, sharing the same window, but using different versions of pdf.worker, support has been added. You can do the above, except that you can append the specific version of pdfjs required and override the custom path just for that version. This way setting the global window var won't conflict.

(window as any)["pdfWorkerSrc2.14.305"] = '/pdf.worker.mjs';

Search in the PDF

Use eventBus for the search functionality.

In your component's ts file:

  • Add reference to pdf-viewer component,
  • then when needed execute search() like this:
@ViewChild(PdfViewerComponent) private pdfComponent: PdfViewerComponent;

search(stringToSearch: string) {
  this.pdfComponent.eventBus.dispatch('find', {
    query: stringToSearch, type: 'again', caseSensitive: false, findPrevious: undefined, highlightAll: true, phraseSearch: true
  });
}

Contribute

See CONTRIBUTING.md

Donation

If this project help you reduce time to develop, you can give me a cup of tea :)

paypal

License

MIT © Vadym Yatsyuk

changelog

Changelog

10.4.0 - 01.12.2024

  • [#1145] - Update pdfjs-dist dependency to the latest version for better compatibility
  • [#1146] - Chore: update pdfjs, other dependencies

10.3.4 - 31.10.2024

  • [#1145] - After upgrade to the version 10.3.3, the first page of pdf is always rendered twice, with different dimension in viewport each time
  • [#1146] - Fix: use page init for first updateSize

10.3.3 - 11.10.2024

  • [#1140] - chore: Update pdfjs-dist to v4.6.82
  • [#1139] - Update pdfjs-dist to v4.6.82

10.3.2 - 07.10.2024

  • [#1137] - Latest version requires Typescript 5.6 which current LTS of angular (v18.2.7) does not support
  • [#1138] - Fix: lock pdfjs version

10.3.1 - 11.09.2024

  • [#999] - Rotation default value not working
  • [#1126] - Fix #999: Ensure that the rotation in the viewer is not set too early

10.3.0 - 31.08.2024

  • [#1128] - feat(pdfjs): upgrade to v4 - without breaking backwards compatibility
  • [#1093] - Update pdfjs-dist to 4.2.67 or later

10.2.2 - 16.05.2024

  • [#1098] - Fix #1097: delay scale and scroll ops until the viewer has the pages initialized
  • [#1097] - scrollPageIntoView: "1" is not a valid pageNumber parameter

10.2.1 - 15.05.2024

  • [#1096] - Explicitely switch AnnotationEditor off

10.2.0 - 14.05.2024

  • [#1092] - Chore: update pdfjs to 3.11.174, resolve CVE
  • [#1088] - PDF.js vulnerable to arbitrary JavaScript execution upon opening a malicious PDF

10.1.0 - 13.05.2024

  • [#1027] - Chore: Update pdfjs-dist to 3.10.111

10.0.0 - 16.04.2023

  • [#915] - Update to Angular 16
  • in [#915] also updated pdfjs-dist version to 2.16.105

9.1.5 - 16.04.2023

  • [#992] - scale not correctly updated on pdf-viewer rotation for pdf page with 90° rotation
  • [#993] - fix #992 : fix rotation on pdf with included rotation

9.1.4 - 22.02.2023

  • [#943] - chore(deps): bump ejs and webpack-bundle-analyzer
  • [#971] - feat: Support version specific pdf.worker.js url

9.1.3 - 21.11.2022

  • [#947] - Second pdf loaded not navigate on the second page with [show-all]="false"
  • [#948] - fix #947 : reset this._latestScrolledPage on clear method

9.1.2 - 11.09.2022

  • [#925] - 9.1.1 version lacks pdfFindController.executeCommand
  • [#927] - Fix search
  • [#926] - Improve arrangement of annotations

Breaking Change

Since FindController.executeCommand is deprecated, you should now use eventBus to do search. Example:

@ViewChild(PdfViewerComponent) private pdfComponent: PdfViewerComponent;

search(stringToSearch: string) {
  this.pdfComponent.eventBus.dispatch('find', {
    query: stringToSearch, type: 'again', caseSensitive: false, findPrevious: undefined, highlightAll: true, phraseSearch: true
  });
}

9.1.1 - 03.09.2022

  • [#916] - (pageChange) event not getting emitted - Single Page Viewer
  • [#921] - Issue 916 - (pageChange) event not getting emitted - Single Page Viewer

9.1.0 - 24.07.2022

  • [#900] - Upgrade pdfjs-dist to ~2.14.305
  • [#901] - Fix arrangement of annotations #824

9.0.0 - 01.04.2022

  • [#873] - feat: Updated pdfjs-dist version to 2.13.216 from 2.11.338
  • [#879] - Update css for the version 2.13.216
  • [#880] - Use minified worker
  • [#882] - Inline images
  • [#883] - Drop legacy support

8.0.1

  • [#855] - Can't load document after error
  • [#856] - fix can't load document after error

8.0.0

  • [#838] - fix css selector for text selection in chrome
  • [#857] - Angular 13 Update | Enable Ivy
  • [#852] - Encourage the library authors to publish an Ivy distribution.
  • [#854] - TypeError: Cannot read properties of null (reading 'selectors')
  • [#863] - Loader is stuck when upgrade to newest version

7.0.2

  • [#829] - feat: upgrade to pdfjs-dist 2.11.338
  • [#834] - Give sane default to host
  • [#805] - width of pdf page exceed the maximum width and got trimmed from the right side
  • [#811] - .ng2-pdf-viewer-container not in parent container
  • [#828] - can't now show digital signature PKCS#7

Breaking change (Since 7.0.0)

Now you need to specify how much space pdf-viewer element should take by using CSS, so either set width and height, use flexbox or use something like positioning.

Example using height and width:

<pdf-viewer [src]="src" [original-size]="false" style="width: 400px; height: 500px"></pdf-viewer>

Example using absolute positioning to take entire page:

<pdf-viewer [src]="src" [original-size]="false" style="position: absolute; top: 0; right: 0; bottom: 0; left: 0"></pdf-viewer>

7.0.1

  • [#779] - perf: do not run change detection on resize events
  • [#783] - fix: switch to es5 builds
  • [#780] - Version 7.0.0 is not working and build is failing: Module parse failed: Unexpected token

7.0.0

  • [#721] - fix: release some memory leaks
  • [#723] - fix: remove event listeners from the event bus when the view is destroyed
  • [#719] - feat: upgrade to Angular 11
  • [#777] - Update pdfjs-dist to 2.7.570

6.4.1

  • [#739] - Module '"@types/pdfjs-dist"' has no exported member 'PDFPromise'
  • [#740] - Issue #739 fix: change @types/pdfjs-dist to update only patch versions

6.4.0

  • [#701] - [external-link-target] seems to be broken
  • [#702] - Fix external-link-target bug
  • [#688] - Issue #478 IE
  • [#478] - Support on IE & Edge
  • [#724] - Doesn't compile with pdf.js 2.6 and pdf.js 2.7
  • [#717] - Module x has no exported member 'PDFDocumentProxy'
  • [#715] - Several errors while building app with --prod flag

6.3.2

  • [#627] - Fixing memory issue

6.3.1

  • [#505] - Selectable text does not fit the rendered textsplit
  • [#610] - Selection rule so that browser can handle it
  • [#621] - feat(zoom): configurability of scale (page-width/page-height/page-fit)
  • [#531] - Style fix for Issue #505
  • [#626] - fix: explicitly set box-sizing of a page to initial

6.3.0

  • [#601] - support for pdf.js v2.4.456

6.2.0

  • [#461] - peer dependency for pdfjs-dist
  • [c391f99] - Removed peer dependencies

6.1.3

  • [#553] - Bugfix #539 Only emit pageChage on actual change
  • [#539] - [(page)] two way binding causes infinite loop

6.1.2

  • [#582] - Fix rotated PDF files have a scale computation issue
  • [#554] - Rotated PDF files have a scale computation issue

6.1.1

  • [a8ddd42] - Downgrade Typescript for compatibility

6.1.0

  • [#569] - Update to angular 9
  • [#568] - Project seems be incompatible when used in an Angular 9 proejct

6.0.2

  • [#526] - Cancel downloading/rendering, clear rendered pdf

6.0.1

  • [#525] - cancel loading task before loading document
  • [#502] - Is it possible to terminate a page rendering?

6.0.0

  • [#445] - Issue #223 PR
  • [#223] - Update page number when scrolling on "show-all" mode
  • [#440] - Large PDF >300 pages, rendering problems
  • [#422] - Styling issue when trying to putting pdf viewer to right of html content
  • [#410] - Large Size PDF(pages) causes Browser Crash
  • [#394] - Calling this.pdf.pdfViewer.scrollPageIntoView({ pageNumber: 20 }); does not work
  • [#386] - Loading spinners never go away
  • [#337] - Avoid reloading after zoom in/out
  • [#299] - PDF not show when browser zoom is low or low resolution
  • [#261] - Last page never loads when zoom level is below ~0.4
  • [#244] - stick-to-page doesn't work
  • [#219] - Component stops rendering when display goes out of view
  • [#516] - Memory leak issue in IOS when open large PDF file
  • [#471] - ng2-pdf not rendering all pages
  • [#460] - How to disable scroll on page change?
  • [#449] - Blank page IOS
  • [#418] - Can't disable scrollPageIntoView while changing pages in Safari
  • [#414] - PDFDocumentProxy : destroy() doesn't work : memory bloat
  • [#403] - <!doctype html> issue
  • [#397] - stick-to-page does not work
  • [#392] - Memory issue
  • [#388] - Tracking page
  • [#372] - Max size / Scroll bars not visible
  • [#360] - [show-all]="true", [stick-to-page]="true", [page]="boundValue" does not work if I set 'max-height' to 'pdf-viewer'

Breaking change

Now with the use of CSS you need to define dimensions (for example: height) of the pdf-viewer container element. (pdf-viewer should become container with scrollbar) This will improve pdf-viewer performance and eneble all the features.

pdf-viewer {
  /* define height */
  height: 700px;
  /* or use flex for example */
  flex: 1;
}

5.3.4

  • [#508] - Fix PDF scaling when rotating
  • [#509] - add removePageBorders option
  • [#510] - Emit pageChange on MultiPageViewer

5.3.3

  • Update PDFJS dependency
  • [#499] - update page number upon page changing event
  • [#474] - Clicking a link in the pdf performs a page change but does not emit a (pageChange) event

5.3.2

  • [#487] - Deprecated API usage: getViewport is called with obsolete arguments

5.3.1

  • Updated Angular to version 8
  • [#482] - Compatibility with Angular 8
  • [#475] - Conflict pdf.js 2.0.943 and quill.js 1.3.6

5.3.0

  • [#465] - fix: Listen for textlayerrendered events from eventBus
  • Changed init approach: Do not initialize viewer in the hidden views (first try)

5.2.4

  • [#457] - fix: allow pdfjs typings peer dependency v2
  • [#408] - Regression: Version 5.2 Broke (page-rendered)
  • [#420] - PR for Issue 408

5.2.3

  • [#402] - Page is not working

5.2.2

  • [#409] - suppress z-lib warning in angular6+
  • [#322] - Angular 6 support

5.2.1

  • [#371] - Cannot read property 'version' of undefined when rendering on the server

5.2.0

  • [#393] - Fix for broken search functionality when showPage=false
  • [#375] - Search and highlight not working when [show-all]="false" [page]="4"
  • [#314] - Search functionality not working if i set show all false.
  • [#293] - Highlight on single page load

5.1.3

  • [#390] - enable setting render text mode to enchanced

You can now set text rendering mode to RenderTextMode.DISABLED, RenderTextMode.ENABLED or RenderTextMode.ENHANCED

[render-text-mode]="1"

5.1.2

  • [#366] - add text-layer-rendered event emitter

5.1.1

  • [#338] - support for non-latin characters
  • [#324] - PDF preview does not display Chinese

5.1.0

  • [#338] - Upgrade dependency
  • [#336] - fix: Cleanup unused pdf document proxies

5.0.1

  • [#311] - Update pdfjs
  • [#308] - Not working on IOS on both Chrome and Safari
  • [#302] - ng2-pdf-viewer dependencies have conflicts with webpack >= 3

Breaking changes

PDFJS is not attached to the window therefore setting custom path to the worker changed to window.pdfWorkerSrc:

(<any>window).pdfWorkerSrc = '/pdf.worker.js';

4.1.2

  • [#281] - Fix error on resize during loading of pdf

4.1.1

  • [#260] - Public PDFFindController
  • [#279] - make pdfFindController public

Features

pdfFindController is now public, that means you can now execute a search on the pdf.

In your component's ts file:

  • Add reference to pdf-viewer,
  • then when needed execute search()
@ViewChild(PdfViewerComponent) private pdfComponent: PdfViewerComponent;

search(stringToSearch: string) {
  this.pdfComponent.pdfFindController.executeCommand('find', {
    caseSensitive: false, findPrevious: undefined, highlightAll: true, phraseSearch: true, query: stringToSearch
  });
}

4.1.0

  • [#274] - Page two way data binding. Do not reset page to 1.
  • [#265] - adding after-render-complete emitter
  • [#81] - Add a rendered event in promise

Page rendered event is added, use (page-rendered)=callback($event)

4.0.0

  • [#268] - Feature/restructure
  • [#209] - Angular 5

Breaking change

Location of bundles is changed.

Therefor SYSTEMJS config is now updated to:

var map = {
  'ng2-pdf-viewer': 'node_modules/ng2-pdf-viewer/bundles',
  'pdfjs-dist': 'node_modules/pdfjs-dist',
};

and then add to packages

var packages = {
  'ng2-pdf-viewer': { defaultExtension: 'js' },
  'pdfjs-dist': { defaultExtension: 'js' },
};

3.0.8

  • [#63] - How to scroll to page?
  • [#233] - Bookmark option

Features

Now both pdfViewer and pdfLinkService are public.

You can now scroll to a page from code:

// define view child
@ViewChild(PdfViewerComponent) private pdfComponent: PdfViewerComponent;

// ...

scrollToPage(page: number) {
  this.pdfComponent.pdfViewer.scrollPageIntoView({
    pageNumber: page
  });
}

3.0.6

  • [#200] - PDFDocumentProxy, PDFProgressData are undefined for compiler

Now you can import types where you need them directly from 'ng2-pdf-viewer' package:

import { PDFDocumentProxy, PDFProgressData } from 'ng2-pdf-viewer';

3.0.5

  • [#238] - added @types/pdf as peer dependency

3.0.4

  • [#162] - Worker Source
  • [#232] - Don't overwrite PDFJS.workerSrc if already set
  • [#226] - Update Size scale Error
  • [#237] - Prevent throwing error: "PDFViewer._setScale: '0' is an unknown zoom value"
  • [#182] - Documentation: Load preview for local files

Set custom path for worker:

In your code update path to the worker to be /pdf.worker.js

(<any>window).PDFJS.workerSrc = '/pdf.worker.js';

This should be set before pdf-viewer component is rendered.

3.0.3

  • [#168] - Dependency to a prebuilt-version of pdf.js (pdfjs-dist)
  • [#195] - progressData.total is undefined
  • [#222] - [render-text]="false" is not working

3.0.2

  • [#173] - SSR support

3.0.1

  • [#194] - Fit original document into the viewport.
  • [#206] - Updated Readme for new [fit-to-page] option.

3.0.0

  • [#196] - ng2-pdf-viewer breaks the AOT build with Angular CLI 1.5.0
  • [#187] - ng build fails when AOT is enabled

BREAKING CHANGES

Now ng2-pdf-viewer exports Module instead of Component. That means you have to import PdfViewerModule instead of PdfViewerComponent.

import { PdfViewerModule } from 'ng2-pdf-viewer';

@NgModule({
  imports: [PdfViewerModule]
})
export class YourModule() {}

2.0.3

  • [#190] - Fixed original size for showAll=false
  • [#57] - Disable autoresize

2.0.2

  • [#174] - 2.0.1 no more scrollbar while zooming

2.0.1

  • [#171] - AOT compile issue
  • [#172] - error

2.0.0

  • [#36] - Render text layer, hyperlinks, progressive loading, etc.
  • [#18] - Is it possible to enable hyperlinks in the rendered PDF?
  • [#165] - pdf.js and pdf.worker.js using different versions
  • [#50] - Default Rotation
  • [#164] - Doesn't load blob url with 1.2.7
  • [#160] - some pdf showing in invert color
  • [#156] - Chrome error: Invalid SVG dimensions when 'original-size' = false
  • [#154] - Multiple display issues on Safari (iOS+Desktop)
  • [#147] - GET http://localhost:4200/nullUniGB-UCS2-H 404 (Not Found)
  • [#145] - Issue since update from 1.1.1 to 1.2.1 and not fixed in 1.2.2
  • [#144] - pdf annotation not shown in svg format
  • [#142] - Error: <svg:path> attribute d: Expected moveto path command ('M' or 'm'), "L 2318.47 6033.1…".
  • [#141] - Mirror/Upside Down document display
  • [#139] - PDF from pdfmake not loading
  • [#134] - PDF not loading. Shows black color
  • [#108] - PDF is loading as plain text as well as PDF, overlapping
  • [#92] - Performance error
  • [#80] - One by one page

1.2.7

Updated dependencies

1.2.6

  • [#140] - Incorrect Font and Font Size Rendering
  • [#151] - force inline style to prevent css override font-family and font-size

1.2.5

  • Update dist

1.2.4

  • [#150] - Used not minified version of pdfjs

1.2.3

  • [#146] - Load web worker separately, use minified version of pdfjs

1.2.2

  • [#94] - Add load progress callback

1.2.1

  • [#130] - ng build --prod fails for AOT

1.2.0

  • [#98] - PDF Auto Resize

1.1.5

  • [#124] - PDF background disappeared after update to 1.1.4

1.1.4

  • Switched canvas to SVG rendering.
  • Changed text layer rendering.
  • [#89] - Added data-page-number attribute

1.1.3

  • [#46] - Retina display support

1.1.2

  • [#112] - Error handling
  • Updated documentation

1.1.1

  • [#111] - out of order

1.1.0

  • [#72] - Updated for Angular 4

1.0.2

  • [#54] - [show-all] is showing first two page only.

1.0.1

  • [#48] - Use ngOnchanges() instead of update() inside setters

1.0.0

Breaking changes

  • [#47] - Use @Output for after load events

Use (after-load-complete)="afterLoadComplete($event) instead of [after-load-complete]="afterLoadComplete($event) on <pdf-viewer>.

You do not need to bind your callback anymore.

Example of afterLoadComplete callback:

afterLoadComplete(pdf: PDFDocumentProxy) {
  this.pdf = pdf;
}

0.1.6

  • [#39] - background-color css causes PDF text to become invisible.
  • [#43] - PDF is drawn behind the container

0.1.5

  • [#37] - Fix the case where src is still not having a value

0.1.4

  • [#35] - New release causing blank pdf

0.1.3

  • [#29] - Make text selectable

0.1.2

  • [#28] - Fixed set initial page
  • [#30] - Do not reload PDF several times

0.1.1

  • [#27] - Added support for rotating

0.1.0

Breaking changes

  • [#25] - Renamed "on-load-complete" to "after-load-complete"

0.0.15

  • [#26] - Re-added pdfjs as dependency

0.0.14

Re-installing of package may be required.

  • [#20] - Unable to declare in App Module
  • Systemjs integration was changed, now you need to link dist/index.js file. See [SYSTEMJS.md]
  • Support for AoT

0.0.13

  • [#22] - Support zoom
  • other minor changes

0.0.12

  • [#7] - Return pdf info

0.0.11

  • [#10] - Need to Pass cookies with request for document src

0.0.10

  • [#11] - Update to Angular RC6
  • [#12] - Update how-to documentation to RC6
  • Removed version lock from peer dependency

0.0.9

  • [#6] - Limit [page]
  • Updated dependencies
  • Minor changes

0.0.8

  • [#5] - Fixed web worker issue
  • [#4] - Updated angular dependencies to RC.5

0.0.7

  • #2 - Added webpack compatibility
  • Changed default value for original size flag

0.0.6

  • Added option to show one or all pdf pages altogether

0.0.5

  • Updated dependency pdfjs-dist

0.0.4

  • Updated peer dependency

0.0.3

  • Added simple typings file