M.C.P.C.

―むり・くり―プラスコミュニケーション(更新終了)


| トップページ |

2005年6月29日 18:37

CIP3の中のJobNameをCIP3のファイルネームに置換するスクリプトを作ったがそもそもスクリプトで変えていいかどうか分からない

このエントリーをはてなブックマークに追加 mixiチェック

印刷屋さんでは、インキ壺情報を作り出すために必要な PPF ファイルというものを取り扱わなくてはいけない場合があります。

ところが、うちの場合、日本製の PPF 生成ソフトが悪いのだか、ドイツ製の PPF 受け取りソフトが悪いのだかよく分かりませんが、PPF ファイル内の

/CIP3AdmJobName (ほげほげ.PPF) def

となっているところ、ほげほげ.PPF のままだと、PPF を受け取る側が表示してくれません。

問題点としては、生成側が SJIS でファイル名を書き込んでいること(ちゃんと PostScriptエンコーディングしろっちゅーの)、受け取り側が SJIS のジョブ名を処理できないこと(日本に持ってくるなら右ハンドルに付け替えろっちゅーの)、双方に原因がありそうです。

というわけで、現在のPPFのファイル名で /CIP3AdmJobName を付け直す Perl スクリプトを作りましたのでご査収ください。無保証、SJIS。今回に限っては、Mac OS X、Linux(Fedora Core 3) で動くことは確認しました。ただしコンソールではバケバケ。

#!/usr/bin/perl -w
 
# Filename: PPFrename.pl
#           ActivePerl 5.8.6 (Win32)
#           Mac OS X 10.3.9
#           Fedora Core 3 (Linux) で確認したよ。
#           ただしSJIS記述なのでコンソール化けるかも。
# Usage: ドラドロしてください。
#        (要ドラドロできるようになるソフト)
#        もしくはコマンドライン
#        C:\> perl PPFrename.pl 20050629ほげ.ppf
 
use strict;
use File::Basename;
use encoding "cp932", Filter => 1;
 
# 正規表現パターン設定
 
my $Regex = <<'REGEX';
/CIP3AdmJobName \((.+)\) def
REGEX
 
# コマンドライン引数分繰り返し
 
foreach my $argv (@ARGV) {
 
    my ( $cip3jobname, $ppf );
 
    my $fullpath = $argv;
    ( my $base, my $dir ) = fileparse( $fullpath, '\.[^\.]+$' );
    ( my $filename = $base . ".ppf" ) =~ s/[^\w-\.]//g;
    my $newpath = $dir . '#' . $filename;
 
    print "ppf 読み込み中...\n";
 
    open( IN, $fullpath )
      || die "can't open $fullpath \n";
    binmode(IN);
    read IN, $ppf, -s $fullpath;
    close(IN);
 
    # パターンで検索ループ
 
    print "検索開始...\n";
 
    while ( $ppf =~ m/$Regex/mo ) {
        $cip3jobname = $filename;
        print "発見\n";
        last;
    }
 
    # 検索ループ終わり
 
    # 検索ループで見つかった場合、/CIP3AdmJobName を書き換える。
 
    if ($cip3jobname) {
        $ppf =~
          s#/CIP3AdmJobName \((.+)\) def#/CIP3AdmJobName ($cip3jobname) def#;
    }
 
    # 置換結果書き込み
 
    print "処理用ppf書き込み中...\n";
 
    open FH, ">$newpath";
    binmode(FH);
    print FH $ppf;
    close FH;
 
    print "正規化ppf書き込み中...\n";
 
}

投稿 大野 義貴 [Script] | |

トラックバック(0)

トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/1181

コメントする