我想为一些学术工作创建一个矩阵的可视化。我决定通过让图像中的像素与矩阵中的值相对应来实现这一点。我创建了以下漂亮的小png:
的数据
当适当放大时,你会得到一个非常合理的图像:
的
这是一个来自inkscape的屏幕截图。然而,当我将其导出为pdf时,evince和Chrome都在提升应该非常琐碎的内容方面做得很糟糕,相反,我得到了看起来像这样的东西:
的
PDF本身似乎可以很好地进行打印,但不幸的是,我做了很多编辑而没有打印,这看起来是不可接受的。我确实发现了一个令人难以置信的旧线程,关于人们似乎有一个类似的问题与Chrome的PDF查看器,“解决方案”只是升级光栅图形。这是一个解决方案,但效率非常低。
有没有人知道一种方法来改变pdf,使它得到适当的升级?也许在evince或Chrome的配置变化,将这些正确渲染?甚至一个很好的方式从光栅图像到矢量图像可能是合适的?
2条答案
按热度按时间wvt8vs2t1#
PDF中的图像字典有一个(可选)布尔条目Interpolate。它被指定为一个 * 标志,指示图像插值是否应由符合要求的读者 * 执行。
OP用来创建PDF的程序Inkscape似乎已经显式地将此标志设置为true。编辑PDF以取消设置此标志将创建一个看起来与OP所需的文件。
(This也是OP最终找到的这个Inkscape forum thread中提出的一个解决方案,就是保存嵌入了高分辨率位图的PDF。File -> Inkscape Preferences -> Bitmaps -> Resolution for Create Bitmap Copy,并将其设置为6000 dpi)
插值在不同的查看器和不同的输出媒体中看起来不同,这是设计的。PDF规范对插值进行了说明:
一个合格的读者可以选择不实现PDF的这个功能,或者可以使用任何特定的插值实现,它的愿望。
解决这个问题的另一种方法(特别是当一些PDF查看器倾向于不真正符合规范,例如忽略该标志进行插值)是在这里使用矢量图形,将位图像素绘制为矩形。结果应该是最佳的。
t3psigkw2#
在通用查看器中,JPEG和PNG的处理方式可能不同。所以我支持SumatraPDF,有些用户会抱怨同一来源的不同方式。但是,当像素定义良好(不是无损)时,它们应该是清晰的。
这是一个相同的PDF文件,不同的观众。* 注意 * 图像是一个3像素的PDF 3像素“放大”的PDF,但在这里所有的观众设置为50%缩放。然后提出问题,50%的什么?因为存在视差。特别是左下X-pdf和谷歌顶部中心。Evince是右上角的谷歌浏览器边缘是背景和IrfanView图形查看器中心左。Firefox PDF.js是一个没有标志,右中下部。
x1c 0d1x的数据
好吧,那么哪里有问题呢?同样的文件,同样的比例,同样的图像放大2倍,因此有不同的解释。
的
所以Adobe(右下)设定了一个标准,Xpdf(左下)和PDF.js(右下中)一样保持紧密联系。
可悲的是,evince似乎票价最差,但它是一个非常古老的版本。
那么为什么其他三个人都同意,这是因为这就是JPEG被定义为重叠的颜色。但是他们都可以完美地处理任何比例或放大的像素数量。所以Chrome,Evince和SumatraPDF甚至IrfanView都可以在放大的PDF中显示完美的像素。那么这个文件有什么不同呢(除了我重新缩放更多的水平比垂直)的图像仍然是两倍的6 x 6像素的两倍宽度。
答案是
JPEG是无损的,所以它的100%质量与二次采样关闭。然后,即使Evince可以处理JPEG像素完美。文件大小1.45 KB(1,493字节)。基于18 x 8像素在任何比例。https://docdro.id/dAVAukU