实现将信息作为txt,pdf,图片的形式保存到电脑~

简介: 实现将信息作为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的参数类型必须为Element
            document.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>

关于这个功能的实现,策略者模式也可以,但是对比了一下,策略者模式实现该功能会增加类的个数,但策略者模式满足开闭原则,后期如果有了新的打印方法,不用修改源代码,只需要增加新的即可,没有最好的技术只有最合适的技术,无论使用哪种方法还是需要根据实际开发进行选择!

相关文章
|
1月前
|
文字识别 BI
【工具教程】批量PDF和图片OCR识别指定区域文字自动改图片名字,多个区域一次性批量识别改名批量重命名
本内容介绍了一款用于企业档案、医院病历及办公文件管理的图片和PDF文字识别工具。通过框选识别区域,软件可批量提取关键信息,实现文件重命名或导出为表格,极大提升管理效率。支持图片与PDF两种模式,操作简单,适用于合同、病历、报告等场景。提供详细步骤指导,包含区域设置、文件导入、批量处理及结果校验等功能。
162 8
|
2月前
|
人工智能 文字识别 自然语言处理
1.6K star!这个开源文本提取神器,5分钟搞定PDF/图片/Office文档!
Kreuzberg 是一个基于 Python 的文本提取库,支持从 PDF、图像、Office 文档等 20+ 格式中提取文本内容。采用 MIT 开源协议,具备本地处理、异步架构、智能 OCR 等特性,特别适合需要隐私保护的文档处理场景。
|
3月前
|
文字识别 BI
【图片型PDF】批量识别扫描件PDF指定区域局部位置内容,将识别内容导出Excel表格或批量改名文件,基于阿里云OCR对图片型PDF识别改名案例实现
在医疗和政务等领域,图片型PDF文件(如病历、报告、公文扫描件)的处理需求广泛。通过OCR技术识别这些文件中的文字信息,提取关键内容并保存为表格,极大提高了信息管理和利用效率。本文介绍一款工具——咕嘎批量OCR系统,帮助用户快速处理图片型PDF文件,支持区域识别、内容提取、导出表格及批量改名等功能。下载工具后,按步骤选择处理模式、进行区域采样、批量处理文件,几分钟内即可高效完成数百个文件的处理。
341 8
|
2月前
|
文字识别 UED Python
对双栏 | 单双栏混合 | 图表文字混合的复杂布局的图片OCR识别(对布局复杂的整个pdf进行OCR识别)
这个故事告诉我们要多尝试不同的库和引擎,尤其是需求比较偏门或者少见的时候。同一个方向不同的库所擅长的领域是不一样的。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
4月前
|
机器学习/深度学习 人工智能 文字识别
Zerox:AI驱动的万能OCR工具,精准识别复杂布局并输出Markdown格式,支持PDF、DOCX、图片等多种文件格式
Zerox 是一款开源的本地化高精度OCR工具,基于GPT-4o-mini模型,支持PDF、DOCX、图片等多种格式文件,能够零样本识别复杂布局文档,输出Markdown格式结果。
364 4
Zerox:AI驱动的万能OCR工具,精准识别复杂布局并输出Markdown格式,支持PDF、DOCX、图片等多种文件格式
|
9月前
|
XML 缓存 JSON
为什么浏览器中有些图片、PDF等文件点击后有些是预览,有些是下载
为什么浏览器中有些图片、PDF等文件点击后有些是预览,有些是下载
400 0
|
5月前
|
JavaScript
jquery图片和pdf文件预览插件
EZView.js是一款jquery图片和pdf文件预览插件。EZView.js可以为图片和pdf格式文件生成在线预览效果。支持的文件格式有pdf、jpg、 png、jpeg、gif。
142 16
|
5月前
|
编解码 人工智能 文字识别
用PDF转换图片的方式弥补通义千问在扫描版PDF支持方面的缺失
当前通义千问Web版和本地版qwen-VL在处理扫描版PDF时均无法直接识别,导致实际应用中处理大量扫描PDF的需求难以满足。为此,通过使用Python的pdf2image库,可将PDF文件转换为图片,再进行OCR处理,实现解决方案。文中提供了具体的代码示例,展示了如何将PDF文件的每一页转换成图片,并保存至指定文件夹,为后续的OCR处理做好准备。
|
8月前
|
Python
Python办公自动化:提取pdf文件中的图片
Python办公自动化:提取pdf文件中的图片
138 0
|
9月前
|
数据安全/隐私保护 Python Windows
三种方法,Python轻松提取PDF中全部图片
三种方法,Python轻松提取PDF中全部图片
306 3

热门文章

最新文章