使用Java 方法:用于向文件添加水印和密码完整版

这段代码是一个 Java 方法,用于向文件添加水印和密码。您解释一下:

首先,它接受一个 fileAddress 参数,表示文件的地址。
然后,它创建了一个线程安全的列表 fileDatas,用于存储文件数据。
接下来,它尝试读取文件流,并获取所有 sheet 的数据。
在循环中,它逐个读取每个 sheet 的数据,并将其添加到 fileDatas 列表中。
如果在读取数据时发生异常,它会记录错误并抛出运行时异常。
最后,它生成一个新的文件名 newFileName,并使用 generationFileAddress 方法生成带有水印和密码的文件地址。
请注意,代码中的一些变量(例如 fileUrl、dto)在这里没有定义,您需要根据您的实际情况进行替换。如果您有其他问题或需要更详细的解释,请随时告知!😊

@Override
    public String fileAddWatermarkPassword(String fileAddress)  {
   
 
        List<List<List<String>>> fileDatas = Collections.synchronizedList(new ArrayList<>());

        try (InputStream inputStream = readFileStream(fileUrl)) {
   
            List<Sheet> sheets = EasyExcel.read(inputStream).build().getSheets();

            for (int i = 0; i < sheets.size(); i++) {
   
                try (InputStream sheetStream = readFileStream(fileUrl)) {
   
                    List<List<String>> fileData = readFileData(sheetStream, i);
                    synchronized (fileDatas) {
   
                        fileDatas.add(fileData);
                    }
                } catch (IOException e) {
   
                    LogUtil.error("报表数据提取", String.format("无法读取文件数据, 文件地址:%s, sheet index: %d", fileUrl, i), null, e);
                    throw new RuntimeException("无法读取文件数据", e);
                }
            }
        } catch (IOException e) {
   
            LogUtil.error("报表数据提取", String.format("无法读取文件流, 文件地址:%s"
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
给Office文件添加数字水印可以使用Apache POI库来实现。下面是一个示例代码: ```java import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import org.apache.poi.hssf.usermodel.HSSFPatriarch; import org.apache.poi.hssf.usermodel.HSSFShape; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFSimpleShape; import org.apache.poi.hssf.usermodel.HSSFTextbox; import org.apache.poi.ss.usermodel.ShapeTypes; public class Watermark { public static void addWatermark(String filename, String watermark) throws IOException { HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(filename)); HSSFSheet sheet = workbook.getSheetAt(0); HSSFPatriarch drawing = sheet.createDrawingPatriarch(); HSSFTextbox textbox = drawing.createTextbox(new org.apache.poi.ss.usermodel.ClientAnchor()); textbox.setString(new org.apache.poi.hssf.usermodel.HSSFRichTextString(watermark)); textbox.setShapeType(ShapeTypes.TEXT_BOX); textbox.setLineWidth(0); FileOutputStream out = new FileOutputStream(filename); workbook.write(out); out.close(); } public static String getWatermark(String filename) throws IOException { HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(filename)); HSSFSheet sheet = workbook.getSheetAt(0); for (HSSFShape shape : sheet.getDrawingPatriarch().getChildren()) { if (shape instanceof HSSFTextbox) { String text = ((HSSFTextbox) shape).getString().getString(); if (text.matches(".*\\d+.*")) { return text; } } } return null; } public static void main(String[] args) throws IOException { String filename = "test.xls"; String watermark = "Watermark123"; addWatermark(filename, watermark); System.out.println(getWatermark(filename)); } } ``` 上述代码中,`addWatermark`方法接收两个参数:需要添加水印的Office文件名和要添加水印字符串。该方法使用POI库创建一个文本框并在其中写入水印字符串,然后将文本框插入到工作表中。 `getWatermark`方法接收一个参数:需要获取水印的Office文件名。该方法遍历工作表中的所有形状,查找文本框并返回第一个包含数字的文本框中的字符串。如果找不到这样的文本框,则返回null。 在main方法中,我们测试了`addWatermark`和`getWatermark`方法。首先使用`addWatermark`方法在名为`test.xls`的文件添加了一个名为`Watermark123`的水印,然后使用`getWatermark`方法获取了该水印并打印到控制台上。 请注意,上述示例代码仅适用于Excel文件,如果要在Word文档或PowerPoint演示文稿中添加数字水印,则需要使用不同的POI类。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值