java 多个单页的tif文件 合并成 一个多页的tif文件

maven依赖

<!-- tif 合并 -->
        <dependency>
            <groupId>com.sun.media</groupId>
            <artifactId>jai_codec</artifactId>
            <version>1.1-mr</version>
        </dependency>

或者

 <dependency>
            <groupId>com.sun</groupId>
            <artifactId>jai_codec</artifactId>
            <version>1.1.3</version>
        </dependency>

实现方法

    /**
     * tif合并
     * @Author chenqi
     * @Date 14:46 2020/8/6
     * @param bytes
     * @return byte[]
     **/
    public static byte[] margerTif(List<byte[]> bytes){
        ByteArrayInputStream bin = null;
        List<BufferedImage> images = new ArrayList<>();
        for(byte[] b : bytes) {
            try {
                bin = new ByteArrayInputStream(b);
                BufferedImage image = ImageIO.read(bin);
                images.add(image);
                bin.close();
            }catch (Exception e) {
                e.printStackTrace();
            }
        }

        ByteArrayOutputStream out = new ByteArrayOutputStream(OmsConstants.Number.ONE_MB);
        try{
            TIFFEncodeParam params = new TIFFEncodeParam();
            params.setCompression(TIFFEncodeParam.COMPRESSION_JPEG_TTN2);
            ImageEncoder encoder = ImageCodec.createImageEncoder("tiff", out, params);
            List<BufferedImage> imageList = new ArrayList<>();
            for (int i = 1; i < images.size(); i++){
                imageList.add(images.get(i));
            }
            params.setExtraImages(imageList.iterator());
            encoder.encode(images.get(0));
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            try {
                out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return out.toByteArray();
    }

测试方法

    public static void main(String[] args) {
        File file1 = new File("D:/TIF/1.tif");
        File file2 = new File("D:/TIF/2.tif");
        File file3 = new File("D:/TIF/3.tif");
        try {
            List<byte[]> list = new ArrayList<>();
            list.add(Files.readAllBytes(file1.toPath()));
            list.add(Files.readAllBytes(file2.toPath()));
            list.add(Files.readAllBytes(file3.toPath()));
            byte[] b = MesFileUtil.margerTif(list);
            FileOutputStream ou = new FileOutputStream(new File("D:/PDF/123.tif"));
            ou.write(b);
            ou.flush();
        }catch (Exception e){
            e.printStackTrace();
        }
    }

jar下载不了的兄弟,可以点赞收藏然后留言邮箱,一般48小时内会发。

在VB6(Visual Basic 6)环境中,操作PDF文件通常需要借助第三方库或组件,因为VB6本身并不直接支持PDF处理功能。你可以考虑使用一些COM组件,比如iTextSharp、PDFjet.NET等,它们提供了API来创建、编辑和合并PDF。 以下是一个简单的步骤概述: 1. 安装适合VB6的PDF组件:下载并安装一个支持COM接口的PDF库,例如itextsharp-win32-x86或者PDFjet VB6版本。 2. 引入所需引用:在项目管理器中,添加对所选PDF组件的引用。这将允许你在代码中使用该组件提供的函数。 3. 编写代码示例:可以使用类似下面这样的代码片段来合并多个PDF页面到一个新的PDF文档: ```vb Dim pdfWriter As Object Set pdfWriter = CreateObject("your.pdf.component.writer") ' 打开每个单页PDF文件 For Each file In Array("file1.pdf", "file2.pdf") ' 替换为你实际的文件名数组 Dim reader As Object Set reader = CreateObject("your.pdf.component.reader") reader.Open(file) ' 读取每一页并添加到新的PDF Dim page As Integer For page = 1 To reader.PageCount Dim currentPage As Object Set currentPage = reader.GetPage(page) pdfWriter.AddPage(currentPage) Next reader.Close ' 关闭当前文件后释放资源 Next ' 写入最终的PDF文件 pdfWriter.SaveAs "merged.pdf" ' 替换为你希望保存的目标路径 pdfWriter.Close ' 最后关闭PDF writer ``` 请注意,上述代码只是一个基本框架,你需要根据具体组件的API调整细节。在运行此代码前,确保已经正确配置了组件,并熟悉其提供的函数和属性。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值