2015年9月15日火曜日

Illustrator PDFにおける特色設定の入り方について覚書

ページエントリのReources/ColorSpace/[リソース名]下のカラースペースエントリとして設定される。

カラースペースの種類:Separation

PDF上は以下のように設定される。

[/Separation /[特色名] /[代替え色の種類(AIはデバイスカラー)] <<代替え色の変換関数>>]

特色名:AI CS3ではSJISエンコーディングされた文字が設定されました。
代替え色の種類は以下の通りです。

AIの設定 PDF上のカラースペース
CMYK -> DeviceCMYK
RGB -> DeviceRGB
GrayScale -> DeviceCMYK
HSB -> DeviceRGB
Lab -> Lab

代替え色の変換関数は以下の通りです。

FuntionType : 2(指数補間)関数
N : 1
C0 : GrayScale/CMYKは全て0.0, RGB/HSBは全て1.0
C1 : 各成分の設定値
Domain : [0 1]
Range : [0 1 ...]

つまり、0~1の範囲の値について1の時に設定した代替えカラーになるように調整されているという感じです。
なので、初期設定時のコンテンツストリーム側を見ると

/CS1 cs 1 scn

というようになっています。
これを、特色「カラー」のスライダーを変更すると0~1の範囲で値が切り替わります。

代替えカラーは指数補間ですが、N=1なので

代替え色[j] = C0[j] + 設定値^N * (C1[j] - C0[j])
=> 0 + 設定値 * (C1[j] - 0)
=> 設定値 * C1[j]

となります。

2015年9月11日金曜日

Jenkinsでc:\windows\system32下にアクセスできない件

自動ビルドされたバイナリにバージョン番号を設定するため

verpatch.exe

を使ってファイルのプロパティにバージョン番号やらを設定していた。
便利だと思って、c:\windows\system32下に放り込んでいたのですが、
出来上がったバイナリにバージョン番号が全く埋め込まれておらず
確認したところ、

'c:\Windows\system32\verpatch.exe' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。


というようなメッセージがログに出力されていた。
バッチファイルでは普通に実行できたのにファイルの権限にUsersに
フルコントロールを設定しても症状改善せず。

結局、Dドライブの適当なフォルダに突っ込んでやったらうまく動作した。

というわけで、


  • jenkinsで動かす可能性のあるexeファイルはsystem32に入れないようにしましょう。
というお話です。



2015年9月4日金曜日

jenkinsのバッチ実行エラーの対処

jenkinsを使ってwixでインストーラを作成しているケースで嵌ったのでメモ

wixのlight.exeでインストーラを作っているのですが、インストーラ自体はできていて、それを使って問題なくインストールもできているのですが、light.exeの戻り値が204を返してきてjenkinsのバッチ実行がエラーになってしまう問題の対処。

→ 実行するバッチファイルの最後に「cd ..」を追記する。

cdコマンドが0を返すのでエラーにならずにすむ。
これでいいのかわからないけど、、、、


IF %ERRORLEVEL%=244 SET ERRORLEVEL=0

とかにしてもいいのかな?

2015年7月27日月曜日

VS.NET 2015でopensslをビルドするときのメモ

__iob_funcが未定義と怒られたので調べてみた自分用メモ
これはstdin/stdout/stderrのdefineが変わっているのが原因のようだ。

以下の修正をすることで解消。

修正ファイル:e_os.h

300行目付近で

#          define stdin  (&__iob_func()[0])
#          define stdout (&__iob_func()[1])
#          define stderr (&__iob_func()[2])


となっている箇所を

#          define stdin  (__acrt_iob_func(0))
#          define stdout (__acrt_iob_func(1))
#          define stderr (__acrt_iob_func(2))

と変更してやる。

もしくは、

#ifマクロで「_MSC_VER>=1900」の場合だけ「__acrt_iob_func」に
変更するように修正を入れる。

2015年2月5日木曜日

PDFにおけるCMYKのDCTDecode(JPEG)の色反転について

反転するケースと反転しないケースがあり、反転しない場合と反転する場合の条件とIllustratorにおけるCMYKJpegの扱いについてまとめます。


  • 反転するケースと反転しないケースの別について
基本的には/Type = Image, /Filter = DCTDecodeで色空間がCMYKの場合、各値が「0」を100%の塗り、「255」を0%の塗りとして扱います。
→なのでPDFから該当イメージのデータを引っこ抜くとポジネガ反転したようなJPEGになります。

次に、反転してないCMYKJPEGが貼りこんであるにもかかわらず、Acrobat表示が反転してないケースのコントロールは、イメージオブジェクトの/Decodeエントリでコントロールされます。
Decodeエントリは各色要素の[最小値0, 最大値0, 最小値1, 最大値1, ...... 最小値N, 最大値N]という設定となっています。
CMYKデータの場合、Nは4なのでDecodeエントリの配列には8つの値が設定されている事になります。

もし、Decodeエントリがない場合は、最小値 => 255, 最大値 => 0という扱いになりますが、反転してないCMYKJPEGの場合、Decodeエントリは大抵以下のように設定されています。

/Decode [1.0 0.0 1.0 0.0 1.0 0.0 1.0 0.0]

上記の通り、最小値 > 最大値なので各要素の値を反転するという意味になります。
そのため、ポジネガ反転してないCMYKのJPEGでも正しく表示されるということになります。

※FlateDecodeの場合は、0が素直なのですが、CMYKのJPEGだけそんな扱いになります。
  • Illustratorでの扱いについて
Illustratorでは、PDFファイルをオープンする際、Decodeエントリなんて気にせずに、CMYKのJPEGは必ずポジネガ反転しているという前提でオープンします。
なので、Decodeエントリで反転しているようなCMYKJPEGデータが含まれている場合、Illustrator上では正しく表示されません。

まとめ

PDFの出力するツールを実装している人は、生成したPDFファイルをIllustratorで編集するかどうかに留意しましょう。
外部で生成されたCMYKのJPEGファイルを貼りこむ場合、後々Illustratorで編集する必要がある場合、事前にポジネガ反転したCMYKのJPEGを裏で生成し、それを使ってPDFに貼りこみましょう。