You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Angular中使用ng2-pdf-viewer显示本地PDF文件?

ng2-pdf-viewer加载本地PDF文件操作指南

前提说明

浏览器出于安全限制,不允许前端代码直接读取用户本地磁盘的绝对路径,因此无法直接传入下载目录的文件路径直接加载PDF。你可以根据使用场景选择以下两种方案操作:

场景1:加载固定的PDF文件

如果要展示的PDF是固定文件,可以放到项目静态资源目录内加载:

  • 将目标PDF文件存入Angular项目的src/assets目录下,示例文件名为demo.pdf
  • 安装ng2-pdf-viewer依赖
    npm install ng2-pdf-viewer --save
  • 在对应业务模块中导入PdfViewerModule
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { PdfViewerModule } from 'ng2-pdf-viewer';
import { AppComponent } from './app.component';

@NgModule({
  declarations: [AppComponent],
  imports: [BrowserModule, PdfViewerModule],
  bootstrap: [AppComponent]
})
export class AppModule { }
  • 在组件模板中添加展示标签
<pdf-viewer
  [src]="'assets/demo.pdf'"
  [render-text]="true"
  style="display: block; width: 100%; height: 80vh;"
></pdf-viewer>

场景2:加载用户手动选择的本地PDF(含下载目录文件)

如果要加载用户下载目录内的任意PDF,需要用户通过文件选择器主动选中文件后加载:

  • 在组件模板中添加文件选择控件和PDF展示标签
<input type="file" accept="application/pdf" (change)="loadPdf($event)">
<pdf-viewer
  *ngIf="pdfSrc"
  [src]="pdfSrc"
  [render-text]="true"
  style="display: block; width: 100%; height: 80vh; margin-top: 20px;"
></pdf-viewer>
  • 在组件逻辑中实现文件读取方法
import { Component } from '@angular/core';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  pdfSrc: any = null;

  loadPdf(event: Event): void {
    const input = event.target as HTMLInputElement;
    if (input.files?.length) {
      const selectedFile = input.files[0];
      // 方式1:转成Blob URL加载
      this.pdfSrc = URL.createObjectURL(selectedFile);

      // 方式2:转成ArrayBuffer加载,二选一即可
      // const reader = new FileReader();
      // reader.onload = e => this.pdfSrc = e.target?.result;
      // reader.readAsArrayBuffer(selectedFile);
    }
  }
}

常见问题修复

如果出现pdf.worker.js加载报错,可手动指定worker文件路径,你可以将对应版本的pdf.worker.min.js下载到本地assets目录后配置:

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

// 写在组件类外部或者构造函数中
pdfDefaultOptions.workerSrc = 'assets/pdf.worker.min.js';

内容的提问来源于stack exchange,提问作者ashish29494

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 21:36:01