Coding on PDF

Coding on PDF

跟ChatGPT磨了三天,發出了上百道問題,就為了這幾個程式碼!

"{0.81 exp}{1.02 exp}{0.86 exp}{0.83 exp} setcolortransfer"

先說這幾個程式碼是幹嘛用的?

這一段程式碼可以讓 pdf 檔的C50%降到43%、M50%升到51%、Y50%降到45%、K50%降到44%。

Fig. "{0.81 exp}{1.02 exp}{0.86 exp}{0.83 exp} setcolortransfer" 這一段程式碼可以讓 pdf 檔的C50%降到43%、M50%升到51%、Y50%降到45%、K50%降到44%。

這幾個程式碼在我的工具架構裡面會是非常重要的一段。

從一開始撰寫工具程式,目的就是要以最精簡快速的方式來達成輸出的品質控管。

從最早的Excel Macro到後來能用SDK取得光譜數據交由php、autoit、javascript、python…做後續處理,每一次的累積都是為了加快速度與方便性。

當我們要把輸出品質帶到某一個位置(灰平衡)的時候,不外乎動機器、動印版,或是動影像檔。

我的工具發展一直在這幾個面向做快速的輔助。

之前其中一個工具可以輸出.acv檔來改變影像檔,它的程序是:用Photoshop打開影像檔,載入acv來改變版調,儲存檔案,然後供輸出使用。

這個acv工具在使用上的問題是:

  1. 必須開啟photoshop。

  2. 只能處理像素檔。

  3. 批次處理還需要另外做程序。

而實際的生產狀況是以pdf為主,acv的方法可以處理問題( PDF轉JPG/TIF,套用曲線後輸出),但在實際的生產單位効能太低。

如果曲線功能能直接用在PDF檔,不是更有效率,更直接嗎?

這個題目一直都存在,但一直覺得沒有能力處理。

ChatGPT 的出現讓我重新開始去接觸以前不敢做的題目。

比如前一個以相機影像做爲 icc Profile 數據參考的案例,在同事的模板與ChatGPT 不斷的追問下,成功的以Python Open CV達成從影像中成功擷取出必要的影像範圍,讓整個工作流程更為流暢。

Fig. 以Python Open CV 自動截取紅框與藍框的範圍。

Fig. Python OpenCV code on maskout Red Frame.

以指令改變PDF版調這個題目,也就這樣跟ChatGPT磨了三四天。

ChatGPT 提供的大原則基本上沒有問題,具參考價值,但細節的處理不夠精確就始終得不到可以運作的程式碼。

以我一連串其中一個發問為例:I’d like to apply cyan 50% to 43%, magenta 50% to 51%, Yellow 50% to 45% and black 50% to 44%, put it in one command line.

ChatGPT 給我這樣的碼:

gs -o output.pdf -sDEVICE=pdfwrite -c "{0.43 exp 0.51 exp 0.45 exp 0.44 exp} settransfer" -f input.pdf

怎麼跑都跑不出我要的結果。

各種方式的追問,始終得不到我要的結果。不是結果錯誤,就是出現錯誤訊息,無法運作。

一樣經由ChatGPT去瞭解postscript的指令與語法,終於歸納出我要的規則。

ChatGPT提出的語法,至少有兩個錯誤一直沒有被處理到,導致鬼打牆的三天來套出不出正確的碼。

  1. 即然用的是exp(exponential, 指數函數) curve function,就不應該直接把0.43(50% to 43%)放上去,應該放相對對數(log)。

  2. 當處理的是CMYK檔案時,是一種減色法的格式,與加色法(RGB)版調呈反向進行。所以要取的對數,還必須用1去減。

兩個問題理清之後, ChatGPT提供的語法就可以派上用場,得到正確的結果。

把規則理清後的結果是:

當要把50%處降到43%時,要取的系數是:=0.81,
in excel: =LOG((1-0.43),0.50)

配合ghostscript的單一指令為:

gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=output.pdf -c"{0.81 exp}{1.02 exp}{0.86 exp}{0.83 exp} setcolortransfer" -f input.pdf

Fig. pdf 原檔(左)與ghostscript處理過後的pdf檔。

以上,花了三天取得的單行程式碼,配合灰平衡邏輯,可以實現批次pdf版調改寫,以最快的效率達成灰平衡的品貭控管。

雖然祇有幾十個字的程式碼,但在我的工具架構裡,很重要。與 photoshop acv的工作方法相比,快上太多了。

Be the first to like.
pixelstats trackingpixel

無迴響

rssComments RSS   transmitTrackBack Identifier URI

No comments. Be the first.

addLeave a comment