• java生成pdf


    1.pdf预览

    2.maven

    1. com.itextpdf
    2. itextpdf
    3. 5.5.9
    4. com.itextpdf
    5. itext-asian
    6. 5.2.0

    3.代码

    1. package mis.shared.file;
    2. import com.bestvike.linq.Linq;
    3. import com.itextpdf.text.*;
    4. import com.itextpdf.text.pdf.BaseFont;
    5. import com.itextpdf.text.pdf.PdfPCell;
    6. import com.itextpdf.text.pdf.PdfPTable;
    7. import com.itextpdf.text.pdf.PdfWriter;
    8. import com.itextpdf.text.pdf.draw.LineSeparator;
    9. import java.io.FileOutputStream;
    10. /**
    11. * pdf工具类
    12. */
    13. public class PdfUtil {
    14. public static void main(String[] args) throws Exception {
    15. Demo();
    16. }
    17. public static void Demo() throws Exception {
    18. Document document = new Document(PageSize.A4, 50, 50, 30, 30); // 指定页面大小为A4,且自定义页边距(marginLeft、marginRight、marginTop、marginBottom)
    19. PdfWriter.getInstance(document, new FileOutputStream("E:\\develop\\tmp\\test" + System.currentTimeMillis() + ".pdf"));
    20. document.open();
    21. BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
    22. Font keyfont = new Font(bfChinese, 10, Font.BOLD);
    23. Font textfont = new Font(bfChinese, 10, Font.NORMAL);
    24. Paragraph wrap = new Paragraph("\r\n", textfont);
    25. // 段落
    26. Paragraph paragraph = new Paragraph("知之愈明,则行之愈笃;行之愈笃,则知之益明。——朱熹(宋)", textfont);
    27. // 直线
    28. Paragraph line = new Paragraph();
    29. line.add(new Chunk(new LineSeparator()));
    30. // 超链接
    31. Anchor link = new Anchor("点击跳转到百度", textfont);
    32. link.setReference("www.baidu.com");
    33. // 添加图片
    34. Image image = Image.getInstance("E:\\develop\\tmp\\install.png");
    35. image.setAlignment(Image.ALIGN_CENTER);
    36. image.scalePercent(40); //依照比例缩放
    37. // 表格
    38. PdfPTable table = createTable(new float[]{80, 80, 80, 80, 80, 80});
    39. table.addCell(createCell("早上9:00", keyfont, Element.ALIGN_CENTER));
    40. table.addCell(createCell("中午11:00", keyfont, Element.ALIGN_CENTER));
    41. table.addCell(createCell("中午13:00", keyfont, Element.ALIGN_CENTER));
    42. table.addCell(createCell("下午15:00", keyfont, Element.ALIGN_CENTER));
    43. table.addCell(createCell("下午17:00", keyfont, Element.ALIGN_CENTER));
    44. table.addCell(createCell("晚上19:00", keyfont, Element.ALIGN_CENTER));
    45. for (int i = 0; i < 5; i++) {
    46. table.addCell(createCell("起床", textfont));
    47. table.addCell(createCell("吃午饭", textfont));
    48. table.addCell(createCell("午休", textfont));
    49. table.addCell(createCell("下午茶", textfont));
    50. table.addCell(createCell("回家", textfont));
    51. table.addCell(createCell("吃晚饭", textfont));
    52. }
    53. //最后一行
    54. table.addCell(createCell("总计", textfont, Element.ALIGN_CENTER));
    55. // 处理最后一行边框合并
    56. PdfPCell cell = new PdfPCell();
    57. cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
    58. cell.setHorizontalAlignment(Element.ALIGN_CENTER);
    59. cell.setBorderWidthTop(0);
    60. cell.setBorderWidthLeft(0);
    61. cell.setColspan(5);
    62. cell.setPhrase(new Phrase("5天", textfont));
    63. table.addCell(cell);
    64. // 开始从内存写入到磁盘 pdf文件中
    65. document.add(paragraph);
    66. document.add(line);
    67. document.add(link);
    68. document.add(wrap);
    69. document.add(table);
    70. document.add(image);
    71. document.close();
    72. }
    73. public static PdfPTable createTable(float[] widths) {
    74. PdfPTable table = new PdfPTable(widths);
    75. try {
    76. table.setTotalWidth(Linq.of(widths).sumFloat());
    77. table.setLockedWidth(true);
    78. table.setHorizontalAlignment(Element.ALIGN_CENTER);
    79. table.getDefaultCell().setBorder(1);
    80. } catch (Exception e) {
    81. e.printStackTrace();
    82. }
    83. return table;
    84. }
    85. public static PdfPCell createCell(String value, Font font) {
    86. PdfPCell cell = new PdfPCell();
    87. cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
    88. cell.setHorizontalAlignment(Element.ALIGN_CENTER);
    89. cell.setPhrase(new Phrase(value, font));
    90. return cell;
    91. }
    92. public static PdfPCell createCell(String value, Font font, int align) {
    93. PdfPCell cell = new PdfPCell();
    94. cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
    95. cell.setHorizontalAlignment(align);
    96. cell.setPhrase(new Phrase(value, font));
    97. return cell;
    98. }
    99. }

  • 相关阅读:
    蓝皮书首发!车载毫米波雷达赛道进入「大变革周期」,技术/产品/市场并行升级
    复盘:经典的HR面试问题,这些问题可以挖掘你个人的素质,看看你是否合适合我们部门
    OpenHarmony其他工具类—lua
    ai智能写作软件哪个好-AI智能写作软件的类型标准
    德国大陆博世 ars 548 4D 毫米波雷达 window 系统或者 Ubuntu 系统通讯以及数据解析和显示程序
    jmeter5.4.1源码编译(IDEA)问题解决
    dom-to-image库是如何将html转换成图片的
    重磅博文:可以找我咨询问题了
    day012--mysql中的聚合函数
    未来已来:探索5G技术如何改变我们的生活和工作
  • 原文地址:https://blog.csdn.net/leadseczgw01/article/details/136150778