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 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();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/61781.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【TEST】Apache JMeter + Influxdb + Grafana

介绍 使用Jmeter发起测试&#xff0c;测试结果存入Influxdb&#xff0c;Grafana展示你的测试结果。 环境 windows 10docker desktopJDK17 安装 Apache JMeter 访问官网&#xff08;Apache JMeter - Apache JMeter™&#xff09;下载JMeter&#xff08;目前最新版本5.6.3&a…

基于python的长津湖评论数据分析与可视化,使用是svm情感分析建模

引言 研究背景及意义 上世纪初开始&#xff0c;中国电影就以自己独有的姿态登上了世界电影史的舞台。中国电影作为国家文化和思想观念的反映与延伸&#xff0c;能够增强文化自信&#xff0c;在文化输出方面有着极其重要的作用1[1]。 改革开放以来&#xff0c;随着生产力的提高…

表格数据处理中大语言模型的微调优化策略研究

论文地址 Research on Fine-Tuning Optimization Strategies for Large Language Models in Tabular Data Processing 论文主要内容 这篇论文的主要内容是研究大型语言模型&#xff08;LLMs&#xff09;在处理表格数据时的微调优化策略。具体来说&#xff0c;论文探讨了以下…

Linux入门系列--文件与目录

一、介绍 在Linux中&#xff0c;有着一句话&#xff0c;叫做&#xff1a;一切皆文件。也就是任何东西都是以文件的形式存储的。 目录结构 bin&#xff1a;全程binary&#xff0c;含义是二进制。该目录中存储的都是一些二进制文件。我们学过C/C&#xff0c;其实也都知道机器能…

【创建型设计模式】工厂模式

【创建型设计模式】工厂模式 创建型设计模式第二期&#xff01;本期介绍简单工厂模式和工厂方法模式。 简单工厂模式 简单工厂模式&#xff08;又叫作静态工厂方法模式&#xff09;&#xff0c;其属于创建型设计模式&#xff0c;简单工厂模式不属于设计模式中的 23 种经典模…

RabbitMQ和RocketMQ相关面试题

RabbitMQ和RocketMQ面试题 RabbitMQ1.RabbitMQ各部分角色2.如何确保RabbitMQ消息的可靠性&#xff1f;3.什么样的消息会成为死信&#xff1f;4.死信交换机的使用场景是什么&#xff1f;5.TTL6.延迟队列7.消息堆积问题8.MQ集群 RocketMQ1.RocketMQ各部分角色2.RocketMQ如何保证高…

基于LLama_factory的Qwen2.5大模型的微调笔记

Qwen2.5大模型微调记录 LLama-facrotyQwen2.5 模型下载。huggingface 下载方式Modelscope 下载方式 数据集准备模型微调模型训练模型验证及推理模型导出 部署推理vllm 推理Sglang 推理 LLama-facroty 根据git上步骤安装即可&#xff0c;要求的软硬件都装上。 llama-factory运行…

Linux系统Docker部署开源在线协作笔记Trilium Notes与远程访问详细教程

目录 ⛳️推荐 前言 1. 安装docker与docker-compose 2. 启动容器运行镜像 3. 本地访问测试 4.安装内网穿透 5. 创建公网地址 6. 创建固定公网地址 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下…

Spark——安装步骤详细教程

1、安装步骤 1、上传 cd /opt/modules 2、解压 tar -zxf spark-3.1.2-bin-hadoop3.2.tgz -C /opt/installs 3、重命名 cd /opt/installs mv spark-3.1.2-bin-hadoop3.2 spark-local 4、创建软链接 ln -s spark-local spark 5、配置环境变量&#xff1a; vi /etc/prof…

Vue第一篇:组件模板总结

前言 本文希望读者有一定的Vue开发经验&#xff0c;样例采用vue中的单文件组件&#xff0c;也是我的个人笔记&#xff0c;欢迎一起进步 必须有根元素 这是一个最简单的vue单文件组件&#xff0c;<template></template>被称为模板&#xff0c;模板中必须有一个根元素…

