Open PDF document without popup blocker
up vote
1
down vote
favorite
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
up vote
1
down vote
favorite
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 at 21:05
Can you should me how to configure addResourceHandlers?
– Peter Penzov
Nov 10 at 21:09
Try this guide: spring.io/blog/2013/12/19/…
– pascalpuetz
Nov 10 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 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 at 21:15
|
show 3 more comments
up vote
1
down vote
favorite
up vote
1
down vote
favorite
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 at 21:09
georgeawg
32k104864
32k104864
asked Nov 10 at 20:53
Peter Penzov
12056177371
12056177371
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 at 21:05
Can you should me how to configure addResourceHandlers?
– Peter Penzov
Nov 10 at 21:09
Try this guide: spring.io/blog/2013/12/19/…
– pascalpuetz
Nov 10 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 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 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 at 21:05
Can you should me how to configure addResourceHandlers?
– Peter Penzov
Nov 10 at 21:09
Try this guide: spring.io/blog/2013/12/19/…
– pascalpuetz
Nov 10 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 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 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 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 at 21:05
Can you should me how to configure addResourceHandlers?
– Peter Penzov
Nov 10 at 21:09
Can you should me how to configure addResourceHandlers?
– Peter Penzov
Nov 10 at 21:09
Try this guide: spring.io/blog/2013/12/19/…
– pascalpuetz
Nov 10 at 21:12
Try this guide: spring.io/blog/2013/12/19/…
– pascalpuetz
Nov 10 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 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 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 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 at 21:15
|
show 3 more comments
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
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 at 21:05
Can you should me how to configure addResourceHandlers?
– Peter Penzov
Nov 10 at 21:09
Try this guide: spring.io/blog/2013/12/19/…
– pascalpuetz
Nov 10 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 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 at 21:15