精华内容
下载资源
问答
  • 项目中需要将文件大小过大的PDF文件压缩成小PDF文件。通过iText的API,可以实现此需求。在保证文件不失真的前提下,将PDF大文件压缩成小文件。 二、代码 import com.itextpdf.text.DocumentException; import ...

    一、需求

           项目中需要将文件大小过大的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文件

    千次阅读 2019-02-26 17:13:30
    PDF文件现在广泛应用于各办公场所,只要有办公的地方就可以看到PDF文件文件都有大小之分,PDF文件也不例外,遇到过文件该怎么呢,小编教你如何简单压缩过大的PDF文件! 操作方法要借助压缩软件进行,具体的...

    PDF文件现在广泛应用于各大办公场所,只要有办公的地方就可以看到PDF文件,文件都有大小之分,PDF文件也不例外,遇到过大的文件该怎么呢,小编教你如何简单压缩过大的PDF文件!
    操作方法要借助压缩软件进行,具体的方法我们看看下面的介绍:
    1:打开这个PDF压缩软件,页面中有PDF压缩的功能,直接点击就可以。
    在这里插入图片描述
    2:进入操作界面之后点击添加文件或者添加文件夹的按钮,将需要进行压缩的PDF文件添加进去。
    在这里插入图片描述
    3:文件添加好之后,页面会出现文件格式以及文件大小的显示,文件有多大可以很清楚的看到。
    在这里插入图片描述
    4:压缩可以选择一个合适的压缩选项,有缩小优先、普通压缩和清晰优先的压缩选项,根据需要选择一个合适的。
    在这里插入图片描述
    5:压缩好的PDF文件可以保存在原文件夹中,也可以自定义保存的位置,只要自己找得到就行。
    在这里插入图片描述
    6:最后一步就是开始压缩PDF文件了,点击开始压缩的按钮,软件就会对添加的PDF文件进行压缩。
    在这里插入图片描述
    7:等待几秒钟就可以完成压缩,点击查看文件的按钮即可查看刚刚压缩好的PDF文件,还是比较方便的哦!
    在这里插入图片描述
    以上是借助迅捷压缩软件对PDF文件进行压缩的具体方法,简单易上手,还是不错的!

    展开全文
  • 怎么在手机上压缩过大的PDF文件

    千次阅读 2018-09-05 19:02:25
    我们在传输PDF文件的时候,有时候会因为PDF文件过大而导致文件传输的比较慢, 或者就是在文件在传输的过程中会无法正常传送。这个时候,我们就需要给PDF文件 压缩一下,但是我们该怎么压缩PDF文件呢? 工具:...

    我们在传输PDF文件的时候,有时候会因为PDF文件过大而导致文件传输的比较慢,

    或者就是在文件在传输的过程中会无法正常传送。这个时候,我们就需要给PDF文件

    压缩一下,但是我们该怎么压缩PDF文件呢?

    这里写图片描述
    工具:手机、迅捷PDF阅读器

    操作方法:

    1. 由于PDF文件比较特殊,想要压缩PDF文件,我们需要借助工具,我们打开手机上的PDF阅读器。
      这里写图片描述
    2. 打开之后,进入到工具的小功能页面,选择第五项功能“PDF压缩”。
      这里写图片描述
    3. 然后选择我们需要压缩的PDF文件。
      这里写图片描述
    4. 点击文件的右侧,接着文件的下方就会出现一些图标,点击“压缩”这个图标。
      这里写图片描述
      以上就是安卓手机压缩PDF文件的方法,也是小编的一些工作中的总结的一些方法,希望对你们有所帮助。
    展开全文
  • 目前做的一个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

    展开全文
  • Word文件过大怎么压缩

    千次阅读 2019-06-17 14:43:38
    文档分为不同的大小,有大有小,当Word文档太的情况下我们需要将文档进行在线压缩变小,下面就让小编给大家简单介绍一下将Word文档压缩变小的方法。步骤一:通过搜索进入到迅捷PDF在线转换器在线网站的首页面中...
  • web性能优化--用gzip压缩资源文件

    万次阅读 多人点赞 2019-07-31 19:14:09
    一、gzip压缩技术 gzip(GNU- ZIP)是一种压缩技术。...浏览器那里不需要我们担心,因为目前的大多数浏览器都支持解析gzip压缩过的资源文件。在实际的应用中我们发现压缩的比率往往在3到10倍,也...
  • 一般来说,微信中的视频文件使用手机发送是比较方便的,但是因为有限制,所以想要进行文件传输那么就需要减少文件的大小,最简单的方法就是压缩视频文件! 1.使用手机压缩视频文件,当然是需要第三方软件的支持,...
  • 视频文件过大怎么压缩变小?

    千次阅读 2019-09-17 13:31:54
    昨天上传了一个视频,想保存起来,不过视频文件有点,占用空间很,小编查看了进度条很慢,视频文件过大怎么压缩变小?那么视频压缩之后像素会不会变模糊,这个不用担心,这就给大家演示一下。 1、首先打开进入...
  • 现在虚拟机磁盘的大小,达到44.1G,而macos系统只用了25.4G 应该可以压缩出10G空间左右。 之前Mac OS 10.13 可以用 sudo /Library/Application\ Support/VMware\ Tools/vmware-tools-cli disk shrink / 这段代码...
  • MP4视频格式相信是大家接触的最多的一种视频格式,当我们在刷视频的时候看待一个好看的视频文件想发送给自己的好友一起观看,但传输的过程由于视频过大无法上传或者上传速度很慢的时候该怎么办呢?应该如何在不缩短...
  • Taro3.0 文件体积过大,不能预览的话 如何压缩文件体积? 方法一 重新新建一条命令,用watch 来监控 重新build 项目,这样体积会减少一大半 "dev:wexin": "taro build --type weapp -- --watch --env production
  • virtualBox压缩虚拟机文件 一、启动虚拟机  在虚拟机系统里执行:  碎片整理: sudo dd if=/dev/zero of=zero.fill  删除碎片文件: sudo rm -f zero.fill  完成指令后关闭虚拟机。 二、宿主机以管理员模式打开...
  • 如何压缩PDF文件的大小

    千次阅读 2019-05-28 11:09:44
    这个格式的文件有着较强的兼容性以及较高的安全性,在传输的时候还是很方便快捷的,但是PDF文件也有过大的时候,过大文件传输起来可没有那么简单了,我们可以借助压缩软件,将PDF文件压缩变小,下面来看看具体的...
  • 5.0 大文件的下载(1)实现思路边接收数据边写文件以解决内存越来越的问题 (2)核心代码 //当接收到服务器响应的时候调用,该方法只会调用一次 -(void)connection:(NSURLConnection *)connection didReceive...
  • 文章目录一 __init__() 创建一个类文件对象二 append() 内存数据添加到zip对象三 appendfile() ...传统方法需要多次磁盘IO,性能很低,如果跳过文件存储,直接将内存的数据压缩保存,会大大减少磁盘IO,提升性能。 不
  • java 大文件拆分、压缩传输

    千次阅读 2019-06-25 13:34:53
    每个文件压缩前最大为50M,超出文件限制指标在新文件中存储,新文件序号+1,序号从001开始最大为999,性能文件生成后采用gzip压缩存储。 分析 文件压缩、解压 文件拆分、合并 文件拆分、合并 生成测试文件 ...
  • font-spider(字蛛)官网: 字蛛 github源码 安装 先要安装npm与node 安装好之后就可以直接安装字蛛 ...我用了centos的服务器 用npm全局安装font-...首先要有项目中的html文件 在其外联的css样式中要规定字体文...
  • 文件压缩压缩

    千次阅读 2018-09-10 19:12:15
    背景:看到文件压缩gzip,bzip2。脑子一热,想到能不能再次压缩文件?没有百度到,想要的答案,自己费事来try try。 看不懂的知识:https://blog.csdn.net/xuchuangqi/article/details/52939705 gzip 对于要压缩...
  • 直接回答问题 这样子写一目了然 字典大小和压缩方式 ...压缩方式越接近“存储”:压缩效果越差(压缩文件)、压缩速度越快、压缩时占用内存和cpu越少 rar和rar4和rar5和zip的不同、用哪个好? 我本人
  • 毕业论文文件大小超出要求,压缩文件大小。
  • 需求:服务器指定图片尺寸大小,并且限制图片文件大小,因此在选择图片后需要进行操作 保存图片的时候,会发现实际文件大小大于当前设置的大小,这个问题在最后面解决;
  • 在用百度网盘备份资料时由于文件过大而无法上传,因此需要将大文件分卷压缩成多个小文件以便操作使用。 1、选择该“大文件”,右键如下图所示,选择“添加到压缩文件”,此处切勿选择其他菜单,因为我们需要对压缩...
  • 如何解压压缩过的.bag文件

    千次阅读 2019-06-05 20:31:14
    在网上找了很多资料,对于rosbag depress,有的说是解压,有的说是压缩。(从字面上来看,我个人觉得应该是解压的意思) 后面呢,看到rosbag filter也能实现解压的功能。 但运行时会报错。所以,如果有文件:...
  • Android中文件压缩和解压缩

    万次阅读 2017-03-06 01:08:43
    使用场景当我们在应用的Assets目录中需要加入文件时,可以直接将源文件放入,但这样会造成打包后的apk整体过大,此时就需要将放入的文件进行压缩.又如当我们需要从服务器中下载文件时,如果下载源文件耗时又消耗流量,较...
  • 参数一指定png 参数二就都为100了,不会再打折压缩了,所以要压缩质量,要指定为jpeg,(第三种webp格式没有接触) 不知道是不是错觉,指定jpeg情况下,哪怕质量指定100,出来的图片还是感觉跟原图有差距,略微...
  • 一,linux通配符压缩文件如下: 如这种按年月日的文件夹要分开压缩需要使用通配符匹配压缩,如只压缩2017年的: find 2017* | xargs tar -zcvf 2017.tar.gz 或者: tar cvf 2017.tar 2017* 或者: tar cvfz ...
  • Ubuntu压缩文件解压文件

    千次阅读 2012-10-11 18:02:37
    实践: 介绍: ...在我们探究这些用法 之前,我想先跟大家分享一下使用不同压缩格式的经验。...因为它实际上已成为压缩文件的标准 选择,而且它在windows上也能使用。我经常用zip格式压缩那些需要共享给w
  • js压缩文件还原

    千次阅读 2019-03-12 17:33:26
    js压缩文件还原网址:https://beautifier.io/
  • 如何压缩视频文件大小,只需三步!

    千次阅读 2020-04-10 17:56:33
    录制或下载的视频,照片,上传到某些平台,可能会对文件大小有限制,或者想通过微信私发给好友和朋友圈,但是微信会提示发送的视频不能大于20M,视频过大,导致无法发送,这时候我们需要一款视频压缩的工具,将发送的...
  • 用python进行批量文件的解压缩/压缩批量文件7z的命令行参数7z压缩文件的命令行参数7z解压文件的命令行参数 7z的命令行参数 python可以通过subprocess模块的相关函数运行外部程序,完成一些操作。如本文要介绍的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 397,336
精华内容 158,934
关键字:

如何压缩过大文件