创建轻量级文档

问题描述 投票:0回答:1

Konica Bizhub 扫描仪和打印机能够在 300 DPI 彩色模式(称为紧凑模式)下创建轻量级 pdf 文件。

这样的文件真的很小(最多200 KB)。当你放大时,它看起来是一张 2 色图片, 但是包含颜色部分(如果有的话)。

作为一名程序员,我正在寻找从“原始”扫描图像(bmp、tiff 等)创建此类文件的方法,以大幅减少输出图像的大小,但通常要实现 Konica 所做的事情。

谁能建议我应该对原始图像执行什么操作来实现类似的效果?

或者也许有第 3 方库可用于这种场合?

pdf-generation
1个回答
0
投票

作为软件编程仿真练习,我们需要考虑扫描固件和 PDF 软件如何完成任务。

背景资料
扫描仪使用多种方法来保存页面数据,因此“相机”类型的扫描仪将以最大 RAW 分辨率截取整页屏幕截图,而“一体式”扫描仪可能会吞下整个宽度并转储为数据带,或者一次解析一个像素行并在文件压缩阶段组合成一个完整的“页面”。还有其他方法,例如固定头WIDE马车“CCD相机”是静止的,媒体在头上移动,然后逐行存储像素。

在大多数情况下,需要大量内存来缓冲完全未压缩的扫描页面。

未压缩的“位图图像”没有严格的格式,但可以转换为无损或有损图像。

从示例中可以看出,在不阅读手册的情况下,在这种情况下,缓冲区被解析为单色区域,然后将其转换为 2 色位掩码,具有无损高分辨率(300 dpi 密度压缩到 CCITT G4)和剩余区域以较低密度(相当于 150 dpi)存储为有损全彩色压缩 Jpeg

然后将 Jpeg 用作背景,CCITT 区域在其上盖章。这里是定义图像的点,它是低阶对象(#3),但在定义所有其他页面相关区域之后在过程的后期写入。

3 0 obj
<</JI1Obj1 5 0 R
/TI1Obj1 7 0 R
/TI1Obj2 9 0 R
/TI1Obj3 11 0 R
>>

我们可以将其解释为

  • /Jpeg1 对象 1 = 对象 5 = /Width 1240 /Height 1754 /BitsPerComponent 8 /ColorSpace /DeviceRGB
  • /TIff1 对象 1 = 对象 7 = /CCITTFaxDecode ... /Width 1912 /Height 464 /BitsPerComponent 1 ... /ImageMask true
  • /TIff1 对象 2 = 对象 9 = /CCITTFaxDecode ... /Width 1904 /Height 1172 /BitsPerComponent 1 ... /ImageMask true
  • /TIff1 对象 3 = 对象 11 = /CCITTFaxDecode ... /Width 1904 /Height 563 /BitsPerComponent 1 ... /ImageMask true

不太明显的是如何在页面的遮罩中定义单一颜色。

在布置中完成

4 0 obj
<</Length 503>>
stream
q
595.200 0.000 0.000 841.680 0.000 0.000 cm
/JI1Obj1 Do
Q
0.957 0.396 0.388 rg
q
458.880 0.000 0.000 111.360 71.040 517.200 cm
/TI1Obj1 Do
Q
0.110 g
q
456.960 0.000 0.000 281.280 71.040 58.320 cm
/TI1Obj2 Do
Q
0.133 g
q
456.960 0.000 0.000 128.640 71.040 640.080 cm
/TI1Obj3 Do
Q

所以首先使用多色低分辨率 jpg 作为主体,然后将颜色设置为红色 并带有蒙版叠加。
然后将一张图像设置为炭灰色/蓝色 1
和不同的平均墨水颜色炭灰色/蓝色 2

因此,只要知道放置区域和它们的平均墨水颜色,构建这样一个紧凑的格式就相对简单了。

© www.soinside.com 2019 - 2024. All rights reserved.