Как сделать PDF в Angular 5? - PullRequest
0 голосов
/ 08 мая 2018

У меня есть код сервера (служба отдыха) в 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 из angular я ничего не получаю (запуск кода java).

Звонок из интерфейса:

<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 голосов
/ 08 мая 2018

Вы можете сделать что-то вроде этого. В вашем компоненте,

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

И в вашем шаблоне.

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

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...