MacOS通过X11转发远程运行virt-manager进行虚机分配

今天需要通过本地macbook机器连接远程物理机&#xff0c;执行虚机分配&#xff0c;现有文档仅提供window环境安装&#xff0c;如下整理Mac环境下的安装步骤 操作篇 前提条件 支持x11转发的terminal&#xff0c;我本地使用iTerm2&#xff1b;本地安装XQuartz&#xff0c;作为…

flowable流程图详细绘制教程

文章目录 前言一、flowable是什么&#xff1f;回答下之前的问题 二、flowable-modeler使用1. 使用步骤2.开始绘制弄一个请假的流程 三 加载该流程总结 前言 flowable有些晦涩难懂的东西&#xff1a; 我最开始接触的时候,还是用的activity,当时觉得好复杂,那么这次经过我自己在…

C/C++链接数据库(MySQL)(超级详细)

目录 1.进入MySQL后&#xff0c;用mysql数据库 1.1查看一看user表 ​编辑1.2从user拿出来User和Host 1.3创建一个用户表&#xff0c;只允许本地&#xff08;想要远端链接就把localhost改成%&#xff09; 1.4再查一下用户就有了&#xff08;connector&#xff09; 1.5测试…

Jmeter中的定时器

4&#xff09;定时器 1--固定定时器 功能特点 固定延迟&#xff1a;在每个请求之间添加固定的延迟时间。精确控制&#xff1a;可以精确控制请求的发送频率。简单易用&#xff1a;配置简单&#xff0c;易于理解和使用。 配置步骤 添加固定定时器 右键点击需要添加定时器的请求…

msvcr100.dll丢失的解决方法,六种解决msvcr100.dll丢失的方法

在使用Windows操作系统的过程中&#xff0c;用户可能会遇到各种各样的问题&#xff0c;其中之一就是“msvcr100.dll丢失”的错误提示。这个问题通常出现在尝试运行某些软件或游戏时&#xff0c;由于缺少这个重要的动态链接库文件&#xff0c;导致程序无法正常启动。本文将详细介…

排序(Java数据结构)

1. 排序的概念及引用 1.1 排序的概念 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。(所有的排序都是默认从小到大排序) 稳定性&#xff1a;假定在待排序的记录序列中&#xff…

VH6501国产替代同星TH7011干扰仪?

文章目录 同星TH7011干扰仪VH6501有使用过TH7011的么,可以在评论区讨论一下~ 同星TH7011干扰仪 干货分享 | 一文详解同星CAN总线干扰仪的使用方法 VH6501

蓝桥杯每日真题 - 第23天

题目&#xff1a;&#xff08;直线&#xff09; 题目描述&#xff08;12届 C&C B组C题&#xff09; 解题思路&#xff1a; 题目理解: 在平面直角坐标系中&#xff0c;从给定的点集中确定唯一的直线。 两点确定一条直线&#xff0c;判断两条直线是否相同&#xff0c;可通过…

目录遍历漏洞-CVE-2021-41773

目录 简介 原理 例子 Apache路径穿越漏洞 环境搭建 漏洞原理 漏洞利用 简介 目录遍历漏洞&#xff08;也称为路径遍历漏洞&#xff09;是一种由于Web服务器或Web应用程序对用户输入的文件名称的安全性验证不足而导致的安全漏洞。 原理 目录遍历漏洞允许攻击者在未授权…

.NET9 - 新功能体验(三)

书接上回&#xff0c;我们继续来聊聊.NET9和C#13带来的新变化。 01、Linq新方法 CountBy 和 AggregateBy 引入了新的方法 CountBy 和 AggregateBy后&#xff0c;可以在不经过GroupBy 分配中间分组的情况下快速完成复杂的聚合操作&#xff0c;同时方法命名也非常直观&#xff0…