java生成pdf并预览或下载

java

<!-itextpdf的两个jar包->

        <dependency>

<groupId>com.itextpdf</groupId>

<artifactId>itextpdf</artifactId>

<version>5.5.13</version>

</dependency>

<dependency>

<groupId>com.itextpdf</groupId>

<artifactId>itext-asian</artifactId>

<version>5.2.0</version>

</dependency>

public class Test {

public static void main(String[] args) {

dkzzszyfp();

}

/**

* 代开增值税专用发票缴纳税款申报单

*/

public static void dkzzszyfp() {

// 1:建立Document对象实例

Document document = new Document();

try {

// 2:建立一个PDF 写入器与document对象关联通过书写器(Writer)可以将文档写入到磁盘中

StringBuilder filename = new StringBuilder();

filename.append("代开增值税专用发票缴纳税款申报单").append(new SimpleDateFormat("yyyyMMddHHmm").format(new Date())).append(".pdf");

            ByteArrayOutputStream baos = new ByteArrayOutputStream();
       PdfWriter.getInstance(document, baos);

//PdfWriter.getInstance(document, new FileOutputStream(filename.toString()));

// 3:打开文档

document.open();

//解决中文不显示问题

BaseFont bfChinese = BaseFont.createFont(AsianFontMapper.ChineseSimplifiedFont, AsianFontMapper.ChineseSimplifiedEncoding_H, BaseFont.NOT_EMBEDDED);

Font fontChina18 = new Font(bfChinese, 18);

Font fontChina12 = new Font(bfChinese, 12);

// 4:向文档添加内容

// 标题

Paragraph titleParagraph = new Paragraph("代开增值税专用发票缴纳税款申报单", fontChina18);

titleParagraph.setAlignment(Element.ALIGN_CENTER);// 居中

document.add(titleParagraph);

// 空格

Paragraph blank1 = new Paragraph(" ");

document.add(blank1);

// 编号

Chunk c1 = new Chunk("编号:", fontChina12);

Chunk c2 = new Chunk("20140531001", fontChina12);

Paragraph snoParagraph = new Paragraph();

snoParagraph.add(c1);

snoParagraph.add(c2);

snoParagraph.setAlignment(Element.ALIGN_RIGHT);

document.add(snoParagraph);

// 空格

document.add(blank1);

// 代开税务机关

Chunk c3 = new Chunk("代开税务机关名称:青岛经济技术开发区国税局", fontChina12);

Paragraph dkswjgParagraph = new Paragraph();

dkswjgParagraph.add(c3);

dkswjgParagraph.setAlignment(Element.ALIGN_LEFT);

document.add(dkswjgParagraph);

// 提醒

String alert = "我单位提供的开票资料真实、完整、准确,符合有关法律、法规,否则我单位将承担一切法律责任,现申请代开增值税专用发票。";

Paragraph alertParagraph = new Paragraph(alert, fontChina12);

alertParagraph.setFirstLineIndent(24);// 首行缩进个2字符

document.add(alertParagraph);

// 填开日期

Chunk c5 = new Chunk("填开日期:2014年05月31日", fontChina12);

Paragraph tkrqParagraph = new Paragraph();

tkrqParagraph.add(c5);

tkrqParagraph.setAlignment(Element.ALIGN_RIGHT);

document.add(tkrqParagraph);

// 空格

document.add(blank1);

// 表格处理

PdfPTable table = new PdfPTable(8);// 八列

table.setWidthPercentage(100);// 表格宽度为100%

// 购货单位

PdfPCell cell1 = new PdfPCell();

cell1.setBorderWidth(0.5F);// Border宽度为1

cell1.setRowspan(3);// 跨三行

cell1.setPhrase(new Paragraph("购货单位", fontChina12));

cell1.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell1.setExtraParagraphSpace(10);

table.addCell(cell1);

PdfPCell cell2 = new PdfPCell();

cell2.setBorderWidth(0.5F);

cell2.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell2.setPhrase(new Paragraph("名称", fontChina12));

table.addCell(cell2);

PdfPCell cell3 = new PdfPCell();

cell3.setBorderWidth(0.5F);

cell3.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell3.setColspan(3);// 跨三列

cell3.setPhrase(new Paragraph("名称", fontChina12));

table.addCell(cell3);

PdfPCell cell4 = new PdfPCell();

cell4.setBorderWidth(0.5F);

cell4.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell4.setPhrase(new Paragraph("税务登记号", fontChina12));

table.addCell(cell4);

PdfPCell cell5 = new PdfPCell();

cell5.setBorderWidth(0.5F);

cell5.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell5.setColspan(2);// 跨两列

cell5.setPhrase(new Paragraph("税务登记号", fontChina12));

table.addCell(cell5);

PdfPCell cell6 = new PdfPCell();

cell6.setBorderWidth(0.5F);

cell6.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell6.setPhrase(new Paragraph("地址", fontChina12));

table.addCell(cell6);

PdfPCell cell7 = new PdfPCell();

cell7.setBorderWidth(0.5F);

cell7.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell7.setColspan(3);// 跨三列

cell7.setPhrase(new Paragraph("地址", fontChina12));

table.addCell(cell7);

PdfPCell cell8 = new PdfPCell();

cell8.setBorderWidth(0.5F);

cell8.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell8.setPhrase(new Paragraph("开户银行", fontChina12));

table.addCell(cell8);

PdfPCell cell9 = new PdfPCell();

cell9.setBorderWidth(0.5F);

cell9.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell9.setColspan(2);// 跨两列

cell9.setPhrase(new Paragraph("开户银行", fontChina12));

table.addCell(cell9);

PdfPCell cell10 = new PdfPCell();

cell10.setBorderWidth(0.5F);

cell10.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell10.setPhrase(new Paragraph("电话", fontChina12));

table.addCell(cell10);

PdfPCell cell11 = new PdfPCell();

cell11.setBorderWidth(0.5F);

cell11.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell11.setColspan(3);// 跨三列

cell11.setPhrase(new Paragraph("电话", fontChina12));

table.addCell(cell11);

PdfPCell cell12 = new PdfPCell();

cell12.setBorderWidth(0.5F);

cell12.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell12.setPhrase(new Paragraph("开户银行账号", fontChina12));

table.addCell(cell12);

PdfPCell cell13 = new PdfPCell();

cell13.setBorderWidth(0.5F);

cell13.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell13.setColspan(2);// 跨两列

cell13.setPhrase(new Paragraph("开户银行账号", fontChina12));

table.addCell(cell13);

// 货物或应税劳务信息

// Row1

PdfPCell cell14 = new PdfPCell();

cell14.setBorderWidth(0.5F);

cell14.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell14.setPhrase(new Paragraph("货物或应税劳务名称", fontChina12));

table.addCell(cell14);

PdfPCell cell15 = new PdfPCell();

cell15.setBorderWidth(0.5F);

cell15.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell15.setPhrase(new Paragraph("规格型号", fontChina12));

table.addCell(cell15);

PdfPCell cell16 = new PdfPCell();

cell16.setBorderWidth(0.5F);

cell16.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell16.setPhrase(new Paragraph("计量单位", fontChina12));

table.addCell(cell16);

PdfPCell cell17 = new PdfPCell();

cell17.setBorderWidth(0.5F);

cell17.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell17.setPhrase(new Paragraph("数量", fontChina12));

table.addCell(cell17);

PdfPCell cell18 = new PdfPCell();

cell18.setBorderWidth(0.5F);

cell18.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell18.setPhrase(new Paragraph("单价", fontChina12));

table.addCell(cell18);

PdfPCell cell19 = new PdfPCell();

cell19.setBorderWidth(0.5F);

cell19.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell19.setPhrase(new Paragraph(" 金额", fontChina12));

table.addCell(cell19);

PdfPCell cell20 = new PdfPCell();

cell20.setBorderWidth(0.5F);

cell20.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell20.setPhrase(new Paragraph("征收率", fontChina12));

table.addCell(cell20);

PdfPCell cell21 = new PdfPCell();

cell21.setBorderWidth(0.5F);

cell21.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell21.setPhrase(new Paragraph("税额", fontChina12));

table.addCell(cell21);

// Row2 填写数据

PdfPCell cell22 = new PdfPCell();

cell22.setBorderWidth(0.5F);

cell22.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell22.setPhrase(new Paragraph("货物或应税劳务名称", fontChina12));

table.addCell(cell22);

PdfPCell cell23 = new PdfPCell();

cell23.setBorderWidth(0.5F);

cell23.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell23.setPhrase(new Paragraph("规格型号", fontChina12));

table.addCell(cell23);

PdfPCell cell24 = new PdfPCell();

cell24.setBorderWidth(0.5F);

cell24.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell24.setPhrase(new Paragraph("计量单位", fontChina12));

table.addCell(cell24);

PdfPCell cell25 = new PdfPCell();

cell25.setBorderWidth(0.5F);

cell25.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell25.setPhrase(new Paragraph("数量", fontChina12));

table.addCell(cell25);

PdfPCell cell26 = new PdfPCell();

cell26.setBorderWidth(0.5F);

cell26.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell26.setPhrase(new Paragraph("单价", fontChina12));

table.addCell(cell26);

PdfPCell cell27 = new PdfPCell();

cell27.setBorderWidth(0.5F);

cell27.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell27.setPhrase(new Paragraph(" 金额", fontChina12));

table.addCell(cell27);

PdfPCell cell28 = new PdfPCell();

cell28.setBorderWidth(0.5F);

cell28.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell28.setPhrase(new Paragraph("征收率", fontChina12));

table.addCell(cell28);

PdfPCell cell29 = new PdfPCell();

cell29.setBorderWidth(0.5F);

cell29.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell29.setPhrase(new Paragraph("税额", fontChina12));

table.addCell(cell29);

// 价税合计

PdfPCell cell30 = new PdfPCell();

cell30.setBorderWidth(0.5F);

cell30.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell30.setPhrase(new Paragraph("价税合计(大写)", fontChina12));

table.addCell(cell30);

PdfPCell cell31 = new PdfPCell();

cell31.setBorderWidth(0.5F);

cell31.setColspan(4);// 跨四列

cell31.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell31.setPhrase(new Paragraph("价税合计(大写)", fontChina12));

table.addCell(cell31);

PdfPCell cell32 = new PdfPCell();

cell32.setBorderWidth(0.5F);

cell32.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell32.setPhrase(new Paragraph("价税合计(小写)", fontChina12));

table.addCell(cell32);

PdfPCell cell33 = new PdfPCell();

cell33.setBorderWidth(0.5F);

cell33.setColspan(2);// 跨两列

cell33.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell33.setPhrase(new Paragraph("价税合计(小写)", fontChina12));

table.addCell(cell33);

// 备注

PdfPCell cell34 = new PdfPCell();

cell34.setBorderWidth(0.5F);

cell34.setMinimumHeight(40);

cell34.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell34.setPhrase(new Paragraph("备注", fontChina12));

table.addCell(cell34);

PdfPCell cell35 = new PdfPCell();

cell35.setBorderWidth(0.5F);

cell35.setColspan(7);

cell35.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell35.setPhrase(new Paragraph("备注", fontChina12));

table.addCell(cell35);

// 销货单位

PdfPCell cell36 = new PdfPCell();

cell36.setBorderWidth(0.5F);// Border宽度为1

cell36.setRowspan(3);// 跨三行

cell36.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell36.setPhrase(new Paragraph("销货单位", fontChina12));

table.addCell(cell36);

PdfPCell cell37 = new PdfPCell();

cell37.setBorderWidth(0.5F);

cell37.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell37.setPhrase(new Paragraph("名称", fontChina12));

table.addCell(cell37);

PdfPCell cell38 = new PdfPCell();

cell38.setBorderWidth(0.5F);

cell38.setColspan(3);// 跨三列

cell38.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell38.setPhrase(new Paragraph("名称", fontChina12));

table.addCell(cell38);

PdfPCell cell39 = new PdfPCell();

cell39.setBorderWidth(0.5F);

cell39.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell39.setPhrase(new Paragraph("税务登记号", fontChina12));

table.addCell(cell39);

PdfPCell cell40 = new PdfPCell();

cell40.setBorderWidth(0.5F);

cell40.setColspan(2);// 跨两列

cell40.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell40.setPhrase(new Paragraph("税务登记号", fontChina12));

table.addCell(cell40);

PdfPCell cell41 = new PdfPCell();

cell41.setBorderWidth(0.5F);

cell41.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell41.setPhrase(new Paragraph("地址", fontChina12));

table.addCell(cell41);

PdfPCell cell42 = new PdfPCell();

cell42.setBorderWidth(0.5F);

cell42.setColspan(3);// 跨三列

cell42.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell42.setPhrase(new Paragraph("地址", fontChina12));

table.addCell(cell42);

PdfPCell cell43 = new PdfPCell();

cell43.setBorderWidth(0.5F);

cell43.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell43.setPhrase(new Paragraph("开户银行", fontChina12));

table.addCell(cell43);

PdfPCell cell44 = new PdfPCell();

cell44.setBorderWidth(0.5F);

cell44.setColspan(2);// 跨两列

cell44.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell44.setPhrase(new Paragraph("开户银行", fontChina12));

table.addCell(cell44);

PdfPCell cell45 = new PdfPCell();

cell45.setBorderWidth(0.5F);

cell45.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell45.setPhrase(new Paragraph("电话", fontChina12));

table.addCell(cell45);

PdfPCell cell46 = new PdfPCell();

cell46.setBorderWidth(0.5F);

cell46.setColspan(3);// 跨三列

cell46.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell46.setPhrase(new Paragraph("电话", fontChina12));

table.addCell(cell46);

PdfPCell cell47 = new PdfPCell();

cell47.setBorderWidth(0.5F);

cell47.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell47.setPhrase(new Paragraph("开户银行账号", fontChina12));

table.addCell(cell47);

PdfPCell cell48 = new PdfPCell();

cell48.setBorderWidth(0.5F);

cell48.setColspan(2);// 跨两列

cell48.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);

cell48.setPhrase(new Paragraph("开户银行账号", fontChina12));

table.addCell(cell48);

// 底部

Paragraph pQz = new Paragraph("(签字)", fontChina12);

pQz.setAlignment(Element.ALIGN_RIGHT);

pQz.setIndentationRight(20);

pQz.setExtraParagraphSpace(60);

Paragraph pJbrQz = new Paragraph("申请经办人(签字)", fontChina12);

pJbrQz.setAlignment(Element.ALIGN_RIGHT);

pJbrQz.setIndentationRight(20);

pJbrQz.setExtraParagraphSpace(60);

Paragraph pDate = new Paragraph(" 年 月 日", fontChina12);

pDate.setAlignment(Element.ALIGN_RIGHT);

pQz.setIndentationRight(20);

PdfPCell cellF1 = new PdfPCell();

cellF1.setBorderWidth(0.5F);

cellF1.setColspan(2);

cellF1.setFixedHeight(200);//

Paragraph p0 = new Paragraph("税务机关税款征收岗位税收完税凭证号:", fontChina12);

cellF1.addElement(p0);

cellF1.addElement(blank1);

cellF1.addElement(blank1);

cellF1.addElement(blank1);

cellF1.addElement(pQz);

cellF1.addElement(pDate);

table.addCell(cellF1);

PdfPCell cellF2 = new PdfPCell();

cellF2.setBorderWidth(0.5F);

cellF2.setColspan(3);

Paragraph p1 = new Paragraph("税务机关xxx岗位", fontChina12);

Paragraph p2 = new Paragraph("发票代码: ", fontChina12);

Paragraph p3 = new Paragraph("发票号码: ", fontChina12);

cellF2.addElement(p1);

cellF2.addElement(p2);

cellF2.addElement(p3);

cellF2.addElement(blank1);

cellF2.addElement(blank1);

cellF2.addElement(pQz);

cellF2.addElement(pDate);

table.addCell(cellF2);

PdfPCell cellF3 = new PdfPCell();

cellF3.setBorderWidth(0.5F);

cellF3.setColspan(3);

Paragraph p4 = new Paragraph("经核对,所开发票与申报单内容一致。", fontChina12);

p4.setFirstLineIndent(24);

cellF3.addElement(p4);

cellF3.addElement(blank1);

cellF3.addElement(blank1);

cellF3.addElement(blank1);

cellF3.addElement(pJbrQz);

cellF3.addElement(pDate);

table.addCell(cellF3);

document.add(table);

document.add(blank1);

//底部额外信息

StringBuilder sb1 = new StringBuilder();

sb1.append("申请xxx纳税人(公章)_________");

sb1.append("法人代表_________");

sb1.append("财务负责人_________");

sb1.append("填写人_________");

Paragraph pE = new Paragraph(sb1.toString(), fontChina12);

pE.setAlignment(Element.ALIGN_CENTER);

document.add(pE);

document.add(blank1);

//注

StringBuilder sb2 = new StringBuilder();

sb2.append("注:第一联:税务机关xxx岗位留存。");

sb2.append("第二联:税务机关税款征收岗位留存。");

Paragraph pZ = new Paragraph(sb2.toString(), fontChina12);

pZ.setAlignment(Element.ALIGN_CENTER);

document.add(pZ);

// 5:关闭文档

document.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (DocumentException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

}

  制作效果

若需要下载或预览

 /**

* @param debtId 主表Id

* @param type 1:预览,2:下载

* @param scene 表单场景 1:撤销申请表

* @param response

* @throws IOException

*/

@ApiOperation(value = "预览或下载模板")

@GetMapping("/viewordownload")

@ResponseBody

public void download(@RequestParam(name = "debtId") Long debtId, @RequestParam(name = "type") Integer type, @RequestParam(name = "scene") Integer scene, HttpServletResponse response) throws IOException {

OutputStream out = null;

try {

TemplateVo templateVo = debtTemplateService.createPdf(debtId, scene);

if (Objects.isNull(templateVo)) {

throw new BusinessException("参数有误未生成pdf");

}

ByteArrayOutputStream baos = templateVo.getByteArrayOutputStream();

//设置请求返回类型

if (2 == type) {

response.setHeader("Content-Disposition", "attachment; filename=" + new String(templateVo.getName().getBytes(), StandardCharsets.ISO_8859_1));

}

response.setContentLength(baos.size());

out = response.getOutputStream();

baos.writeTo(out);

out.flush();

} catch (Exception e) {

e.printStackTrace();

} finally {

out.close();

}

}

  

 

 

 

 

直接上代码示例

 文章参考 https://www.cnblogs.com/ssslinppp/p/4976922.html

 

 

 




 

 

以上是 java生成pdf并预览或下载 的全部内容, 来源链接: utcz.com/z/390001.html

回到顶部