1.依赖

    <dependency><groupId>com.itextpdf</groupId><artifactId>itext-core</artifactId><version>8.0.4</version><type>pom</type></dependency>

2.代码

package org.example;import com.itextpdf.io.image.ImageData;
import com.itextpdf.io.image.ImageDataFactory;
import com.itextpdf.io.source.ByteArrayOutputStream;
import com.itextpdf.kernel.colors.DeviceRgb;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.Style;
import com.itextpdf.layout.borders.Border;
import com.itextpdf.layout.borders.SolidBorder;
import com.itextpdf.layout.element.*;
import com.itextpdf.layout.properties.BorderRadius;
import com.itextpdf.layout.properties.HorizontalAlignment;import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;public class App {public static void setCell1(Table table,int row,String name, float font,boolean color,boolean bold){Style style1 = new Style().setPaddingLeft(2).setPaddingTop(0);Paragraph gg = new Paragraph(name).addStyle(style1).setFontSize(font);if(bold){gg.setBold();}if(color){gg.setBold().setFontColor(new DeviceRgb(0, 0, 255));}table.addCell(new Cell(row,2).add(gg).setBorder(Border.NO_BORDER));}public static void main(String[] args) throws Exception{String name="a"+".pdf";PdfDocument pdfDocument = new PdfDocument(new PdfWriter(name));Document document = new Document(pdfDocument);float[] col = {133, 160,107};Table table = new Table(col).setHorizontalAlignment(HorizontalAlignment.CENTER).setWidth(350).setBorder(new SolidBorder(1)).setFont(PdfFontFactory.createFont("STSong-Light", "UniGB-UCS2-H"));// 设置左边图片头像ImageData imageData ;String url="C:\\Users\\Administrator\\Desktop\\1.PNG";try {imageData= ImageDataFactory.create(url);} catch (Exception e) {File file = new File(url);BufferedImage read = ImageIO.read(file);ByteArrayOutputStream baStream = new ByteArrayOutputStream();ImageIO.write(read, "jpg", baStream);imageData = ImageDataFactory.create(baStream.toByteArray());}Image image = new Image(imageData);Cell cell = new Cell(4, 1);cell.setPaddingLeft(10);image.setWidth(96);image.setHeight(96);image.setBorderRadius(new BorderRadius(5));cell.add(image);cell.setBorder(Border.NO_BORDER);table.addCell(cell);//String mName="材料名称:水泥";String mNo="识别编号:sbhlb1025";String mUnit="箱:包:袋(1:10:100)";String mType="材料分类:养护材料";setCell1(table,1,mName,16,false,true);setCell1(table,1,mNo,11,false,false);setCell1(table,1,mUnit,11,true,false);setCell1(table,1,mType,11,false,false);String spec="尺寸:L 4320mm * W 310mm * D 85mm * T 4mm";setCell1(table,1,spec,11,false,false);Image image1 = new Image(ImageDataFactory.create("C:\\Users\\Administrator\\Desktop\\1.PNG"));Cell cell1 = new Cell(1, 1);cell1.setHeight(65);cell1.setWidth(65);image1.setWidth(60);image1.setHeight(60);image1.setMarginRight(5);image1.setMarginBottom(5);image1.setHorizontalAlignment(HorizontalAlignment.RIGHT);cell1.add(image1);cell1.setBorder(Border.NO_BORDER);table.addCell(cell1);int total=4;// 把元素添加到文档里,每页展示三个卡片信息,超过三个另起一页for (int i = 0; i < total; i++) {document.add(table);document.add(new Paragraph(" "));if (i > 0 && (i % 3 == 2)) {document.add(new AreaBreak());}}//删除最后一页的空白页if(total%3==0){int lastPage = document.getPdfDocument().getNumberOfPages();document.getPdfDocument().removePage(lastPage);}document.close();}
}

3.效果

4.说明

代码中有两处使用图片路径,注意切换成对应的路径。

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

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

相关文章

macOS挂载iOS应用沙盒文件夹

背景 工具 libimobiledevice: linux&#xff0c;macOS等与ios设备通信是的工具 macFUSE 是 macOS 文件系统扩展的“引擎”&#xff0c;支持开发者创建各类虚拟文件系统。 iFUSE 是专为 iOS 设备设计的“连接器”&#xff0c;需依赖 macFUSE 实现功能。 若需访问 iPhone/iP…

嵌入式软件面经(四)Q:请说明在 ILP32、LP64 与 LLP64 三种数据模型下,常见基本类型及指针的 sizeof 值差异,并简要解释其原因

从事嵌入式开发深入理解 ILP32、LP64、LLP64 三种主流数据模型及其在平台上的实际表现&#xff0c;可以帮助我们避免诸如类型越界、结构错位、指针截断等致命错误。 一、何为数据模型&#xff1f;为何重要&#xff1f; 数据模型&#xff08;Data Model&#xff09;是指在某一编…

计算机组成原理与体系结构-实验二 ALU(Proteus 8.15)

目录 一、实验目的 二、实验内容 三、实验器件 四、实验原理 五、实验步骤 六、思考题 一、实验目的 1、了解算术逻辑运算器&#xff08;74LS181&#xff09;的组成和功能。 2、掌握基本算术和逻辑运算的实现方法。 二、实验内容 设计算数逻辑运算器系统的通路&#x…

ubuntu下免sudo执行docker

前言 在ubuntu中&#xff0c;默认是无法使用root账号的&#xff0c;安装完docker后&#xff0c;不可避免的要使用sudo来执行docker命令&#xff0c;这就让运维变得很麻烦 避免sudo # 添加当前用户到 docker 组 sudo usermod -aG docker $USER# 刷新组权限 newgrp docker# 验…

微处理原理与应用篇---STM32寄存器控制GPIO

在 ARM 架构下使用 C 语言控制 32 位寄存器实现 GPIO 操作&#xff0c;需结合芯片手册进行寄存器映射和位操作。以下以 STM32F103&#xff08;Cortex-M3 内核&#xff09;为例&#xff0c;详细介绍实现方法&#xff1a; 一、STM32F103 GPIO 控制&#xff08;标准外设库&#x…

基于OPUS-MT模型的中译英程序实现

这是我的kaggle账号名“fuliuqin” 代码参考如下&#xff1a; nlp.paperflq | KaggleExplore and run machine learning code with Kaggle Notebooks | Using data from [Private Datasource]https://www.kaggle.com/code/fuliuqin/nlp-paperflq 目录 绪论 研究背景与意义 研究…

炸鸡派-定时器基础例程

定时器简介 基本定时器&#xff0c;计数中断、产生DMA请求。 通用定时器&#xff0c;PWM输出、输入捕获、脉冲计数。 高级定时器&#xff0c;输出比较、互补输出带死区控制、PWM输入。 中心对齐的计数模式可以生成对称的PWM波形信号。计数可以先增后减。 这种模式下&#xff…

利用不坑盒子的Copilot,快速排值班表

马上放暑假了&#xff0c;有多少人拼命排值班表的&#xff1f; 今天用我亲身制作值班表的一些Excel操作&#xff0c;给大家分享一些在Excel中的小技巧&#xff0c;需要的及时收藏&#xff0c;有一天用得上~ 值班表全貌 先给大家看看我制作的值班表的样子&#xff0c;应该大家…

Linux 面试知识(附常见命令)

目录结构与重要文件 Linux 中一切皆文件&#xff0c;掌握目录结构有助于理解系统管理与配置。 目录说明/根目录&#xff0c;所有文件起点/bin基本命令的可执行文件&#xff0c;如 ls, cp/sbin系统管理员用的命令&#xff0c;如 shutdown/etc配置文件目录&#xff0c;如 /etc/…

Lua 安装使用教程

一、Lua 简介 Lua 是一门轻量级、高性能的脚本语言&#xff0c;具有简洁语法、嵌入性强、可扩展性高等特点。广泛应用于游戏开发&#xff08;如 Roblox、World of Warcraft&#xff09;、嵌入式开发、配置脚本、Nginx 扩展&#xff08;OpenResty&#xff09;等领域。 二、Lua …

SPAD像素概念理解

SPAD(Single Photon Avalanche Diode,单光子雪崩二极管)像素是一种能够检测单个光子的超灵敏光电探测器,其核心原理是通过雪崩倍增效应将单个光子产生的微弱电流信号放大到可观测水平。 一、工作原理 雪崩倍增效应 当SPAD反向偏压超过其击穿电压时,进入盖革模式(Geiger M…

SSSSS

#include <iostream> void LineOf(bool** n1, bool** n2, int column, int raw, int* result) { for (int i 0; i < column; i) { int d -1, n -1; // 反向遍历&#xff0c;找最后一个 true for (int j raw - 1; j > 0; j--) { …

【AI智能体】社交娱乐-智能助教

智能助教是扣子官方提供的教育类智能体模板。助教模板分为学习陪伴和作业批改两种场景&#xff0c;分别适用于学生角色和教师角色&#xff0c;你可以根据需求选择对应的模板&#xff0c;并将其改造为其他学科或其他教育阶段的智能助教。 模板介绍 在智能学伴/助教的落地过程中…

自动化保护 AWS ECS Fargate 服务:使用 Prisma Cloud 实现容器安全

引言 在云原生时代,容器化技术已成为现代应用部署的标准方式。AWS ECS Fargate 作为一种无服务器容器服务,让开发者能够轻松运行容器化应用而无需管理底层基础设施。然而,随着容器技术的普及,安全问题也日益突出。本文将介绍如何通过 Python 脚本自动化地为 ECS Fargate 服…

Kafka Controller 元数据解析与故障恢复实战指南

#作者&#xff1a;张桐瑞 文章目录 1 生产案例&#xff1a;Controller 选举在故障恢复中的关键作用1.1 问题背景1.2 核心操作原理&#xff1a; 2 Controller 元数据全景&#xff1a;从 ZooKeeper 到内存的数据镜像2.1元数据核心载体&#xff1a;ControllerContext 类2.2核心元…

《寻北技术的全面剖析与应用前景研究报告》

一、引言 1.1 研究背景与意义 寻北&#xff0c;作为确定地理北极方向的关键技术&#xff0c;在众多领域中扮演着举足轻重的角色。在军事领域&#xff0c;精确的寻北对于武器系统的瞄准、导弹的精确制导以及部队的战略部署都至关重要。例如&#xff0c;火炮在发射前需要精确寻…

深入比较 Gin 与 Beego:Go Web 框架的两大选择

引言 在 Go 语言生态系统中&#xff0c;Gin 和 Beego 是两个非常受欢迎的 Web 框架。它们各自有着不同的设计理念和目标用户群体。本文将对这两个框架进行深入比较&#xff0c;并帮助你理解它们之间的区别&#xff0c;以便根据项目需求做出合适的选择。 一、Gin 概述 Gin是一…

全新大模型开源,腾讯(int4能打DeepSeek) Vs 谷歌(2GB运行多模态)

大家好&#xff0c;我是 Ai 学习的老章 最近除了阿里 Qwen3 模型更新了图片生成和处理能力&#xff0c;大家都可以玩转吉卜力风格 还有几个最近发布的大模型值得关注 1 是腾讯开源了 80B 混元 A13B 模型&#xff0c;亮点是精度无损的 int4 很能打 2 是谷歌开源的小参数 Gemm…

向量数据库milvus中文全文检索取不到数据的处理办法

​检查中文分词配置​ Milvus 2.5 支持原生中文全文检索&#xff0c;但需显式配置中文分词器&#xff1a; 创建集合时指定分词器类型为 chinese python schema.add_field(field_name"text", datatypeDataType.VARCHAR, max_length65535, enable_analyzerTrue, an…

Stable Diffusion 项目实战落地:从0到1 掌握ControlNet 第一篇 打造光影字形的创意秘技

大家好呀,欢迎来到 AI造字工坊! 在这篇文章中,我们将带领你走进一个神奇的世界——ControlNet。你可能听说过它,但可能还没摸清它的深奥之处。 今天,我们就来揭开它神秘的面纱,轻松带你玩转字形设计! 话说回来,相信大家对图片生成、提示词、放大操作、抽卡这些基本操…