将数据导出为带请求参数的pdf格式



我想使用spring boot和angular通过包括参数导出我的部分数据到pdf文件,它工作得很好,我用postman测试了它,但我不知道如何用angular来做。

My Controller:

public ResponseEntity<InputStreamResource>exportPdf(@RequestParam(value="lotNum",required=false) String lotNum) {
List<Accord> accords=accordRepository.findAllByOrigineAccordLotLotNum(lotNum);
List<Accord> accordss=accordRepository.findAll();
List<Affaire> affaires=affaireRepository.findAll();
if(simulationService.checkLength(accordss, affaires)) {

ByteArrayInputStream bais=simulationService.GeneratePdf(accords);
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Dispositon", "inline; filename=simulation.pdf");
return ResponseEntity.ok().headers(headers).contentType(MediaType.APPLICATION_PDF).body(new InputStreamResource(bais));
} else {
return new ResponseEntity<>( HttpStatus.CONFLICT);
}
}

我service.ts:

exportPdf(lotNum:any): Observable<Blob>  {
let params = new HttpParams();
params = params.append('lotNum', lotNum);
const headers =new HttpHeaders({ 'Access-Control-Allow-Origin':'*' ,'Content-Type':'application/json','responseType' :'text' });
return this.http.get("http://localhost:8080/export/pdf",{headers:headers,params:params,responseType:'blob'});}

simulation.ts:

exportPdf(lotNum:any){
this.date=new Date();
let latest_date =this.datepipe.transform(this.date, 'yyyy-MM-dd');
this.simulationService.exportPdf(lotNum).subscribe(x=>{
const blob = new Blob([x],{type:'application/pdf'});
if (window.navigator && (window.navigator as any).msSaveOrOpenBlob){
( window.navigator as any).msSaveOrOpenBlob(blob);
return;}
const data = window.URL.createObjectURL(blob);
const link = document.createElement('a');
link.href=data;
link.download="simulation"+latest_date+".pdf";
link.dispatchEvent(new MouseEvent('click',{bubbles:true,cancelable:true,view:window}));
setTimeout(function(){
window.URL.revokeObjectURL(data);
link.remove();
},100);
});
}

当我从客户端发送请求时,它给了我状态码:200请求URL: http://localhost:8080/export/pdf?lotNum=undefined

编辑:错误在html文件中,这就是为什么它在URL中给出undefined。

<input type="text" class="form-control"id="lotNum" name="lotNum" [(ngModel)]="lotNum">

它丢失了[(ngModel)]="lotNum">

最新更新