如何在Angular 5中渲染PDF?

时间:2018-05-08 08:42:58

标签: angular

我在java中有服务器代码(休息服务):

    @GET
    @Path("/Trip/PDF/{tripId}")
    @Produces("application/pdf")
    public javax.ws.rs.core.Response getPdf(@PathParam("tripId") Integer tripId) throws Exception {
...

byte[] pdf = null;  
...
javax.ws.rs.core.Response.ResponseBuilder responseBuilder = javax.ws.rs.core.Response.ok((Object) pdf);
        responseBuilder.type("application/pdf");
        responseBuilder.header("Content-Disposition", "filename=tripPdf.pdf");
        return responseBuilder.build();

直接在浏览器中使用url我可以看到生成的PDF但是 当我试图从角度调用url时我什么都没得到(java代码运行)。

来自UI的电话:

<a (click)="generateTripPdf(data.trip.id)" href="#" target="_blank">

服务电话(tripId可用):

 generateTripPdf(tripId) {
       this.documentService.getTripPdf(tripId);
      }

服务:

const httpOptionsPdf = {
  headers: new HttpHeaders({ 'Accept': 'application/pdf', 'Content-Type': 'application/pdf' })
};

@Injectable()
export class DocumentService {
  ...
  constructor(private http: HttpClient) { }
...
  public getTripPdf(tripId) { 
    return this.http.get<any>(`${this.baseUrl}/Doc/Trip/PDF/${tripId}`, httpOptionsPdf);
  }

知道如何让它发挥作用吗?

1 个答案:

答案 0 :(得分:0)

你可以这样做。在你的组件中,

constructor() {
  this.baseUrl = 'your-url';
  this.pdfUrl = `${this.baseUrl}/Doc/Trip/PDF/${tripId}`;
}

在你的模板中。

  <a [href]="pdfUrl" target="_blank">Download PDF.</a> <br>

希望这有帮助。