要实现Angular 11向.Net Core后端发起PDF的POST请求,可以按照以下步骤进行:
ng generate service pdf-service
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
@Injectable({
providedIn: 'root'
})
export class PdfService {
constructor(private http: HttpClient) { }
// 添加发送PDF请求的方法
postPdf(data: any) {
return this.http.post('http://your-backend-url/api/pdf', data, { responseType: 'blob' });
}
}
import { Component } from '@angular/core';
import { PdfService } from './pdf.service';
@Component({
selector: 'app-root',
template: `
`
})
export class AppComponent {
constructor(private pdfService: PdfService) { }
generatePdf() {
const data = { /* 传递给后端的数据 */ };
this.pdfService.postPdf(data).subscribe((response: Blob) => {
const file = new Blob([response], { type: 'application/pdf' });
const fileURL = URL.createObjectURL(file);
window.open(fileURL); // 在新窗口中打开PDF文件
});
}
}
using Microsoft.AspNetCore.Mvc;
using System.IO;
using System.Text;
[ApiController]
[Route("api/[controller]")]
public class PdfController : ControllerBase
{
[HttpPost]
public IActionResult GeneratePdf([FromBody] dynamic data)
{
// 处理接收到的数据,生成PDF文件
byte[] pdfBytes = GeneratePdfBytes(data);
// 返回生成的PDF文件
return File(pdfBytes, "application/pdf");
}
private byte[] GeneratePdfBytes(dynamic data)
{
// 使用第三方库(如iTextSharp)生成PDF文件
// ...
// 返回生成的PDF文件字节数组
return pdfBytes;
}
}
请注意,上述示例中的代码仅供参考,你需要根据你的具体需求进行适当的修改和调整。此外,还需要按照实际情况配置后端的路由和跨域设置等。