標籤:style color java 使用 os ar 問題 代碼
剛來新公司第二天,提了一個問題給我處理。
將圖片產生到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。