可以用windows 系统中文字体,也可以从文件夹的字体文件
/*** encoding: utf-8* 版权所有 2024 ©涂聚文有限公司* 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎* 描述:* # Author : geovindu,Geovin Du 涂聚文.* # IDE : IntelliJ IDEA 2023.1 Java 17* # Datetime : 2024 - 2024/1/11 - 20:32* # User : geovindu* # Product : IntelliJ IDEA* # Project : EssentialAlgorithms* # File : simpleTable.java* # explain : 学习 类**/package BLL;import com.spire.pdf.*;
import com.spire.pdf.graphics.*;
import com.spire.pdf.tables.*;
import java.awt.*;
import java.awt.geom.Point2D;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.*;public class SimpleTable {/*** 生成表格示例*/public void createtable(){try {String fontFile2 = "font/MHeiHK-Light.TTF";String path = "C:/WINDOWS/Fonts/simhei.ttf";//windows里的字体资源路径PdfDocument doc = new PdfDocument();//Set marginPdfUnitConvertor unitCvtr = new PdfUnitConvertor();PdfMargins margin = new PdfMargins();margin.setTop(unitCvtr.convertUnits(2.54f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point));margin.setBottom(margin.getTop());margin.setLeft(unitCvtr.convertUnits(3.17f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point));margin.setRight(margin.getLeft());// Create one pagePdfPageBase page = doc.getPages().add(PdfPageSize.A4, margin);float y = 10;//Draw text using private fontString fontFileName = "font/MHeiHK-Light.TTF";PdfTrueTypeFont trueTypeFont = new PdfTrueTypeFont(fontFileName, 14f);//Draw titlePdfBrush brush1 = PdfBrushes.getBlack();PdfTrueTypeFont font1 = new PdfTrueTypeFont(trueTypeFont,12f);PdfStringFormat format1 = new PdfStringFormat(PdfTextAlignment.Center);page.getCanvas().drawString("国家列表", trueTypeFont, brush1, page.getCanvas().getClientSize().getWidth() / 2, y, format1);y = y + (float) font1.measureString("国家列表", format1).getHeight();y = y + 5;String[] data = {"国家;首都;洲域;面积;人口", "Argentina;Buenos Aires;South America;2777815;32300003", "Bolivia;La Paz;South America;1098575;7300000", "Brazil;Brasilia;South America;8511196;150400000", "Canada;Ottawa;North America;9976147;26500000", "Chile;Santiago;South America;756943;13200000", "Colombia;Bagota;South America;1138907;33000000", "Cuba;Havana;North America;114524;10600000", "Ecuador;Quito;South America;455502;10600000", "El Salvador;San Salvador;North America;20865;5300000", "Guyana;Georgetown;South America;214969;800000", "Jamaica;Kingston;North America;11424;2500000", "Mexico;Mexico City;North America;1967180;88600000", "Nicaragua;Managua;North America;139000;3900000", "Paraguay;Asuncion;South America;406576;4660000", "Peru;Lima;South America;1285215;21600000", "United States of America;Washington;North America;9363130;249200000", "Uruguay;Montevideo;South America;176140;3002000", "Venezuela;Caracas;South America;912047;19700000"};String[][] dataSource = new String[data.length][];for (int i = 0; i < data.length; i++) {dataSource[i] = data[i].split("[;]", -1);}PdfTable table = new PdfTable();//设置表头字体和样式PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("宋体",Font.PLAIN, 12));table.getStyle().getHeaderStyle().setFont(font);table.getStyle().getHeaderStyle().setBackgroundBrush(PdfBrushes.getCadetBlue());PdfTrueTypeFont fontBody = new PdfTrueTypeFont(new Font("宋体", Font.PLAIN,10));//设置偶数行字体table.getStyle().getDefaultStyle().setFont(fontBody);//设置奇数行字体table.getStyle().getAlternateStyle().setFont(fontBody);table.getStyle().setCellPadding(2);table.getStyle().setHeaderSource(PdfHeaderSource.Rows);table.getStyle().setHeaderRowCount(1);table.getStyle().setShowHeader(true);table.setDataSource(dataSource);PdfLayoutResult result = table.draw(page, new Point2D.Float(0, y));y = y + (float) result.getBounds().getHeight() + 5;PdfBrush brush2 = PdfBrushes.getGray();PdfTrueTypeFont font2 = new PdfTrueTypeFont(trueTypeFont,12f);page.getCanvas().drawString(String.format("国家* %1$s个:.", data.length - 1), font2, brush2, 5, y);//Save pdf file.doc.saveToFile("simpleTable.pdf");}catch (Exception exception){System.out.println(exception.toString());}}}
调用:
//生成PDF文檔SimpleTable simpleTable=new SimpleTable();simpleTable.createtable();