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?










share|improve this question
























  • 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















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?










share|improve this question
























  • 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













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?










share|improve this question















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






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 10 at 21:09









georgeawg

32k104865




32k104865










asked Nov 10 at 20:53









Peter Penzov

1758177371




1758177371












  • 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


















  • 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
















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

















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',
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
});


}
});














 

draft saved


draft discarded


















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






























active

oldest

votes













active

oldest

votes









active

oldest

votes






active

oldest

votes
















 

draft saved


draft discarded



















































 


draft saved


draft discarded














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





















































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







Popular posts from this blog

Florida Star v. B. J. F.

Danny Elfman

Lugert, Oklahoma