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

实现将信息作为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作为输出信息的工具类&#xff1a; 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的异常占用&#xff0c;很让人讨厌。起初&#xff0c;我只是使用top命令显示出占用cpu不正常的进程&#xff0c;发现其中一个进程占用了百分之九十九点几&#xff0c;然后通过kill -9 <PID>命令干掉它。但总是过不了几天&#xff0c;…...

2018年认证杯SPSSPRO杯数学建模A题(第一阶段)海豚与沙丁鱼全过程文档及程序

2018年认证杯SPSSPRO杯数学建模 探究海豚猎捕时沙丁鱼群的躲避运动模型 A题 海豚与沙丁鱼 原题再现&#xff1a; 沙丁鱼以聚成大群的方式来对抗海豚的捕食。由于水下光线很暗&#xff0c;所以在距离较远时&#xff0c;海豚只能使用回声定位方法来判断鱼群的整体位置&#xf…...

【Webpack】预处理器 - 常用loader介绍

选用合适的loader来处理不同的资源和不同的功能&#xff0c;以下是一些主流的loader&#xff0c;但这并不是全部&#xff0c;因为每时每刻都可能有新的loader 发布到 npm上 babel-loader babe-loader 用来处理ES6并将其编译为ESS&#xff0c;它使我们能够在最新的工程中使用最…...

lodash 的 _.groupBy 函数是怎么实现的?

说在前面 &#x1f388;lodash的_.groupBy函数可以将一个数组按照给定的函数分组&#xff0c;返回一个新对象。该函数接收两个参数&#xff1a;第一个参数是要进行分组的数组&#xff0c;第二个参数是用于分组的函数。该函数会对数组中的每个元素进行处理&#xff0c;返回一个值…...

(2024,ViM,双向 SSM 骨干,序列建模)利用双向状态空间模型进行高效视觉表示学习

Vision Mamba: Efficient Visual Representation Learning with Bidirectional State Space Model 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0.摘要 3. 方法 3.1. 基础知识 3.…...

docker容器和常用命令

1.什么是容器 容器是隔离的环境中运行的一个 进程 , 如果进程结束 , 容器就会停止. 细致: 容器的隔离环境 , 拥有自己的 ip 地址 , 系统文件 , 主机名 , 进程管理 , 相当于一个 mini的系统 2.容器 vs 虚拟机 3.Docker极速上手指南 #1.安装相关依赖. sudo yum install -y …...

【征服redis9】快速征服lua脚本

lua脚本&#xff0c;这个名字总让人想歪&#xff0c;不过老外发明名字&#xff0c;我们只能跟着叫了。这个脚本语言在redis里和Nginx里都有用&#xff0c;所以我们就来看一下。 目录 1 lua的介绍与说明 2 lua的基本语句体验 3.Lua的数据结构和高级特性 1 lua的介绍与说明 …...

vue3.2二次封装antd vue 中的Table组件,原有参数属性不变

vue3.2中的<script setup>语法 在项目中多处使用到表格组件,所以进行了一个基础的封装,主要是通过antd vue 中表格的slots配置项,通过配合插槽来进行封装自定义表格; 这次主要的一个功能是编辑之后变成input框 修改了之后变成完成发送请求重新渲染表格&#xff1a; 子…...

GBASE南大通用分享,如何修改可信上下文

在以下示例中&#xff0c;假设该可信上下文对象 appserver 存在并启用。以下的 ALTER TRUSTED CONTEXT 语句将 appserver 可信上下文对象的对象方式重置为 DISABLE。当其处于该方式时&#xff0c; appserver 可信上下文仍然存在&#xff0c;但是它不能用于存取数据库服务器。 …...

冻结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&#xff0c;所有NLP任务都可以转化为文本生成任务 T5论文的初衷如…...

119 BFS和DFS解二叉树的所有路径

问题描述&#xff1a;给定一个二叉树&#xff0c;返回所有从根节点到叶子节点的路径。说明&#xff1a;叶子节点是指没有子节点的节点。 DFS求解&#xff1a;定义一个全局的链表&#xff0c;用来装所有的结果&#xff0c;通过DFS遍历&#xff0c;一旦遍历到当前节点没有子节点…...

SpringBoot缓存相关注解的使用

CacheConfig&#xff1a;主要用于配置该类中会用到的一些共用的缓存配置 Cacheable&#xff1a;主要方法的返回值将被加入缓存。在查询时&#xff0c;会先从缓存中获取&#xff0c;若不存在才再发起对数据库的访问 CachePut&#xff1a;主要用于数据新增和修改操作 CacheEvi…...

SpiderFlow爬虫平台漏洞利用分析(CVE-2024-0195)

1. 漏洞介绍 SpiderFlow爬虫平台项目中spider-flow-web\src\main\java\org\spiderflow\controller\FunctionController.java文件的FunctionService.saveFunction函数调用了saveFunction函数&#xff0c;该调用了自定义函数validScript&#xff0c;该函数中用户能够控制 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、数据处理 三、示例代码已上传&#xff0c;去顶部可下载四、效果展示 一、实现效果 使用echarts实现省市地图绘制&…...

Android aar包集成与报错

Android Studio引用AAR的方式&#xff0c;分为gradle7.0之前与7.0之后 一、集成步骤 方法一&#xff1a; 1.将对应的xxx.aar包复制到项目的libs目录下&#xff08;xxx代表需要引入的aar包名称&#xff09; 2.然后在模块的build.gradle文件中配置implementation files(libs/lib…...

CentOS 7.9 安装图解

特特特别的说明 CentOS发行版已经不再适合应用于生产环境&#xff0c;客观条件不得不用的话&#xff0c;优选7.9版本&#xff0c;8.5版本次之&#xff0c;最次6.10版本&#xff08;比如说Oracle 11GR2就建议在6版本上部署&#xff09;&#xff01; 引导和开始安装 选择倒计时结…...

Gitea Webhook报错 webhook.ALLOWED_HOST_LIST setting

Gitea Webhook报错 webhook.ALLOWED_HOST_LIST setting 登录到Gitea中&#xff0c;编辑app.ini vi /data/gitea/conf/app.ini [webhook] ALLOWED_HOST_LIST 你的IP地址示例 [webhook] ALLOWED_HOST_LIST 192.168.3.98...

SQL 最大连续合格次数 最大连胜记录次数 最大连败记录次数

有这样一个问题&#xff0c;工厂中要统计某个供应商送货检验的情况&#xff0c;依照其连续合格次数&#xff0c;决定是否免检&#xff0c;不使用游标或者循环&#xff0c;如何写这个sql。 此情景也可以用于统计连胜记录等 先要学习一下 窗函数LAG&#xff0c;指的是按分组和排…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; 思路 使用两个栈&#xff1a;一个存储重复次数&#xff0c;一个存储字符串 遍历输入字符串&#xff1a; 数字处理&#xff1a;遇到数字时&#xff0c;累积计算重复次数左括号处理&#xff1a;保存当前状态&a…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...