Open PDF document without popup blocker
I'm trying to implement example with opening PDF document from Angular 6 and Spring framework. I tried this:
private static final String EXTERNAL_FILE_PATH = "/Users/test/Documents/blacklist_api.pdf";
@GetMapping(path="export")
public ResponseEntity<byte> export() throws IOException
File pdfFile = Paths.get(EXTERNAL_FILE_PATH).toFile();
byte fileContent = Files.readAllBytes(pdfFile.toPath());
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_PDF);
// Here you have to set the actual filename of your pdf
headers.setContentDispositionFormData(pdfFile.getName(), pdfFile.getName());
headers.setCacheControl("must-revalidate, post-check=0, pre-check=0, no-cache, no-store, must-revalidate");
headers.setPragma("no-cache");
ResponseEntity<byte> response = new ResponseEntity<>(fileContent, headers, HttpStatus.OK);
return response;
Service:
@Injectable(
providedIn: 'root'
)
export class DownloadService
constructor(private http: HttpClient)
downloadPDF(): any
return this.http.get(environment.api.urls.downloads.getPdf,
responseType: 'blob'
)
.pipe(
map((res: any) =>
return res
)
);
Component:
@Component(
selector: 'app-download',
templateUrl: './download.component.html',
styleUrls: ['./download.component.scss']
)
export class DownloadComponent implements OnInit
constructor(private downloadService: DownloadService,
private router: Router,
private route: ActivatedRoute)
ngOnInit()
export()
this.downloadService.downloadPDF().subscribe(res =>
const fileURL = URL.createObjectURL(res);
window.open(fileURL, '_blank');
);
I can download the file in new tab but I have to click enable popup. Is there are way to implement this without manually clicking on enable popup? Probably I need to change the type of the returned object?
angular angular6
|
show 3 more comments
I'm trying to implement example with opening PDF document from Angular 6 and Spring framework. I tried this:
private static final String EXTERNAL_FILE_PATH = "/Users/test/Documents/blacklist_api.pdf";
@GetMapping(path="export")
public ResponseEntity<byte> export() throws IOException
File pdfFile = Paths.get(EXTERNAL_FILE_PATH).toFile();
byte fileContent = Files.readAllBytes(pdfFile.toPath());
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_PDF);
// Here you have to set the actual filename of your pdf
headers.setContentDispositionFormData(pdfFile.getName(), pdfFile.getName());
headers.setCacheControl("must-revalidate, post-check=0, pre-check=0, no-cache, no-store, must-revalidate");
headers.setPragma("no-cache");
ResponseEntity<byte> response = new ResponseEntity<>(fileContent, headers, HttpStatus.OK);
return response;
Service:
@Injectable(
providedIn: 'root'
)
export class DownloadService
constructor(private http: HttpClient)
downloadPDF(): any
return this.http.get(environment.api.urls.downloads.getPdf,
responseType: 'blob'
)
.pipe(
map((res: any) =>
return res
)
);
Component:
@Component(
selector: 'app-download',
templateUrl: './download.component.html',
styleUrls: ['./download.component.scss']
)
export class DownloadComponent implements OnInit
constructor(private downloadService: DownloadService,
private router: Router,
private route: ActivatedRoute)
ngOnInit()
export()
this.downloadService.downloadPDF().subscribe(res =>
const fileURL = URL.createObjectURL(res);
window.open(fileURL, '_blank');
);
I can download the file in new tab but I have to click enable popup. Is there are way to implement this without manually clicking on enable popup? Probably I need to change the type of the returned object?
angular angular6
It looks like your PDF file is on the same server as the service. In that case, I'd suggest serving the file with SpringBoot, either by moving the file into the static folder in your resources or by overwriting theaddResourceHandlers
configuration. Would that be feasable in your case?
– pascalpuetz
Nov 10 '18 at 21:05
Can you should me how to configure addResourceHandlers?
– Peter Penzov
Nov 10 '18 at 21:09
Try this guide: spring.io/blog/2013/12/19/…
– pascalpuetz
Nov 10 '18 at 21:12
Oh and if you use that approach, just open the location without first downloading the PDF file (e.g.window.open('/my/static/file.pdf', '_blank');
)
– pascalpuetz
Nov 10 '18 at 21:13
Ok but probably it should be more appropriate to configure Angular not Spring for which content to allow for popup?
– Peter Penzov
Nov 10 '18 at 21:15
|
show 3 more comments
I'm trying to implement example with opening PDF document from Angular 6 and Spring framework. I tried this:
private static final String EXTERNAL_FILE_PATH = "/Users/test/Documents/blacklist_api.pdf";
@GetMapping(path="export")
public ResponseEntity<byte> export() throws IOException
File pdfFile = Paths.get(EXTERNAL_FILE_PATH).toFile();
byte fileContent = Files.readAllBytes(pdfFile.toPath());
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_PDF);
// Here you have to set the actual filename of your pdf
headers.setContentDispositionFormData(pdfFile.getName(), pdfFile.getName());
headers.setCacheControl("must-revalidate, post-check=0, pre-check=0, no-cache, no-store, must-revalidate");
headers.setPragma("no-cache");
ResponseEntity<byte> response = new ResponseEntity<>(fileContent, headers, HttpStatus.OK);
return response;
Service:
@Injectable(
providedIn: 'root'
)
export class DownloadService
constructor(private http: HttpClient)
downloadPDF(): any
return this.http.get(environment.api.urls.downloads.getPdf,
responseType: 'blob'
)
.pipe(
map((res: any) =>
return res
)
);
Component:
@Component(
selector: 'app-download',
templateUrl: './download.component.html',
styleUrls: ['./download.component.scss']
)
export class DownloadComponent implements OnInit
constructor(private downloadService: DownloadService,
private router: Router,
private route: ActivatedRoute)
ngOnInit()
export()
this.downloadService.downloadPDF().subscribe(res =>
const fileURL = URL.createObjectURL(res);
window.open(fileURL, '_blank');
);
I can download the file in new tab but I have to click enable popup. Is there are way to implement this without manually clicking on enable popup? Probably I need to change the type of the returned object?
angular angular6
I'm trying to implement example with opening PDF document from Angular 6 and Spring framework. I tried this:
private static final String EXTERNAL_FILE_PATH = "/Users/test/Documents/blacklist_api.pdf";
@GetMapping(path="export")
public ResponseEntity<byte> export() throws IOException
File pdfFile = Paths.get(EXTERNAL_FILE_PATH).toFile();
byte fileContent = Files.readAllBytes(pdfFile.toPath());
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_PDF);
// Here you have to set the actual filename of your pdf
headers.setContentDispositionFormData(pdfFile.getName(), pdfFile.getName());
headers.setCacheControl("must-revalidate, post-check=0, pre-check=0, no-cache, no-store, must-revalidate");
headers.setPragma("no-cache");
ResponseEntity<byte> response = new ResponseEntity<>(fileContent, headers, HttpStatus.OK);
return response;
Service:
@Injectable(
providedIn: 'root'
)
export class DownloadService
constructor(private http: HttpClient)
downloadPDF(): any
return this.http.get(environment.api.urls.downloads.getPdf,
responseType: 'blob'
)
.pipe(
map((res: any) =>
return res
)
);
Component:
@Component(
selector: 'app-download',
templateUrl: './download.component.html',
styleUrls: ['./download.component.scss']
)
export class DownloadComponent implements OnInit
constructor(private downloadService: DownloadService,
private router: Router,
private route: ActivatedRoute)
ngOnInit()
export()
this.downloadService.downloadPDF().subscribe(res =>
const fileURL = URL.createObjectURL(res);
window.open(fileURL, '_blank');
);
I can download the file in new tab but I have to click enable popup. Is there are way to implement this without manually clicking on enable popup? Probably I need to change the type of the returned object?
angular angular6
angular angular6
edited Nov 10 '18 at 21:09
georgeawg
32.9k104968
32.9k104968
asked Nov 10 '18 at 20:53
Peter PenzovPeter Penzov
8558178386
8558178386
It looks like your PDF file is on the same server as the service. In that case, I'd suggest serving the file with SpringBoot, either by moving the file into the static folder in your resources or by overwriting theaddResourceHandlers
configuration. Would that be feasable in your case?
– pascalpuetz
Nov 10 '18 at 21:05
Can you should me how to configure addResourceHandlers?
– Peter Penzov
Nov 10 '18 at 21:09
Try this guide: spring.io/blog/2013/12/19/…
– pascalpuetz
Nov 10 '18 at 21:12
Oh and if you use that approach, just open the location without first downloading the PDF file (e.g.window.open('/my/static/file.pdf', '_blank');
)
– pascalpuetz
Nov 10 '18 at 21:13
Ok but probably it should be more appropriate to configure Angular not Spring for which content to allow for popup?
– Peter Penzov
Nov 10 '18 at 21:15
|
show 3 more comments
It looks like your PDF file is on the same server as the service. In that case, I'd suggest serving the file with SpringBoot, either by moving the file into the static folder in your resources or by overwriting theaddResourceHandlers
configuration. Would that be feasable in your case?
– pascalpuetz
Nov 10 '18 at 21:05
Can you should me how to configure addResourceHandlers?
– Peter Penzov
Nov 10 '18 at 21:09
Try this guide: spring.io/blog/2013/12/19/…
– pascalpuetz
Nov 10 '18 at 21:12
Oh and if you use that approach, just open the location without first downloading the PDF file (e.g.window.open('/my/static/file.pdf', '_blank');
)
– pascalpuetz
Nov 10 '18 at 21:13
Ok but probably it should be more appropriate to configure Angular not Spring for which content to allow for popup?
– Peter Penzov
Nov 10 '18 at 21:15
It looks like your PDF file is on the same server as the service. In that case, I'd suggest serving the file with SpringBoot, either by moving the file into the static folder in your resources or by overwriting the
addResourceHandlers
configuration. Would that be feasable in your case?– pascalpuetz
Nov 10 '18 at 21:05
It looks like your PDF file is on the same server as the service. In that case, I'd suggest serving the file with SpringBoot, either by moving the file into the static folder in your resources or by overwriting the
addResourceHandlers
configuration. Would that be feasable in your case?– pascalpuetz
Nov 10 '18 at 21:05
Can you should me how to configure addResourceHandlers?
– Peter Penzov
Nov 10 '18 at 21:09
Can you should me how to configure addResourceHandlers?
– Peter Penzov
Nov 10 '18 at 21:09
Try this guide: spring.io/blog/2013/12/19/…
– pascalpuetz
Nov 10 '18 at 21:12
Try this guide: spring.io/blog/2013/12/19/…
– pascalpuetz
Nov 10 '18 at 21:12
Oh and if you use that approach, just open the location without first downloading the PDF file (e.g.
window.open('/my/static/file.pdf', '_blank');
)– pascalpuetz
Nov 10 '18 at 21:13
Oh and if you use that approach, just open the location without first downloading the PDF file (e.g.
window.open('/my/static/file.pdf', '_blank');
)– pascalpuetz
Nov 10 '18 at 21:13
Ok but probably it should be more appropriate to configure Angular not Spring for which content to allow for popup?
– Peter Penzov
Nov 10 '18 at 21:15
Ok but probably it should be more appropriate to configure Angular not Spring for which content to allow for popup?
– Peter Penzov
Nov 10 '18 at 21:15
|
show 3 more comments
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53243309%2fopen-pdf-document-without-popup-blocker%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53243309%2fopen-pdf-document-without-popup-blocker%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
It looks like your PDF file is on the same server as the service. In that case, I'd suggest serving the file with SpringBoot, either by moving the file into the static folder in your resources or by overwriting the
addResourceHandlers
configuration. Would that be feasable in your case?– pascalpuetz
Nov 10 '18 at 21:05
Can you should me how to configure addResourceHandlers?
– Peter Penzov
Nov 10 '18 at 21:09
Try this guide: spring.io/blog/2013/12/19/…
– pascalpuetz
Nov 10 '18 at 21:12
Oh and if you use that approach, just open the location without first downloading the PDF file (e.g.
window.open('/my/static/file.pdf', '_blank');
)– pascalpuetz
Nov 10 '18 at 21:13
Ok but probably it should be more appropriate to configure Angular not Spring for which content to allow for popup?
– Peter Penzov
Nov 10 '18 at 21:15