刚来新公司第二天,提了一个问题给我处理。
将图片生成到pdf里面结果图片的DPI 与生成之后PDF 分辨率不一样导致打印出来的不行。
之前一直没有接触过DPI 不知是什么,没办法,只能百度。
DPI:“dot per inch”的缩写,就是指在每英寸长度内的点数。在Photoshop中文版中可以看到中文解释是“分辨率”的一种表示方式——“像素/英寸”,也就是英寸的像素点。 DPI越大,像素数越高;一般电脑中所需要的dpi数为72;而相片冲印和印刷则需要300dpi.
知道图片的DPI 但是PDF 的DPI 估计也是一样的。但是不知道怎么查看。度娘告诉我用ps可以看,下了ps。查看生成之后的PDF 原来就是PS工具栏中图像里的图像大小,一看分辨率是72。
刚开始以为PDF的pdi 跟图片有关系,只要设置了图片的DPI就行了。
设了半天不行。原本我的图片DPI就是96。为什PDF生成的总是72。
研究itextpdf 里面看了半天都没有关于DPI的东西可以设置。(哎,研究能力太弱)
然后放弃使用Itexpdf 。
使用几种操作pdf 的类库,各种强大但是都没有介绍关于DPI的东西。(整的头痛)
看了PDFRenderer ,但是人家只是读pdf的操作,而且很久没人维护了。
又看了ICEpdf 看了半天也没找。
在找,看到了pdfjet ,感觉里面里面又有dome 比较全。
找了一个Example_03.java 做了测试。用ps看了下dpi 变了,查看每句代码
终于看到有一个方法Image.scaleBy可以设置,但是里面该设置啥。
各种尝试 先设置1f 结果是DPI 是72。
我想把DPI变成96 反算下72/96=0.75 设置0.75f
结果pdf的DPI真的变成96。
返回项目中的代码看看itexpdf 也有这个方法叫 scalePercent 但是百分比这种方式。
Image jpeg; jpeg = Image.getInstance(buffimg, null); jpeg.scalePercent(75f);
设置一个75f dpi改变了。终于可以解决了。
唉不容易呀,折腾了1.5d。
Itextpdf 设置pdf 的分辨率(dpi)
时间: 2024-10-12 20:11:36