怎样使生成的打印条码分辨率变低但不影响使用? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
a1609
V2EX    Java

怎样使生成的打印条码分辨率变低但不影响使用?

  •  
  •   a1609 2020-07-06 08:23:53 +08:00 4226 次点击
    这是一个创建于 2003 天前的主题,其中的信息可能已经有所发展或是发生改变。

    系统要生成多个条码然后打印成 pdf, 现在 pdf 过大,导致下载和系统响应不过来。 求如何压缩图片质量或 pdf 质量? java 开发环境

    32 条回复    2020-07-27 14:23:19 +08:00
    opengps
        1
    opengps  
       2020-07-06 08:31:15 +08:00
    必须用 pdf 格式吗?这里即使换了其他格式,提升未必明显,毕竟内容摆在那里。
    建议考虑另外 2 个问题:
    1,动态生成一个 pdf 文件,本身就快不了多少。为了不卡住系统,起码得另起线程进程甚至另外用单独服务器处理生成过程。
    2,对于动态生成 pdf 大文件,不适合实时下载。可以提供邮箱发送、轮训检查生成结果、稍后下载等方案免除实时要求
    tankren
        2
    tankren  
       2020-07-06 08:56:34 +08:00
    nicelabel 了解一下?
    sleepm
        3
    sleepm  
       2020-07-06 09:00:28 +08:00 via Android
    调低分辨率参数
    然后尝试扫码
    只要条码能看清,然后拉够长和宽就行
    分辨率过高,生成的时候 cpu 占用高,生成的文件也大,但是它的长宽就那么大。。。所以看你用的哪个库,能不能调分辨率参数
    sivacohan
        4
    sivacohan  
    PRO
       2020-07-06 09:02:54 +08:00
    PDF417 ?
    sleepm
        5
    sleepm  
       2020-07-06 09:05:51 +08:00 via Android   1
    不对啊,条码一般没有分辨率参数,二维码有
    生成的条码是矢量的,然后调高度就行了
    a1609
        6
    a1609  
    OP
       2020-07-06 09:41:32 +08:00
    @sleepm 您说的这种是图片的调整。调整矢量的话,尺寸大小也会改变,我们是需要那种条码标签打印的,标签纸大小不变,条码尺寸不变。
    a1609
        7
    a1609  
    OP
       2020-07-06 09:43:53 +08:00
    @opengps 我们的友商 1500 个条码的 pdf 文件是 80kb,我们目前的是 8.7M,再大一点就卡死了
    所以即时另起线程,下载等待时间也不一样
    lovestudykid
        8
    lovestudykid  
       2020-07-06 09:46:42 +08:00
    pdf 本来就可以设 PPI 啊
    a1609
        9
    a1609  
    OP
       2020-07-06 09:47:06 +08:00
    @sivacohan 不是,是 Code128,商品的竖纹条码那样的的
    lsylsy2
        10
    lsylsy2  
       2020-07-06 09:54:00 +08:00
    @a1609 确定是矢量吗?怎么听着像是“打印”的时候有转换
    用 word 打开 pdf,看看里面是不是还是分开的条码,每张图片多大?
    sivacohan
        11
    sivacohan  
    PRO
       2020-07-06 10:54:50 +08:00   1
    https://fonts.google.com/specimen/Libre+Barcode+128+Text#standard-styles
    你看下这个,用字体来生成 bar code 。
    jiejiss
        12
    jiejiss  
       2020-07-06 11:04:27 +08:00
    a1609
        13
    a1609  
    OP
       2020-07-06 11:16:59 +08:00
    @sivacohan 是的,我们现在已经能生成 code,并且多个 code 放在一起变为 pdf 文件进行打印,但是大小有点过大了,需要优化
    a1609
        14
    a1609  
    OP
       2020-07-06 11:20:38 +08:00
    @lsylsy2 用 word 打开感觉像是 pdf 转换成了 word 呀,目前效果是里面是整张图片
    具体流程是系统将生成的条码按个数生成一个 pdf 文件,一页会有多个条码。
    但是我们生成的 pdf 文件比友商的要大几十倍,导致下载和加载都比较慢
    lsylsy2
        15
    lsylsy2  
       2020-07-06 11:23:32 +08:00
    @a1609 里面整张图片应该有问题,就是你的“打印成 pdf”这步有问题,把整个页面渲染成了一张图片,然后图片没压缩体积就大了
    正确的应该是 word 打开虽然可能排版有问题,但条码图片还是一个一个分开的
    lsylsy2
        16
    lsylsy2  
       2020-07-06 11:24:20 +08:00
    @a1609 本质就是别人的转换 pdf 相当于写一段文字保存一个 word 文件,而你是屏幕截图然后把截图贴进 word 保存
    ryh
        17
    ryh  
       2020-07-06 11:30:08 +08:00
    @a1609 #11 楼的意思是 pdf 里嵌入这个 38.0 KB 的字体, 然后生成的 barcode 全是文字 所以保存很多条码(实际上是文字) 也不会显著增加文件大小
    vcijj
        18
    vcijj  
       2020-07-06 11:32:00 +08:00
    有没有办法以纯矢量的形式或者以字符的形式保存,以图片内容必然大呀
    jfcai
        19
    jfcai  
       2020-07-06 11:59:52 +08:00 via Android
    @ryh 我也觉得嵌入字体是个好方法。
    a1609
        20
    a1609  
    OP
       2020-07-06 13:08:29 +08:00
    @lsylsy2 就是我们将条码生成了一张大的图片保存为 pdf,所以 pdf 比较大的意思吗?那先试试看,谢谢
    a1609
        21
    a1609  
    OP
       2020-07-06 13:10:48 +08:00
    @ryh 不太懂,是条码实际是字符组成还是字符转换为条码呀?
    我们是字母+数字的组合,转换为条码,然后确认条码数量转换为 pdf,最后打印 pdf 这样一个流程。
    RadishWind
        22
    RadishWind  
       2020-07-06 13:25:05 +08:00
    @a1609 1.矢量图 2.降低图片分辨率 3.降低 QRcode 的质量(容错率) 4.方便看看你的格式有多长吗? 5.图片压缩后放进 pdf 试试
    MooRider
        23
    MooRider  
       2020-07-06 13:25:23 +08:00
    你现在保存的是图片, 再怎么压缩也不可能比纯文字保存体积小.
    所以思路是不保存一维码为图片, 而是使用楼上那个字体将一维码转换为文字保存. 从而减小体积
    就像扫描版图书和文字版图书转换为 pdf 一样, 体积相差好几十倍
    ppgs8903
        24
    ppgs8903  
       2020-07-06 13:32:15 +08:00
    换劣质墨水
    sivacohan
        25
    sivacohan  
    PRO
       2020-07-06 13:43:49 +08:00
    你要是想折腾,可以用我提到的字体,来拼 barcode 。你需要计算每个字体的大小。
    如果你不想折腾,那就买 adobe acrobat pro dc,具体操作方法可以参照这篇文章
    https://www.evermap.com/AddingBarcodeField.asp
    sampeng
        26
    sampeng  
       2020-07-06 20:49:14 +08:00 via iPhone
    我想问…为什么要保存成图片…如果是为了打印,直接调用打印机接口不行么
    a1609
        27
    a1609  
    OP
       2020-07-07 14:10:50 +08:00
    试了下字体,本地能够生成条码了,大小也大幅压缩,但是今天上传到阿里云 linux 系统中,就出现找不到该文件的错误,求解
    a1609
        28
    a1609  
    OP
       2020-07-07 14:11:35 +08:00
    已换成字符,确实文件大小小超级多
    a1609
        29
    a1609  
    OP
       2020-07-07 14:12:59 +08:00
    已换成字符打印,生成的 pdf 变小了,本地运行没问题,但是上传到 lunix 服务器中报错,没有出来 pdf 的内容
    a1609
        30
    a1609  
    OP
       2020-07-07 14:14:18 +08:00
    @sivacohan 试了下字体,本地能够生成条码了,大小也大幅压缩,但是今天上传到阿里云 linux 系统中,就出现找不到该文件的错误,pdf 生成的页面为 404
    求解
    a1609
        31
    a1609  
    OP
       2020-07-07 14:18:27 +08:00
    @lsylsy2 已采用 Libre Barcode 128 Text 的格式,就是现在再 linux 上执行还是有错误
    a1609
        32
    a1609  
    OP
       2020-07-27 14:23:19 +08:00
    该问题已解决,采用 Libre Barcode 128 Text 的格式
    不过 linux 系统中需要加载一个语言字体包
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     953 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 19:22 PVG 03:22 LAX 11:22 JFK 14:22
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86