实现将信息作为txt,pdf,图片的形式保存到电脑~
PrintableUtils作为输出信息的工具类:
package org.example;
import com.itextpdf.text.*;
import com.itextpdf.text.Font;
import com.itextpdf.text.pdf.PdfWriter;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;public class PrintableUtils{public static void saveAsTxtImage(Object object, String fileName) throws IOException {//将对象信息保存为image形式//Image(其全路径为java.awt.Image)是一个抽象类,BufferedImage是其实现类/*BufferedImage主要作用是将一幅图片加载到内存中* */BufferedImage image = new BufferedImage(500, 500, BufferedImage.TYPE_4BYTE_ABGR);/*Graphics类提供绘制各种基本的几何图形* Graphics2D与Graphics类相比能够处理二维图形*/// 获取图形对象Graphics2D graphics = image.createGraphics();// 修改画布背景为粉色graphics.setBackground(Color.PINK);//将图形区域内部的内容清除,使其变为透明或者指定的背景色graphics.clearRect(0, 0, image.getWidth(), image.getHeight());// 修改字体为黑色graphics.setColor(Color.BLACK);// 将object对象的信息写入graphics.drawString("Order ID: " + object.toString(), 50, 50);// ImageIO可以从本地文件中读取图片和写入图片,也可以从网络上读取图片写入本地文件中//将图片的信息保存到名字为filename的文件中,将其保存到磁盘ImageIO.write(image, "png", new File(fileName));}public static void saveAsPdf(Object object, String fileName) {//将对象信息保存为pdf形式try {Document document = new Document();//PdfWriter是iText库中的一个类,用于将文档内容写入到PDF文件中//getInstance()是PdfWriter类的静态方法,用于获取一个PdfWriter对象的实例PdfWriter.getInstance(document, new FileOutputStream(fileName));document.open();// 设置字体Font font = new Font(Font.FontFamily.HELVETICA, 12, Font.BOLD);// 创建段落对象Paragraph paragraph = new Paragraph(object.toString(), font);// 添加段落到文档中--add的参数类型必须为Elementdocument.add(paragraph);// 关闭文档document.close();} catch (DocumentException | FileNotFoundException e) {e.printStackTrace();}}public static void saveAsTxt(Object object, String fileName) {//将对象信息保存为txt形式try {// 创建文件输出流FileOutputStream fos = new FileOutputStream(fileName);// 将信息写入文件fos.write(object.toString().getBytes());// 关闭文件输出流fos.close();} catch (Exception e) {e.printStackTrace();}}
}
实体类:
package org.example;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@NoArgsConstructor
@AllArgsConstructor
public class Animal {private String name;private String type;
}
测试类:
package org.example;public class Test {public static void main(String[] args) {//我这里直接是默认输出到电脑当前项目的目录下,所以只传入了文件名Animal animal=new Animal("huahua","dog");PrintableUtils.saveAsPdf(animal,"animal.pdf");PrintableUtils.saveAsTxtImage(animal,"animal.png");PrintableUtils.saveAsTxt(animal,"animal.txt");}
}
相关的依赖:
<dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.11</version></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>itext-asian</artifactId><version>5.2.0</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.16.12</version></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13.1</version></dependency>
关于这个功能的实现,策略者模式也可以,但是对比了一下,策略者模式实现该功能会增加类的个数,但策略者模式满足开闭原则,后期如果有了新的打印方法,不用修改源代码,只需要增加新的即可,没有最好的技术只有最合适的技术,无论使用哪种方法还是需要根据实际开发进行选择!
相关文章:
实现将信息作为txt,pdf,图片的形式保存到电脑~
PrintableUtils作为输出信息的工具类: package org.example; import com.itextpdf.text.*; import com.itextpdf.text.Font; import com.itextpdf.text.pdf.PdfWriter; import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; im…...
服务器变矿机,该如何应对?
开始 恶意的挖矿程序会导致服务器cpu的异常占用,很让人讨厌。起初,我只是使用top命令显示出占用cpu不正常的进程,发现其中一个进程占用了百分之九十九点几,然后通过kill -9 <PID>命令干掉它。但总是过不了几天,…...
2018年认证杯SPSSPRO杯数学建模A题(第一阶段)海豚与沙丁鱼全过程文档及程序
2018年认证杯SPSSPRO杯数学建模 探究海豚猎捕时沙丁鱼群的躲避运动模型 A题 海豚与沙丁鱼 原题再现: 沙丁鱼以聚成大群的方式来对抗海豚的捕食。由于水下光线很暗,所以在距离较远时,海豚只能使用回声定位方法来判断鱼群的整体位置…...
【Webpack】预处理器 - 常用loader介绍
选用合适的loader来处理不同的资源和不同的功能,以下是一些主流的loader,但这并不是全部,因为每时每刻都可能有新的loader 发布到 npm上 babel-loader babe-loader 用来处理ES6并将其编译为ESS,它使我们能够在最新的工程中使用最…...
lodash 的 _.groupBy 函数是怎么实现的?
说在前面 🎈lodash的_.groupBy函数可以将一个数组按照给定的函数分组,返回一个新对象。该函数接收两个参数:第一个参数是要进行分组的数组,第二个参数是用于分组的函数。该函数会对数组中的每个元素进行处理,返回一个值…...
(2024,ViM,双向 SSM 骨干,序列建模)利用双向状态空间模型进行高效视觉表示学习
Vision Mamba: Efficient Visual Representation Learning with Bidirectional State Space Model 公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0.摘要 3. 方法 3.1. 基础知识 3.…...
docker容器和常用命令
1.什么是容器 容器是隔离的环境中运行的一个 进程 , 如果进程结束 , 容器就会停止. 细致: 容器的隔离环境 , 拥有自己的 ip 地址 , 系统文件 , 主机名 , 进程管理 , 相当于一个 mini的系统 2.容器 vs 虚拟机 3.Docker极速上手指南 #1.安装相关依赖. sudo yum install -y …...
【征服redis9】快速征服lua脚本
lua脚本,这个名字总让人想歪,不过老外发明名字,我们只能跟着叫了。这个脚本语言在redis里和Nginx里都有用,所以我们就来看一下。 目录 1 lua的介绍与说明 2 lua的基本语句体验 3.Lua的数据结构和高级特性 1 lua的介绍与说明 …...
vue3.2二次封装antd vue 中的Table组件,原有参数属性不变
vue3.2中的<script setup>语法 在项目中多处使用到表格组件,所以进行了一个基础的封装,主要是通过antd vue 中表格的slots配置项,通过配合插槽来进行封装自定义表格; 这次主要的一个功能是编辑之后变成input框 修改了之后变成完成发送请求重新渲染表格: 子…...
GBASE南大通用分享,如何修改可信上下文
在以下示例中,假设该可信上下文对象 appserver 存在并启用。以下的 ALTER TRUSTED CONTEXT 语句将 appserver 可信上下文对象的对象方式重置为 DISABLE。当其处于该方式时, appserver 可信上下文仍然存在,但是它不能用于存取数据库服务器。 …...
冻结Prompt微调LM: T5 PET (a)
T5 paper: 2019.10 Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer Task: Everything Prompt: 前缀式人工prompt Model: Encoder-Decoder Take Away: 加入前缀Prompt,所有NLP任务都可以转化为文本生成任务 T5论文的初衷如…...
119 BFS和DFS解二叉树的所有路径
问题描述:给定一个二叉树,返回所有从根节点到叶子节点的路径。说明:叶子节点是指没有子节点的节点。 DFS求解:定义一个全局的链表,用来装所有的结果,通过DFS遍历,一旦遍历到当前节点没有子节点…...
SpringBoot缓存相关注解的使用
CacheConfig:主要用于配置该类中会用到的一些共用的缓存配置 Cacheable:主要方法的返回值将被加入缓存。在查询时,会先从缓存中获取,若不存在才再发起对数据库的访问 CachePut:主要用于数据新增和修改操作 CacheEvi…...
SpiderFlow爬虫平台漏洞利用分析(CVE-2024-0195)
1. 漏洞介绍 SpiderFlow爬虫平台项目中spider-flow-web\src\main\java\org\spiderflow\controller\FunctionController.java文件的FunctionService.saveFunction函数调用了saveFunction函数,该调用了自定义函数validScript,该函数中用户能够控制 functi…...
计算机网络-甘晴void学习笔记
计算机网络 计科210X 甘晴void 202108010XXX 文章目录 计算机网络期中复习1计算机网络和因特网1.1 因特网1.2 网络边缘1.3 网络核心1.4 分组交换的时延/丢包和吞吐量1.5 协议层次与服务模型 2 应用层原理2.1 应用层协议原理2.2 Web和Http2.3 因特网中的电子邮件2.4 DNS&#x…...
vue中使用echarts实现省市地图绘制,根据数据在地图上显示柱状图信息,增加涟漪特效动画效果
文章目录 一、实现效果二、实现方法1、安装echarts插件2、获取省市json数据3、本例中data 数据4、吉林省地图的绘制5、柱状图样式6、设置柱状底部涟漪特效样式7、数据处理 三、示例代码已上传,去顶部可下载四、效果展示 一、实现效果 使用echarts实现省市地图绘制&…...
Android aar包集成与报错
Android Studio引用AAR的方式,分为gradle7.0之前与7.0之后 一、集成步骤 方法一: 1.将对应的xxx.aar包复制到项目的libs目录下(xxx代表需要引入的aar包名称) 2.然后在模块的build.gradle文件中配置implementation files(libs/lib…...
CentOS 7.9 安装图解
特特特别的说明 CentOS发行版已经不再适合应用于生产环境,客观条件不得不用的话,优选7.9版本,8.5版本次之,最次6.10版本(比如说Oracle 11GR2就建议在6版本上部署)! 引导和开始安装 选择倒计时结…...
Gitea Webhook报错 webhook.ALLOWED_HOST_LIST setting
Gitea Webhook报错 webhook.ALLOWED_HOST_LIST setting 登录到Gitea中,编辑app.ini vi /data/gitea/conf/app.ini [webhook] ALLOWED_HOST_LIST 你的IP地址示例 [webhook] ALLOWED_HOST_LIST 192.168.3.98...
SQL 最大连续合格次数 最大连胜记录次数 最大连败记录次数
有这样一个问题,工厂中要统计某个供应商送货检验的情况,依照其连续合格次数,决定是否免检,不使用游标或者循环,如何写这个sql。 此情景也可以用于统计连胜记录等 先要学习一下 窗函数LAG,指的是按分组和排…...
2025届毕业生推荐的十大降重复率神器横评
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 眼下,人工智能生成内容愈发普遍,各类AI检测工具便跟着出现了…...
Phi-4-mini-reasoning保姆级教程:14GB显存跑通128K长上下文推理
Phi-4-mini-reasoning保姆级教程:14GB显存跑通128K长上下文推理 1. 模型介绍 Phi-4-mini-reasoning是微软推出的3.8B参数轻量级开源模型,专为数学推理、逻辑推导和多步解题等强逻辑任务设计。这个模型主打"小参数、强推理、长上下文、低延迟"…...
Godot资源解压器godotdec:从游戏资源保护到开发分析的技术实践
Godot资源解压器godotdec:从游戏资源保护到开发分析的技术实践 【免费下载链接】godotdec An unpacker for Godot Engine package files (.pck) 项目地址: https://gitcode.com/gh_mirrors/go/godotdec 在游戏开发与资源管理领域,Godot引擎的.pck…...
ERNIE-4.5-0.3B-PT创意写作实战:用AI帮你生成有画面感的场景描述
ERNIE-4.5-0.3B-PT创意写作实战:用AI帮你生成有画面感的场景描述 1. 为什么需要AI辅助创意写作 在内容创作领域,最令人头疼的莫过于如何让文字"活起来"。传统写作往往面临三大痛点: 画面感不足:描述停留在表面&#…...
[火]图像数据增强 支持目标检测数据集图像增强 标注框信息同步增强 支持以下图像增强方式HSV-Hue 增强HSV-Saturation 增强 HSV-Value 增强图像旋转 (+/
[火]图像数据增强 支持目标检测数据集图像增强 标注框信息同步增强 支持以下图像增强方式 HSV-Hue 增强 HSV-Saturation 增强 HSV-Value 增强 图像旋转 (/- degrees) 图像平移 (/- 分数) 图像缩放 (/- 增益) 图像错切 (/- 分数) 图像透视 (/- 分数), 范围:0-0.00…...
从SEED-Labs实验到实战:手把手教你编写无零字节的x86 Shellcode(附完整代码)
从SEED-Labs实验到实战:手把手教你编写无零字节的x86 Shellcode(附完整代码) 当你第一次看到"Shellcode"这个词时,可能会联想到某种神秘的编程黑魔法。实际上,它是安全研究中最具实用价值的技能之一——一段…...
MIL图像库实战:从采集卡配置到Qt应用开发
1. 工业视觉项目开发全流程解析 第一次接触MIL图像库时,我被它强大的硬件抽象能力震撼到了。这个由Matrox开发的图像处理库,就像一位经验丰富的翻译官,把不同品牌采集卡的硬件差异统统屏蔽掉。想象一下,你手里有Basler、AVT、Dals…...
SeamlessM4T v2:跨语言实时对话的终极解决方案与技术实践
SeamlessM4T v2:跨语言实时对话的终极解决方案与技术实践 【免费下载链接】seamless-m4t-v2-large 项目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/seamless-m4t-v2-large 在全球化协作日益频繁的今天,跨语言沟通已成为技术团队、跨国…...
OpenClaw性能调优:Qwen3-4B-Thinking-2507-GPT-5-Codex-Distill-GGUF长文本处理技巧
OpenClaw性能调优:Qwen3-4B-Thinking-2507-GPT-5-Codex-Distill-GGUF长文本处理技巧 1. 为什么需要长文本优化 上周我尝试用OpenClaw处理一份200页的技术文档摘要任务时,遭遇了典型的"长文本困境"——模型要么漏掉关键段落,要么生…...
Pixiv -直连-手机电脑全平台可用,聚合多个资源一站搞定
功能特点 全平台支持:兼容 Android、iOS、Windows 和 macOS 系统,覆盖主流设备。直连访问:内置优化网络链路,绕过访问限制,无需额外配置或登录即可加载内容。无广告体验:去除官方客户端的广告干扰…...
