Package detail
ngx-pdf-viewer
Angular2+ component for rendering PDF
readme
changelog
Changelog
10.4.0 - 01.12.2024
- [#1148] - Update pdfjs-dist dependency to the latest version for better compatibility
- [#1149] - 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
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
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
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
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
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
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
5.1.0
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
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
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
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
2.0.2
- [#174] - 2.0.1 no more scrollbar while zooming
2.0.1
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
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
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