python压缩pdf文件大小

pdf文件过大,经常会是一个问题,但是市面上基本上都是收费的工具,wps需要开会员才能使用。因此找了一个python库进行试验:

首先需要安装

pip install aspose-pdf

运行的代码:

import aspose.pdf as ap

compressPdfDocument = ap.Document("SnapFusion.pdf")  # 需要压缩的pdf文件路径
pdfoptimizeOptions = ap.optimization.OptimizationOptions()
pdfoptimizeOptions.image_compression_options.compress_images = True
pdfoptimizeOptions.image_compression_options.image_quality = 10
compressPdfDocument.optimize_resources(pdfoptimizeOptions)
compressPdfDocument.save("SnapFusion_compress.pdf")  # 需要压缩后保存的文件路径

这个代码使用非常简单,主要是压缩文件里面的图片质量,实际上图片质量差一些在阅读器里面是看不出来的区别,效果如下:

 文件直接小了10倍,打开看也不影响观感,还是比较有意义的。

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
演示软件使用说明 1、本软件为演示软件,在性能和功能上有所限制; 2、参数说明: 条码列数 取值范围1-30,根据具体要生成条码的数据量决定; 例如20 byte左右数据量,取值范围可设3-5; 纠错等级 条码污损后的纠错能力,取值范围0-7,建议取1-3; 长宽比例 条码单位长度和宽度比例,取值范围1-5; 1----紧凑型条码,生成条码图片容量最小,适合配合数据库管理系统使用, 便于直接以最小的容量存储在数据库中,而且生成速度最快,适合大 批量生成条码。但需要通过报表控件做纵横向适当拉伸后,打印出来 才可识读,不能直接打印识读或软解码; 2--5 标准型条码,适合直接打印识读或软件解码,建议取3。 以上参数的设置将直接影响条码的可读性和条码图片的大小。 3、在文本框中输入要生成条码的信息,输入欲保存图片的名称,按“生成”即在当前目录下产生指定的bmp图片; 默认路径为执行文件同目录,默认文件名为bar.bmp; 4、若要打印,可用windows提供的“画图”工具打开bar.bmp,直接按打印就可以在打印机上输出; 建议采用激光打印机; 5、本控件能将文字信息、照片信息等生成二维条码; 6、本控件可以采用DLL方式或COM方式提供。 7、本软件只演示将文本信息(注意要<1kByte)生成pdf417二维条码并解码; 8、解码控件可以支持黑白二色、256色、24位真彩二维条码图片。 若需要其他功能演示,如图片压缩生成二维条码,二维条码与数据库连接,扫描枪与串口连接读取二维条码, 软件进行二维条码图片解码等等;
原书名: Core Python Programming (2nd Edition) 原出版社: Prentice Hall PTR 作者: (美)Wesley J. Chun 译者: 宋吉广 出版社:人民邮电出版社 ISBN:9787115178503 上架时间:2008-6-23 出版日期:2008 年7月 开本:16开 页码:654 版次:2-1 第1部分 python核心  第1章 欢迎来到python世界    1.1 什么是python    1.2 起源    1.3 特点     1.3.1 高级     1.3.2 面向对象     1.3.3 可升级     1.3.4 可扩展     1.3.5 可移植性     1.3.6 易学     1.3.7 易读     1.3.8 易维护     1.3.9 健壮性     1.3.10 高效的快速原型开发工具     1.3.11 内存管理器     1.3.12 解释性和(字节)编译性    1.4 下载和安装python    1.5 运行python     1.5.1 命令行上的交互式解释器  .   1.5.2 从命令行启动脚本     1.5.3 集成开发环境     1.5.4 其他的集成开发环境和执行环境    1.6 python文档    1.7 比较pythonpython与其他语言的比较)    1.8 其他实现    1.9 练习   第2章 快速入门    2.1 程序输出,print语句及“hello world!”    2.2 程序输入和raw_input()内建函数    2.3 注释    2.4 操作符    2.5 变量和赋值    2.6 数字    2.7 字符串    2.8 列表和元组    2.9 字典    2.10 代码块及缩进对齐    2.11 if语句    2.12 while循环    2.13 for循环和range()内建函数    2.14 列表解析    2.15 文件和内建函数open()、file()    2.16 错误和异常    2.17 函数     2.17.1 如何定义函数     2.17.2 如何调用函数     2.17.3 默认参数    2.18 类    2.19 模块     2.19.1 如何导入模块     2.19.2 如何访问一个模块函数或访问一个模块变量    2.20 实用的函数    2.21 练习   第3章 python基础    3.1 语句和语法     3.1.1 注释(#)     3.1.2 继续(\)     3.1.3 多个语句构成代码组(:)     3.1.4 代码组由不同的缩进分隔     3.1.5 同一行书写多个语句(;)     3.1.6 模块    3.2 变量赋值     3.2.1 赋值操作符     3.2.2 增量赋值     3.2.3 多重赋值     3.2.4 “多元”赋值    3.3 标识符     3.3.1 合法的python标识符     3.3.2 关键字     3.3.3 内建     3.3.4 专用下划线标识符    3.4 基本风格指南     3.4.1 模块结构和布局     3.4.2 在主程序中书写测试代码    3.5 内存管理     3.5.1 变量定义     3.5.2 动态类型     3.5.3 内存分配     3.5.4 引用计数     3.5.5 垃圾收集    3.6 第一个python程序    3.7 相关模块和开发工具    3.8 练习   第4章 python对象    4.1 python 对象    4.2 标准类型    4.3 其他内建类型     4.3.1 类型对象和type类型对象     4.3.2 none--python的null对象    4.4 内部类型     4.4.1 代码对象     4.4.2 帧对象     4.4.3 跟踪记录对象     4.4.4 切片对象     4.4.5 省略对象     4.4.6 xrange 对象    4.5 标准类型操作符     4.5.1 对象值的比较     4.5.2 对象身份比较     4.5.3 布尔类型    4.6 标准类型内建函数     4.6.1 type()     4.6.2 cmp()     4.6.3 str()和repr()(及``操作符)     4.6.4 type()和isinstance()     4.6.5 python类型操作符和内建函数总结    4.7 类型工厂函数    4.8 标准类型的分类     4.8.1 存储模型     4.8.2 更新模型     4.8.3 访问模型    4.9 不支持的类型    4.10 练习   第5章 数字    5.1 数字简介     5.1.1 如何创建数值对象并用其赋值(数字对象)     5.1.2 如何更新数字对象     5.1.3 如何删除数字对象    5.2 整型     5.2.1 布尔型     5.2.2 标准整型     5.2.3 长整型     5.2.4 整型和长整型的统一    5.3 双精度浮点型    5.4 复数    5.5 操作符     5.5.1 混合模式操作符     5.5.2 标准类型操作符     5.5.3 算术操作符     5.5.4 *位操作符(只适用于整型)    5.6 内建函数与工厂函数     5.6.1 标准类型函数     5.6.2 数字类型函数     5.6.3 仅用于整型的函数    5.7 其他数字类型     5.7.1 布尔“数”     5.7.2 十进制浮点型    5.8 相关模块    5.9 练习   第6章 序列:字符串、列表和元组    6.1 序列     6.1.1 标准类型操作符     6.1.2 序列类型操作符     6.1.3 内建函数(bif)    6.2 字符串    6.3 字符串和操作符     6.3.1 标准类型操作符     6.3.2 序列操作符切片([]和[:])    6.4 只适用于字符串的操作符     6.4.1 格式化操作符(%)     6.4.2 字符串模板: 更简单的替代品     6.4.3 原始字符串操作符(r/r)     6.4.4 unicode字符串操作符(u/u)    6.5 内建函数     6.5.1 标准类型函数     6.5.2 序列类型函数     6.5.3 字符串类型函数    6.6 字符串内建函数     6.7 字符串的独特特性     6.7.1 特殊字符串和控制字符     6.7.2 三引号     6.7.3 字符串不变性    6.8 unicode     6.8.1 术语     6.8.2 什么是unicode     6.8.3 怎样使用unicode     6.8.4 codec是什么     6.8.5 编码解码     6.8.6 把unicode应用到实际应用中     6.8.7 从现实中得来的教训     6.8.8 python的unicode支持    6.9 相关模块    6.10 字符串关键点总结   6.11 列表    6.12 操作符     6.12.1 标准类型操作符     6.12.2 序列类型操作符     6.12.3 列表类型操作符和列表解析    6.13 内建函数     6.13.1 标准类型函数     6.13.2 序列类型函数     6.13.3 列表类型内建函数    6.14 列表类型的内建函数    6.15 列表的特殊特性    6.16 元组    6.17 元组操作符和内建函数     6.17.1 标准类型操作符、序列类型操作符和内建函数     6.17.2 元组类型操作符和内建函数、内建方法    6.18 元组的特殊特性     6.18.1 不可变性给元组带来了什么影响     6.18.2 元组也不是那么“不可变”     6.18.3 默认集合类型     6.18.4 单元素元组     6.18.5 字典的关键字    6.19 相关模块    6.20 *拷贝python对象、浅拷贝和深拷贝    6.21 序列类型小结    6.22 练习   第7章 映像和集合类型    7.1 映射类型:字典     7.1.1 如何创建字典和给字典赋值     7.1.2 如何访问字典中的值     7.1.3 如何更新字典     7.1.4 如何删除字典元素和字典    7.2 映射类型操作符     7.2.1 标准类型操作符     7.2.2 映射类型操作符    7.3 映射类型的内建函数和工厂函数     7.3.1 标准类型函数[type()、str()和cmp()]     7.3.2 映射类型相关的函数    7.4 映射类型内建方法    7.5 字典的键     7.5.1 不允许一个键对应多个值     7.5.2 键必须是可哈希的    7.6 集合类型     7.6.1 如何创建集合类型和给集合赋值     7.6.2 如何访问集合中的值     7.6.3 如何更新集合     7.6.4 如何删除集合中的成员和集合    7.7 集合类型操作符     7.7.1 标准类型操作符(所有的集合类型)     7.7.2 集合类型操作符(所有的集合类型)     7.7.3 集合类型操作符(仅适用于可变集合)    7.8 内建函数     7.8.1 标准类型函数     7.8.2 集合类型工厂函数    7.9 集合类型内建方法     7.9.1 方法(所有的集合方法)     7.9.2 方法(仅适用于可变集合)     7.9.3 操作符和内建方法比较    7.10 集合类型总结表    7.11 相关模块    7.12 练习   第8章 条件和循环    8.1 if语句     8.1.1 多重条件表达式     8.1.2 单一语句的代码块    8.2 else语句    8.3 elif(即else-if)语句    8.4 条件表达式(即“三元操作符”)    8.5 while语句     8.5.1 一般语法     8.5.2 计数循环     8.5.3 无限循环    8.6 for语句     8.6.1 一般语法     8.6.2 用于序列类型     8.6.3 用于迭代器类型     8.6.4 range()内建函数     8.6.5 xrange() 内建函数     8.6.6 与序列相关的内建函数    8.7 break语句    8.8 continue语句    8.9 pass语句    8.10 再谈else语句    8.11 迭代器和iter()函数     8.11.1 什么是迭代器     8.11.2 为什么要迭代器     8.11.3 如何迭代     8.11.4 使用迭代器     8.11.5 可变对象和迭代器     8.11.6 如何创建迭代器    8.12 列表解析    8.13 生成器表达式    8.14 相关模块    8.15 练习   第9章 文件和输入输出    9.1 文件对象    9.2 文件内建函数(open()和file())     9.2.1 工厂函数file()     9.2.2 通用换行符支持(uns)    9.3 文件内建方法     9.3.1 输入     9.3.2 输出     9.3.3 文件内移动     9.3.4 文件迭代     9.3.5 其他     9.3.6 文件方法杂项    9.4 文件内建属性    9.5 标准文件    9.6 命令行参数    9.7 文件系统    9.8 文件执行    9.9 永久存储模块     9.9.1 pickle和marshal模块     9.9.2 dbm风格的模块     9.9.3 shelve模块    9.10 相关模块    9.11 练习   第10章 错误和异常    10.1 什么是异常     10.1.1 错误     10.1.2 异常    10.2 python 中的异常    10.3 检测和处理异常     10.3.1 try-except语句     10.3.2 包装内建函数     10.3.3 带有多个except的try语句     10.3.4 处理多个异常的except语句     10.3.5 捕获所有异常     10.3.6 “异常参数”     10.3.7 在应用使用我们封装的函数     10.3.8 else子句     10.3.9 finally子句     10.3.10 try-finally语句     10.3.11 try-except-else-finally:厨房一锅端  10.4 上下文管理     10.4.1 with语句     10.4.2 *上下文管理协议    10.5 *字符串作为异常    10.6 触发异常    10.7 断言    10.8 标准异常    10.9 *创建异常    10.10 (现在)为什么用异常    10.11 到底为什么要异常    10.12 异常和sys模块    10.13 相关模块    10.14 练习   第11章 函数和函数式编程    11.1 什么是函数?     11.1.1 函数vs过程     11.1.2 返回值与函数类型    11.2 调用函数     11.2.1 函数操作符     11.2.2 关键字参数    11.2.3 默认参数     11.2.4 参数组    11.3 创建函数     11.3.1 def语句     11.3.2 声明与定义比较     11.3.3 前向引用     11.3.4 函数属性     11.3.5 内部/内嵌函数     11.3.6 *函数(与方法)装饰器    11.4 传递函数    11.5 formal arguments     11.5.1 位置参数     11.5.2 默认参数    11.6 可变长度的参数     11.6.1 非关键字可变长参数(元组)     11.6.2 关键字变量参数(字典)     11.6.3 调用带有可变长参数对象函数    11.7 函数式编程     11.7.1 匿名函数与lambda     11.7.2 内建函数apply()、filter()、map()、reduce()     11.7.3 偏函数应用    11.8 变量作用域     11.8.1 全局变量与局部变量     11.8.2 globa语句     11.8.3 作用域的数字     11.8.4 闭包     11.8.5 作用域和lambda     11.8.6 变量作用域和名称空间    11.9 *递归     11.10 生成器     11.10.1 简单的生成器特性        11.10.2 加强的生成器特性    11.11 练习   第12章 模块    12.1 什么是模块    12.2 模块和文件     12.2.1 模块名称空间     12.2.2 搜索路径和路径搜索    12.3 名称空间     12.3.1 名称空间与变量作用域比较     12.3.2 名称查找、确定作用域、覆盖     12.3.3 无限制的名称空间    12.4 导入模块     12.4.1 import语句     12.4.2 from-import语句     12.4.3 多行导入     12.4.4 扩展的import语句(as)    12.5 模块导入的特性     12.5.1 载入时执行模块     12.5.2 导入(import)和加载(load)     12.5.3 导入到当前名称空间的名称     12.5.4 被导入到导入者作用域的名字     12.5.5 关于__future__     12.5.6 警告框架     12.5.7 从zip文件中导入模块     12.5.8 “新的”导入钩子    12.6 模块内建函数     12.6.1 __import__()     12.6.2 globals()和locals()        12.6.3 reload()    12.7 包     12.7.1 目录结构     12.7.2 使用from-import导入包    12.8 模块的其他特性     12.8.1 自动载入的模块     12.8.2 阻止属性导入     12.8.3 不区分大小的导入     12.8.4 源代码编码     12.8.5 导入循环     12.8.6 模块执行    12.9 相关模块    12.10 练习   第13章 面向对象编程    13.1 引言    13.2 面向对象编程     13.2.1 面向对象设计与面向对象编程的关系     13.2.2 现实中的问题     13.2.3 *常用术语    13.3 类     13.3.1 创建类     13.3.2 声明与定义    13.4 类属性     13.4.1 类的数据属性     13.4.2 methods     13.4.3 决定类的属性     13.4.4 特殊的类属性    13.5 实例     13.5.1 初始化:通过调用类对象来创建实例     13.5.2 __init__()“构造器”方法     13.5.3 __new__()“构造器”方法     13.5.4 __del__()“解构器”方法    13.6 实例属性     13.6.1 “实例化”实例属性(或创建一个更好的构造器)     13.6.2 查看实例属性     13.6.3 特殊的实例属性     13.6.4 建类型属性     13.6.5 实例属性vs类属性    13.7 绑定和方法调用     13.7.1 调用绑定方法     13.7.2 调用非绑定方法    13.8 静态方法和类方法     13.8.1 staticmethod()和classmethod()内建函数     13.8.2 使用函数修饰符    13.9 组合    13.10 子类和派生    13.11 继承     13.11.1 __bases__类属性     13.11.2 通过继承覆盖方法     13.11.3 从标准类型派生     13.11.4 多重继承    13.12 类、实例和其他对象的内建函数     13.12.1 issubclass()     13.12.2 isinstance()     13.12.3 hasattr()、getattr()、setattr()、delattr()     13.12.4 dir()     13.12.5 super()     13.12.6 vars()    13.13 用特殊方法定制类     13.13.1 简单定制(roundfloat2)     13.13.2 数值定制(time60)     13.13.3 迭代器(randseq和anyiter)     13.13.4 *多类型定制(numstr)    13.14 私有化    13.15 *授权     13.15.1 包装     13.15.2 实现授权    13.16 新式类的高级特性(python 2.2+)     13.16.1 新式类的通用特性     13.16.2 __slots__类属性     13.16.3 __getattribute__()特殊方法     13.16.4 描述符     13.16.5 元类和__metaclass__    13.17 相关模块和文档    13.18 练习   第14章 执行环境    14.1 可调用对象     14.1.1 函数     14.1.2 方法     14.1.3 类     14.1.4 类的实例    14.2 代码对象    14.3 可执行的对象声明和内建函数     14.3.1 callable()     14.3.2 compile()     14.3.3 eval()     14.3.4 exec     14.3.5 input()     14.3.6 使用python在运行时生成和执行python代码    14.4 执行其他(python)程序     14.4.1 导入     14.4.2 execfile()     14.4.3 将模块作为脚本执行    14.5 执行其他(非python)程序     14.5.1 os.system()     14.5.2 os.popen()     14.5.3 os.fork()、os.exec*()、os.wait*()     14.5.4 os.spawn*()     14.5.5 subprocess 模块     14.5.6 相关函数    14.6 受限执行    14.7 结束执行     14.7.1 sys.exit() and systemexit     14.7.2 sys.exitfunc()     14.7.3 os._exit() 函数     14.7.4 os.kill() function    14.8 各种操作系统接口    14.9 相关模块    14.10 练习  第2部分 高级主题  第15章 正则表达式    15.1 引言/动机    15.2 正则表达式使用的特殊符号和字符     15.2.1 用管道符号(
python2.7栅格数据批量转换投影:ProjectRaster_management (in_raster, out_raster, out_coor_system, {resampling_type}, {cell_size}, {geographic_transform}, {Registration_Point}, {in_coor_system}) in_raster 输入栅格数据集。Mosaic Layer; Raster Layer out_raster 要创建的输出栅格数据集。以文件格式存储栅格数据集时,需要指定文件扩展名,具体如下:.bil - Esri BIL, .bip - Esri BIP, .bmp - BMP, .bsq - Esri BSQ, .dat - ENVI DAT,.gif - GIF,.img - ERDAS IMAGINE,.jpg - JPEG,.jp2 - JPEG 2000,.png - PNG,.tif - TIFF,无扩展名 - Esri Grid,以地理数据库形式存储栅格数据集时,不应向栅格数据集的名称添加文件扩展名。 将栅格数据集存储到 JPEG 文件、JPEG 2000 文件、TIFF 文件或地理数据库时,可以指定压缩类型和压缩质量。 Raster Dataset out_coor_system 输入栅格待投影到的目标坐标系。默认值将基于“输出坐标系”环境设置进行设定。该参数的有效值是扩展名为 .prj 的文件。现有要素类、要素数据集、栅格目录(基本上包含了与坐标系相关的所有内容)。坐标系的字符串表示。要生成此类较长的字符串,可向模型构建器添加一个坐标系变量,并根据需要设置该变量的值,然后将模型导出到 Python 脚本。 Coordinate System resampling_type (可选) 要使用的重采样算法。默认设置为 NEAREST。 NEAREST —最邻近分配法 BILINEAR —双线性插值法 CUBIC —三次卷积插值法 MAJORITY —众数重采样法 NEAREST 和 MAJORITY 选项用于分类数据,如土地利用分类。NEAREST 选项是默认设置,因为它是最快的插值法,同时也因为它不会更改像元值。请勿对连续数据(如高程表面)使用 NEAREST 或 MAJORITY。BILINEAR 选项和 CUBIC 选项最适用于连续数据。不推荐对分类数据使用 BILINEAR 或者 CUBIC,因为像元值可能被更改。 cell_size (可选) 新栅格数据集的像元大小。默认像元大小为所选栅格数据集的像元大小。 Cell Size XY geographic_transform (可选) 在两个地理坐标系或基准面之间实现变换的方法。当输入和输出坐标系的基准面相同时,地理(坐标)变换为可选参数。如果输入和输出基准面不同,则必须指定地理(坐标)变换。 有关各个受支持的地理(基准面)变换的详细信息,请参阅位于 ArcGIS 安装目录的 \Documentation 文件夹下的 geographic_transformations.pdf 文件。 Registration_Point(可选)用于对齐像素的 x 和 y 坐标(位于输出空间中)。配准点的工作原理与捕捉栅格的概念类似。通过配准点可指定用于定位输出像元的原点,而不是仅将输出捕捉到现有栅格像元。所有输出像元与该点之间必须间隔一个像元。该点的坐标不必位于一角,也不必落入栅格数据集中。捕捉栅格环境设置参数将优先于 Registration_Point 参数。因此,如果您要设置配准点,请确保尚未设置捕捉栅格。 in_coor_system (可选) 输入栅格数据集的坐标系。Coordinate System

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值