精华内容
下载资源
问答
  • 如何压缩过大文件
    千次阅读
    2020-03-20 22:05:12

    一、需求

           项目中需要将文件大小过大的PDF文件,压缩成小PDF文件。通过iText的API,可以实现此需求。在保证文件不失真的前提下,将PDF大文件压缩成小文件。

    二、代码

    import com.itextpdf.text.DocumentException;
    import com.itextpdf.text.pdf.*;
    import com.itextpdf.text.pdf.parser.PdfImageObject;
    
    import javax.imageio.ImageIO;
    import java.awt.*;
    import java.awt.geom.AffineTransform;
    import java.awt.image.BufferedImage;
    import java.io.ByteArrayOutputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    public class TestReduceImgDemoSuccess {
    
        /**
         * 图像的乘法因子
         */
        public static float FACTOR = 0.5f;
    
        /**
         *
         *
         * @param src  源文件
         * @param dest 目标文件
         * @throws IOException
         * @throws DocumentException
         */
        public void manipulatePdf(String src, String dest) throws IOException, DocumentException {
            PdfName key = new PdfName("ITXT_SpecialId");
            PdfName value = new PdfName("123456789");
            // 读取pdf文件
            PdfReader reader = new PdfReader(src);
            int n = reader.getXrefSize();
            PdfObject object;
            PRStream stream;
            // Look for image and manipulate image stream
            for (int i = 0; i < n; i++) {
    
                object = reader.getPdfObject(i);
                PdfObject pdfObject = reader.getPdfObject(i);
                if (object == null || !object.isStream())
                    continue;
                stream = (PRStream) object;
                PdfObject pdfsubtype = stream.get(PdfName.SUBTYPE);
                System.out.println(stream.type());
                if (pdfsubtype != null && pdfsubtype.toString().equals(PdfName.IMAGE.toString())) {
                    PdfImageObject image = new PdfImageObject(stream);
                    BufferedImage bi = image.getBufferedImage();
                    if (bi == null) continue;
                    int width = (int) (bi.getWidth() * FACTOR);
                    int height = (int) (bi.getHeight() * FACTOR);
                    BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
                    AffineTransform at = AffineTransform.getScaleInstance(FACTOR, FACTOR);
                    Graphics2D g = img.createGraphics();
                    g.drawRenderedImage(bi, at);
                    ByteArrayOutputStream imgBytes = new ByteArrayOutputStream();
                    //标记此处,后面会修改
                    ImageIO.write(img, "JPG", imgBytes);
                    stream.clear();
                    stream.setData(imgBytes.toByteArray(), false, PRStream.BEST_COMPRESSION);
                    stream.put(PdfName.TYPE, PdfName.XOBJECT);
                    stream.put(PdfName.SUBTYPE, PdfName.IMAGE);
                    stream.put(key, value);
                    stream.put(PdfName.FILTER, PdfName.DCTDECODE);
                    stream.put(PdfName.WIDTH, new PdfNumber(width));
                    stream.put(PdfName.HEIGHT, new PdfNumber(height));
                    stream.put(PdfName.BITSPERCOMPONENT, new PdfNumber(8));
                    stream.put(PdfName.COLORSPACE, PdfName.DEVICERGB);
                }
            }
            // Save altered PDF
            PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
            stamper.close();
            reader.close();
        }
    
        /**
         * Main method.
         *
         * @param args no arguments needed
         * @throws DocumentException
         * @throws IOException
         */
        public static void main(String[] args) throws IOException, DocumentException {
            //createPdf(RESULT);
            new TestReduceImgDemoSuccess().manipulatePdf("源文件存储的路径,例如D:/xxx/xx.pdf",
                    "目标文件的存储路径,例如D:/xxx/result.pdf");
        }
    
    }

    三、出现的问题

           此代码的原理简单来说就是把PDF文件转化成图片流,然后再把图片流输出成PDF文件,可以实现将大PDF文件压缩成小PDF文件。但是如果文件过小可能会出现失真。解决办法为在压缩文件之前,判断一下每个图片文件流的大小,如果过于小(此处假设为500k,可根据业务需要进行设定),就不需要再压缩,只对过大的图片进行压缩。

    四、解决办法

          再上面代码的标记处,修改如下代码:

                    ByteArrayOutputStream imgBytes = new ByteArrayOutputStream();
                    //判断文件流的大小,超过500k的才进行压缩,否则不进行压缩
                    if(img.getData().getDataBuffer().getSize()>512000){
                        ImageIO.write(img, "JPG", imgBytes);
                        stream.clear();
                        stream.setData(imgBytes.toByteArray(), false, PRStream.BEST_COMPRESSION);
                        stream.put(PdfName.TYPE, PdfName.XOBJECT);
                        stream.put(PdfName.SUBTYPE, PdfName.IMAGE);
                        stream.put(key, value);
                        stream.put(PdfName.FILTER, PdfName.DCTDECODE);
                        stream.put(PdfName.WIDTH, new PdfNumber(width));
                        stream.put(PdfName.HEIGHT, new PdfNumber(height));
                        stream.put(PdfName.BITSPERCOMPONENT, new PdfNumber(8));
                        stream.put(PdfName.COLORSPACE, PdfName.DEVICERGB);
                    }else {
                        ImageIO.write(img, "JPG", imgBytes);
                    }

     

    更多相关内容
  • pdf是日常办公中比较常见的一种文件格式,但是有时候pdf文件的容量会比较,上传到某些平台会有限制,那么p我们就需要压缩pdf文件,但是有时候压缩处理会模糊,今天我给大家介绍一个可以把pdf文件压缩到最小但是又...

    怎么把pdf压缩到指定大小?pdf是日常办公中比较常见的一种文件格式,但是有时候pdf文件的容量会比较大,上传到某些平台会有限制,那么p我们就需要压缩pdf文件,但是有时候压缩处理会模糊,今天我给大家介绍一个可以把pdf文件压缩到最小但是又清晰的方法。下面我们一起来看一下这个方法:

     搜索一下:~~~~~~轻云pdf编辑压缩官网

    打开轻云pdf编辑压缩官网,上传pdf文件,上传完毕后网站会自动压缩。

    当压缩的进度条到达100%后就表示视频压缩好了,这个时候会出现预览压缩后的效果选择,大家如果想预览压缩后的视频效果,大家点击预览视频效果按钮就可以了。

     

    以上就是我给大家分享的把pdf压缩到指定大小的方法了,最大的优势就是操作简单,使用方便,需要压缩pdf的小伙伴们希望能帮到你们。

    展开全文
  • 一般来说,微信中的视频文件使用手机发送是比较方便的,但是因为有限制,所以想要进行文件传输那么就需要减少文件的大小,最简单的方法就是压缩视频文件! 1.使用手机压缩视频文件,当然是需要第三方软件的支持,...

    我们都知道微信之间可以进行文件传输,但是有一定的限制,那就是文件需要在30M之内才可以,文件大小超过这个数值是不可以的,那么微信中的视频文件该如何传输呢?教你一招,快速解决!
    在这里插入图片描述

    一般来说,微信中的视频文件使用手机发送是比较方便的,但是因为有限制,所以想要进行文件传输那么就需要减少文件的大小,最简单的方法就是压缩视频文件!
    在这里插入图片描述

    1.使用手机压缩视频文件,当然是需要第三方软件的支持,打开手机中的“迅捷视频转换器”,在页面中可以看到,中间的版块就是“视频压缩”。
    在这里插入图片描述

    2.点击这个版块之后,在你需要进行压缩的视频上单击一下就可以了,视频压缩是不能多个视频批量压缩,所以只能一个一个添加压缩!
    在这里插入图片描述

    3.视频添加完成之后,页面就会自动跳转到视频压缩的页面中,页面会根据你的视频大小自动进行数值的调整,点击下面的“确定”就可以进行压缩。
    在这里插入图片描述

    4.压缩之后,当大小低于30M时,我们就可以在微信中进行传输,非常的方便!
    在这里插入图片描述

    5.当然进行压缩的视频也不能过大,不然还是无法压缩到30M以内的,要在一定的合适范围内,不过大视频也是可以压缩的,这样可以方便保存,减少内存的占用!
    在这里插入图片描述

    以上就是视频文件压缩的小技巧,你学会了吗?

    展开全文
  • 目前做的一个vue项目当中引入了外部的字体文件,打包之后测试发现加载慢,需等待较长时间才能看到效果,特此记录在vue项目中压缩字体的操作. 安装字蛛 字蛛是一个中文字体压缩器,通过分析本地 CSS 与 HTML 文件...

    目前做的一个vue项目当中引入了外部的字体文件,打包之后测试发现加载过慢,需等待较长时间才能看到效果,特此记录在vue项目中压缩字体的操作.

    安装字蛛

    字蛛是一个中文字体压缩器,通过分析本地 CSS 与 HTML 文件获取 WebFont 中没有使用的字符,并将这些字符数据从字体中删除以实现压缩,同时生成跨浏览器使用的格式。
    安装方法

    npm install font-spider -g
    

    使用方法

    首先在项目录当中创建一个font.html文件,并且在static文件夹下创建一个font.css文件,目录文件如图:
    目录结构
    font.css文件的代码如下图所示:
    font.css文件代码图示

    @font-face {
      font-family: 'myFont';
      src: url('./regular.ttf');
    }
    #h {
      font-family: 'myFont';
    }
    

    font.html文件的代码如下图所示:
    font.html文件代码图示

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <link rel="stylesheet" href="./static/font.css" />
      </head>
      <body>
        <h1 id="h">安全高收益</h1>
      </body>
    </html>
    

    font.html里的h1标签id对应着font.css里的文字样式

    接着在项目目录下执行命令行:

    font-spider ./font.html
    

    这里的font.html就是刚刚创建的文件

    执行完成之后会自动生成一个压缩之后的字体文件,通过下图可以看到压缩的效果还是非常明显的。
    big为源文件,另一个为压缩之后的文件
    完成之后在需要使用字体的vue页面引入使用即可
    字体使用

    End

    展开全文
  • 7-zip怎么把大文件压缩到最小

    千次阅读 2021-06-05 06:06:11
    7-Zip一款压缩软件,号称有着现今...7-zip软件怎么把大文件压缩到最小?1、先在本站下载并安装好7-zip软件,然后点击要压缩文件右击先查看下源文件大小,简单记录下。在想要压缩保存的大文件上点击右键,选择7-zi...
  • 如何压缩pdf文件的大小?

    千次阅读 2022-02-24 10:49:47
    今天小编在此教大家一个快速且能批量压缩pdf文件的方法,希望我的分享能帮助很多人解除烦恼,想学的小伙伴就请看四个具体的操作步骤吧。
  • C#使用SharpZipLib库压缩大文件问题

    千次阅读 2019-09-04 11:35:06
    C#使用SharpZipLib库压缩文件很简单,无非引入ICSharpCode.SharpZipLib.dll: 程序中引入对应的命名空间: using ICSharpCode.SharpZipLib.Zip; using ICSharpCode.SharpZipLib.Checksums; 这样就可以进行压缩解压...
  • MP4视频格式相信是大家接触的最多的一种视频格式,当我们在刷视频的时候看待一个好看的视频文件想发送给自己的好友一起观看,但传输的过程由于视频过大无法上传或者上传速度很慢的时候该怎么办呢?应该如何在不缩短...
  • java数据量导出csv文件压缩

    千次阅读 2021-11-17 11:32:42
    java数据量导出csv文件压缩 java使用POI数据量导出excel一般会存在以下几个问题: 一次从数据库查询出这么大数据,查询缓慢 查询数据量过大时会内存溢出 解决方案:分页查询数据,比如一次查询5w数据,生成多...
  • 在ubuntu中使用7z压缩命令分卷压缩超大文件 目的:学习在ubuntu中使用分卷压缩与解压缩 环境:ubuntu 16.04 使用rar分卷压缩: 1 rara-m5-v2048mmyarchivemyfiles # 最大限制为 12M ...
  • Taro3.0 文件体积过大,不能预览的话 如何压缩文件体积? 方法一 重新新建一条命令,用watch 来监控 重新build 项目,这样体积会减少一大半 "dev:wexin": "taro build --type weapp -- --watch --env production
  • font-spider(字蛛)官网: 字蛛 github源码 安装 先要安装npm与node 安装好之后就可以直接安装字蛛 ...我用了centos的服务器 用npm全局安装font-...首先要有项目中的html文件 在其外联的css样式中要规定字体文...
  • virtualBox压缩虚拟机文件 一、启动虚拟机  在虚拟机系统里执行:  碎片整理: sudo dd if=/dev/zero of=zero.fill  删除碎片文件: sudo rm -f zero.fill  完成指令后关闭虚拟机。 二、宿主机以管理员模式打开...
  • 文件压缩压缩

    千次阅读 2018-09-10 19:12:15
    背景:看到文件压缩gzip,bzip2。脑子一热,想到能不能再次压缩文件?没有百度到,想要的答案,自己费事来try try。 看不懂的知识:https://blog.csdn.net/xuchuangqi/article/details/52939705 gzip 对于要压缩...
  • 如何压缩视频文件大小,只需三步!

    千次阅读 2020-04-10 17:56:33
    录制或下载的视频,照片,上传到某些平台,可能会对文件大小有限制,或者想通过微信私发给好友和朋友圈,但是微信会提示发送的视频不能大于20M,视频过大,导致无法发送,这时候我们需要一款视频压缩的工具,将发送的...
  • 在 Linux 上压缩文件的 5 种方法

    千次阅读 2021-05-17 17:07:35
    在 Linux 上有不少用于压缩文件的命令。最新最有效的一个方法是 xz,但是所有的方法都有节省磁盘空间和维护备份文件供以后使用的优点。在这篇文章中,我们将比较这些压缩命令并指出显著的不同。tartar 命令不是专门...
  • 视频文件如何压缩变小?

    千次阅读 2022-01-19 10:37:57
    视频文件如何压缩变小?今天小编就为大家介绍一种比较简单的视频压缩方法,不仅操作简单而且压缩效果好,快来试试吧!
  • 直接回答问题 这样子写一目了然 字典大小和压缩方式 ...压缩方式越接近“存储”:压缩效果越差(压缩文件)、压缩速度越快、压缩时占用内存和cpu越少 rar和rar4和rar5和zip的不同、用哪个好? 我本人
  • 教你如何简单压缩过大的PDF文件

    千次阅读 2019-02-26 17:13:30
    PDF文件现在广泛应用于各办公场所,只要有办公的地方就可以看到PDF文件文件都有大小之分,PDF文件也不例外,遇到过文件该怎么呢,小编教你如何简单压缩过大的PDF文件! 操作方法要借助压缩软件进行,具体的...
  • 1. 掌握对文件和文件夹的压缩与解压缩方式。 2. 了解各命令的参数含义。
  • tar打包压缩文件命令

    千次阅读 2021-05-09 00:42:15
    tar命令tar命令用于将多个文件合成1个文件,wiki中把这个命令和cpio、shar等一起叫做archive文件,个人理解是归档,合成一个文件,后就可以用gzip、bz2、xz等工具进行压缩,同时也能方便在各个计算机间传输,有点...
  • 为什么大文件需要分块压缩?首先,因为网络传输是存在time-out参数的,部分网站不支持断点续传,当文件上传时间长时,与网站的连接会断开,导致文件上传失败。其次,部分网盘会有单文件上传大小限制,通过分块...
  • 这个问题困扰了很久 一个项目代码量没多少 但是编译的APK文件却很,有甚者超过了100M 除却很多图片资源 我还是一步一步的尝试了下各种方法 果然 一个120M的APK缩减到了70M 那我们就一步一步分析下 我们的一个完整...
  • 自己怎么压缩js文件

    千次阅读 2019-09-03 23:20:55
    如果将这些插件应用到实际的生产中,会发现这些JS文件,会导致加载较慢,编译较慢。因此需要自己压缩一下这个文件,以便可以更好的应用于实际生产环境中。 自己压缩JS文件的方法: 方法一:在线压缩 比如这...
  • 首先,最简单直接的方法当然是压缩PDF,但是一般需要压缩的PDF在100兆以上,很多图片版的电子书甚至有几百兆,大多数工具都有大小限制,无法处理这么文件。我们可以使用易转换的PDF压缩功能对超大PDF文件进行...
  • 没有参数的是要压缩的目录或者文件 -x 参数跟的是要排除的文件和目录 举例 比如: zip -r code03.zip inurse-egg-server -x /inurse-egg-server/node_modules/* code03是我们压缩到本地的名字(自己命名) inurse-...
  • 现在虚拟机磁盘的大小,达到44.1G,而macos系统只用了25.4G 应该可以压缩出10G空间左右。 之前Mac OS 10.13 可以用 sudo /Library/Application\ Support/VMware\ Tools/vmware-tools-cli disk shrink / 这段代码...
  • 某某某的短视频火了哎,我知道啊,看到他们短视频做的很好,我也想,于是就自己注册了一个账号,但当我注册成功准备上传视频的时候才发现很多平台对视频的大小是有限制的,文件无法上传,难道我要干等着它上传好...
  • 所以只能在网页中使用字体文件,又因为文件比较,影响页面加载速度,一方面考虑使用 CDN 来保存字体文件,另一方面也考虑把文件压缩一下。 解决思路 明确了问题,下面就是怎么解决问题了。 解决这个问题有两个思路...
  • pdf格式压缩大小,pdf如何压缩大小?下面小编就来为大家介绍pdf格式文件压缩方法,压缩效果好,支持批量压缩,请经常有ppdf压缩需求的小伙伴仔细阅读哦。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 441,512
精华内容 176,604
热门标签
关键字:

如何压缩过大文件

友情链接: fannao.rar