当前位置: 首页 > article >正文

java: spire.pdf.free 9.12.3 create pdf

可以用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 margin
            PdfUnitConvertor 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 page
            PdfPageBase page = doc.getPages().add(PdfPageSize.A4, margin);

            float y = 10;
            //Draw text using private font
            String fontFileName = "font/MHeiHK-Light.TTF";

            PdfTrueTypeFont trueTypeFont = new PdfTrueTypeFont(fontFileName, 14f);

            //Draw title
            PdfBrush 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();


http://www.kler.cn/a/405287.html

相关文章:

  • SQL注入靶场演练
  • 单向C to DP视频传输解决方案 | LDR6500
  • 趋势洞察|AI 能否带动裸金属 K8s 强势崛起?
  • qt之telnet连接目标设备在线调试功能
  • 从技术到产品:第三方美颜API助力实时直播平台的开发详解
  • VRT: 关于视频修复的模型
  • Android 应用添加系统签名权限介绍
  • reactflow 中 useOnViewportChange 模块作用
  • 异构网络,赋能企业的智能连接
  • Next.js 入门指南:深入构建服务器渲染的现代 Web 应用
  • SpringBoot(二十七)SpringBoot集成XRebel实现异常定位
  • VMware 中 虚拟机【Linux系统】固定 ip 访问
  • 【Docker】Docker介绍|部署|简单使用|镜像操作|容器操作|自动构建镜像
  • 通过vite+vue3+pinia从0到1搭建一个uniapp应用
  • Element UI 组件库详解【Vue】
  • Ubuntu查看磁盘IO情况常用方法
  • Shell脚本2 -- 永久环境变量与字符串操作
  • 以太坊交易处理全流程:数据采集、价格查询与问题解决
  • Ubuntu问题 -- 设置ubuntu的IP为静态IP (图形化界面设置) 小白友好
  • 测试实项中的偶必现难测bug之模糊匹配逻辑
  • 基于IPMI_SSH的服务器硬件监控指标解读
  • Leetcode 完全二叉树的节点个数
  • application/json 和 application/x-www-form-urlencoded 区别
  • php:使用socket函数创建WebSocket服务
  • Verilog HDL可综合与不可综合语句
  • OpenCV基本图像处理操作(五)——图像数据操作