22

I tried opening a PDF file using the window.open(), but the window opens and closes automatically and the file is downloaded like any other file. How to make the pdf file open in new tab? There are no ad blockers installed.

7
  • 3
    have you tried using window.open('filename','_blank'); Commented Jul 6, 2018 at 6:33
  • Yes, that's the function I am using now. Only thing is I am getting the data directly from backend and not local file Commented Jul 6, 2018 at 6:33
  • yes, NP, have you tried this method? with _blank? Commented Jul 6, 2018 at 6:34
  • Yes, the window just opens and closes immediately in chrome Commented Jul 6, 2018 at 6:34
  • 1
    Can you provide a minimal working example, please? Otherwise it's difficult to find issues. Commented Jul 6, 2018 at 6:59

6 Answers 6

55

From @barbsan idea, I changed the http headers and received a blob and used that to display the blob as pdf using window.open(). It worked.

Here is my sample code.

In service file

downloadPDF(url): any { const options = { responseType: ResponseContentType.Blob }; return this.http.get(url, options).map( (res) => { return new Blob([res.blob()], { type: 'application/pdf' }); }); } 

In component file

this.dataService.downloadPDF(url).subscribe(res => { const fileURL = URL.createObjectURL(res); window.open(fileURL, '_blank'); }); 
Sign up to request clarification or add additional context in comments.

6 Comments

Be careful if you're using an ad-blocker extension. Ad-blockers block blob URLs by default. As a result, e.g. in Chrome and Firefox, with the uBlock Origin extension, it would try to open the new window and close it automatically. You can read more about here: stackoverflow.com/questions/51272781/…
Also, if you care about this working in IE too, read this: stackoverflow.com/questions/24007073/…
How to set file name while opening file in new tab with above approach?
any idea how to set name of new tab when opening the PDF?
can any one provide make a file name opening file in new tab with above approach
|
14

One liner solution to open a pdf file in new tab. You just need to have file url and use this function on button click.

window.open(url, '_blank');

Comments

1

you can display pdf fle in new tab by the line:

window.open(fileUrl, '_blank'); 

The fileUrl is a variable that contains the file path.

Comments

1

For the Angular 13 version

downloadPDF(url: string): Observable<Blob> { const options = { responseType: 'blob' as 'json' }; return this.httpClient .get<Blob>(url, options) .pipe(map(res => new Blob([res], { type: 'application/pdf' }))); } 

Comments

0

you need user the "target="_blank" in the tag ;

exemple: <a target="_blank" href="https://www.google.com/"> </a>

1 Comment

Hi Hoiama, welcome to StackOverflow! Unfortunately, your answer doesn't address the original question, which was to use explicitly window.open(). Please make sure to read the question and any answers thoroughly, because it's easy to miss something like this!
0

How to make it work in Angular 10, changes just a little bit, this in the service file from @K Harish answer

import { map } from 'rxjs/operators'; return this.http.get(url, options).pipe(map( (res) => { return new Blob([res], { type: 'application/pdf' }); })); 

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.