Java使用io流生成pdf文件

首先生成pdf和正常请求接口一样,直接写~

· Controller层:

第一个注解:最顶层增加 @Controller 注解(控制器)不多讲了  直接加上。

第二个注解:最顶层增加 @CrossOrigin 注解此注解是为了浏览器请求的时候防止跨域,然后导致乱码,没有正常生成文件。

· 接口层面

@GetMapping("createMyPdf")
@ApiOperation(value = "生成我的pdf", produces = "application/octet-stream")
public void createMyPdf(@RequestParam
 @ApiParam(value = "自己的入参,自己拼") String name, HttpServletRequest request, HttpServletResponse response) throws IOException, DocumentException {
 

createMyPdfService.createMyPdf(name,response);

}

-------这一层结束了,往下走~~~

· Service层:

void createMyPdf(String name, HttpServletResponse response);

-------这一层结束了,往下走~~~

` Impl实现层:

重头戏来了,值得期待
@Override
public void createMyPdf(String name, HttpServletResponse response) {
 

// 根据入参,查询自己所需的数据

// 下面开始组装pdf架子

//创建文档,纸张大小为A4
Document doc = new Document(PageSize.A4);
Rectangle pageSize = new Rectangle(PageSize.A4.getHeight(), PageSize.A4.getWidth());
pageSize.rotate();
doc.setPageSize(pageSize);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
try {            
String fileName = response.encodeURL(new String((自己生成的pdf表.pdf").getBytes(StandardCharsets.UTF_8), "ISO8859-1"));
doc.addTitle(fileName);
doc.addAuthor("even");
doc.addCreationDate();
doc.addLanguage("中文");
PdfWriter pdfWriter = PdfWriter.getInstance(doc, outputStream);
pdfWriter.setViewerPreferences(PdfWriter.HideToolbar);
pdfWriter.setPageEvent(new PdfReportM1HeaderFooterCopy());
//pdfWriter.setPageEvent(new PageWatermarkEventHandler());
//中文处理
BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
// 则需创建字体
Font titleFont = new Font(bfChinese, 16, Font.BOLD);
Font headFont = new Font(bfChinese, 14, Font.BOLD);
Font textFont6 = new Font(bfChinese, 6, Font.NORMAL);
Font textFont10 = new Font(bfChinese, 10, Font.NORMAL);
Paragraph blankRow = new Paragraph(18f, " ", headFont);
//水印
pdfWriter.setPageEvent(new PageWatermarkEventHandler());
pdfWriter.setPageEvent(new PdfReportM1HeaderFooter());
// 打开文档对象
doc.open();
doc.add(blankRow);
// 创建一个标题
doc.add(FundGeneralSituation
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值