系统要生成多个条码然后打印成 pdf, 现在 pdf 过大,导致下载和系统响应不过来。 求如何压缩图片质量或 pdf 质量? java 开发环境
系统要生成多个条码然后打印成 pdf, 现在 pdf 过大,导致下载和系统响应不过来。 求如何压缩图片质量或 pdf 质量? java 开发环境
|
opengpsJul 6, 2020
1
必须用 pdf 格式吗?这里即使换了其他格式,提升未必明显,毕竟内容摆在那里。
建议考虑另外 2 个问题: 1,动态生成一个 pdf 文件,本身就快不了多少。为了不卡住系统,起码得另起线程进程甚至另外用单独服务器处理生成过程。 2,对于动态生成 pdf 大文件,不适合实时下载。可以提供邮箱发送、轮训检查生成结果、稍后下载等方案免除实时要求 |
|
tankrenJul 6, 2020
2
nicelabel 了解一下?
|
|
sleepmJul 6, 2020 via Android
3
调低分辨率参数
然后尝试扫码 只要条码能看清,然后拉够长和宽就行 分辨率过高,生成的时候 cpu 占用高,生成的文件也大,但是它的长宽就那么大。。。所以看你用的哪个库,能不能调分辨率参数 |
|
sivacohanJul 6, 2020
4
PDF417 ?
|
|
5
不对啊,条码一般没有分辨率参数,二维码有
生成的条码是矢量的,然后调高度就行了 |
|
lovestudykidJul 6, 2020
8
pdf 本来就可以设 PPI 啊
|
|
11
https://fonts.google.com/specimen/Libre+Barcode+128+Text#standard-styles
你看下这个,用字体来生成 bar code 。 |
|
jiejissJul 6, 2020
12
|
|
14
@lsylsy2 用 word 打开感觉像是 pdf 转换成了 word 呀,目前效果是里面是整张图片
具体流程是系统将生成的条码按个数生成一个 pdf 文件,一页会有多个条码。 但是我们生成的 pdf 文件比友商的要大几十倍,导致下载和加载都比较慢 |
|
lsylsy2Jul 6, 2020
15
@a1609 里面整张图片应该有问题,就是你的“打印成 pdf”这步有问题,把整个页面渲染成了一张图片,然后图片没压缩体积就大了
正确的应该是 word 打开虽然可能排版有问题,但条码图片还是一个一个分开的 |
|
ryhJul 6, 2020
17
@a1609 #11 楼的意思是 pdf 里嵌入这个 38.0 KB 的字体, 然后生成的 barcode 全是文字 所以保存很多条码(实际上是文字) 也不会显著增加文件大小
|
|
vcijjJul 6, 2020
18
有没有办法以纯矢量的形式或者以字符的形式保存,以图片内容必然大呀
|
|
21
@ryh 不太懂,是条码实际是字符组成还是字符转换为条码呀?
我们是字母+数字的组合,转换为条码,然后确认条码数量转换为 pdf,最后打印 pdf 这样一个流程。 |
|
RadishWindJul 6, 2020
22
@a1609 1.矢量图 2.降低图片分辨率 3.降低 QRcode 的质量(容错率) 4.方便看看你的格式有多长吗? 5.图片压缩后放进 pdf 试试
|
|
MooRiderJul 6, 2020
23
你现在保存的是图片, 再怎么压缩也不可能比纯文字保存体积小.
所以思路是不保存一维码为图片, 而是使用楼上那个字体将一维码转换为文字保存. 从而减小体积 就像扫描版图书和文字版图书转换为 pdf 一样, 体积相差好几十倍 |
|
ppgs8903Jul 6, 2020
24
换劣质墨水
|
|
sivacohanJul 6, 2020
25
你要是想折腾,可以用我提到的字体,来拼 barcode 。你需要计算每个字体的大小。
如果你不想折腾,那就买 adobe acrobat pro dc,具体操作方法可以参照这篇文章 https://www.evermap.com/AddingBarcodeField.asp |
|
sampengJul 6, 2020 via iPhone
26
我想问…为什么要保存成图片…如果是为了打印,直接调用打印机接口不行么
|
|
27
试了下字体,本地能够生成条码了,大小也大幅压缩,但是今天上传到阿里云 linux 系统中,就出现找不到该文件的错误,求解
|
|
28
已换成字符,确实文件大小小超级多
|
|
29
已换成字符打印,生成的 pdf 变小了,本地运行没问题,但是上传到 lunix 服务器中报错,没有出来 pdf 的内容
|
|
30
@sivacohan 试了下字体,本地能够生成条码了,大小也大幅压缩,但是今天上传到阿里云 linux 系统中,就出现找不到该文件的错误,pdf 生成的页面为 404
求解 |
|
32
该问题已解决,采用 Libre Barcode 128 Text 的格式
不过 linux 系统中需要加载一个语言字体包 |