Home > Back-end >  Download pdf from a URL instead of opening in a new tab
Download pdf from a URL instead of opening in a new tab

Time:01-12

Is there any possible way in Angular 10 / Typescript to download a PDF from a URL instead of opening it in a new tab?

Sample URL: http://www.africau.edu/images/default/sample.pdf

CodePudding user response:

If you need to download and save it an anchor tag with the download attribute as @sasa suggests should suffice. Here's some sample code for Angular.

<a [href]="url" download>Click to download</a>

If you'd like to programatically download the file you need to use the HttpClient from Angular:

Install this dependency to make your life easier:

npm install file-saver --save
npm install -D @types/file-saver

And have a generic service

import {saveAs} from 'file-saver'
@Injectable({ providedIn: 'root' })
export class DownloadService {

  constructor(private http: HttpClient) {}

  downloadUrl(url: string, filename: string): Observable<Blob> {
    return this.http.get(url, {responseType: 'blob' }).pipe(
      map(res => res.blob()),
      tap(blob => saveAs(blob, filename))
    )
  }
}

Notice that calling the function won't download the file; you will need to subscribe to the Observable<Blob> returned or transform it into a Promise and await it

CodePudding user response:

Sorry if I'm being too obvious but the download attribute to the a tag doesn't work?

CodePudding user response:

You need to set the content type as application/octet-stream typically to inform the browser that it should download it instead of displaying it in a tab. Not sure specifically how in Angular 10 / Typescript:

  •  Tags:  
  • Related