IndesignでのPDFのエクスポートについて

さて、年が明けて、めでたいのだかどうなんだか分からないままに仕事をこなしている訳です。ちょいとスロースターター気味です。
年明け一発目はスクリプトからPDFを書き出す作業に焦点を当ててみようと思うんだ。自動処理の最後の段階にはとても重要な書き出し処理なんだけど、設定する事が多くってあっぷあっぷだね。
イラストレータの時は別名で保存でPDFを作成出来る訳だね。でもインデザインの場合は書き出しを行うわけなんだね。でも、どちらにしろPDFの設定は避けて通れない訳だね。今回はサンプルを見ながら必要なプレファレンスを解説してみようとおもうんだ。
今回はAdobe Indesign CS3 Scripting Guideのサンプルコードを引用して見よう。

with(app.pdfExportPreferences){
    //Basic PDF output options.
    pageRange = PageRange.allPages;
    acrobatCompatibility =
            AcrobatCompatibility.acrobat6;
    exportGuidesAndGrids = false;
    exportLayers = false;
    exportNonPrintingObjects = false;
    exportReaderSpreads = false;
    generateThumbnails = false;
    try{
        ignoreSpreadOverrides = false;
        } catch(e){}
    includeBookmarks = true;
    includeHyperlinks = true;
    includeICCProfiles = true;
    includeSlugWithPDF = false;
    includeStructure = false;
    interactiveElements = false;
    //Setting subsetFontsBelow to zero disallows font subsetting;
    //set subsetFontsBelow to some other value to use font subsetting.
    subsetFontsBelow = 0;
    //
    //Bitmap compression/sampling/quality options.
    colorBitmapCompression = BitmapCompression.zip;
    colorBitmapQuality = CompressionQuality.eightBit;
    colorBitmapSampling = Sampling.none;
    //thresholdToCompressColor is not needed in this example.
    //colorBitmapSamplingDPI is not needed when colorBitmapSampling
    //is set to none.
    grayscaleBitmapCompression = BitmapCompression.zip;
    grayscaleBitmapQuality = CompressionQuality.eightBit;
    grayscaleBitmapSampling = Sampling.none;
    //thresholdToCompressGray is not needed in this example.
    //grayscaleBitmapSamplingDPI is not needed when grayscaleBitmapSampling
    //is set to none.
    monochromeBitmapCompression = BitmapCompression.zip;
    monochromeBitmapSampling = Sampling.none;
    //thresholdToCompressMonochrome is not needed in this example.
    //monochromeBitmapSamplingDPI is not needed when
    //monochromeBitmapSampling is set to none.
    //
    //Other compression options.
    compressionType = PDFCompressionType.compressNone;
    compressTextAndLineArt = true;
    contentToEmbed = PDFContentToEmbed.embedAll;
    cropImagesToFrames = true;
    optimizePDF = true;
    //
    //Printers marks and prepress options.
    //Get the bleed amounts from the document’s bleed.
    bleedBottom = app.activeDocument.documentPreferences.
    documentBleedBottomOffset;
    bleedTop = app.activeDocument.documentPreferences.
                        documentBleedTopOffset;
    bleedInside = app.activeDocument.documentPreferences.
                        documentBleedInsideOrLeftOffset;
    bleedOutside = app.activeDocument.documentPreferences.
                        documentBleedOutsideOrRightOffset;
    //If any bleed area is greater than zero, then export the bleed marks.
    if(bleedBottom == 0 && bleedTop == 0 &&
        bleedInside == 0 && bleedOutside == 0){
        bleedMarks = true;
        } else {
            bleedMarks = false;
            }
    colorBars = true;
    colorTileSize = 128;
    grayTileSize = 128;
    cropMarks = true;
    omitBitmaps = false;
    omitEPS = false;
    omitPDF = false;
    pageInformationMarks = true;
    pageMarksOffset = 12;
    pdfColorSpace =
            PDFColorSpace.unchangedColorSpace;
    //Default mark type.
    pdfMarkType = 1147563124;
    printerMarkWeight = PDFMarkWeight.p125pt;
    registrationMarks = true;
    try{
        simulateOverprint = false;
        } catch(e){}
    useDocumentBleedWithPDF = true;
    //Set viewPDF to true to open the PDF in Acrobat or Adobe Reader.
    viewPDF = false;
    }

//Now export the document. You’ll have to fill in your own file path.
app.activeDocument.exportFile(
        ExportFormat.pdfType,
        File(“/testDoc.pdf”), false);

これって、殆どpdfExportPreferencesオブジェクトのプロパティなんだよね…大量だw
と言う事なので勢い付けて一気に各プロパティを解説するよ。

    pageRange = PageRange.allPages;

pageRangeはその名の通りPDF書き出しを行う範囲だね。「PageRange.allPages」となると全ページの書き出しとなるんだ。個別に書き出す場合にはプリント時のように範囲を-でつないだレンジ指定やコンマ区切りで書き出しページを並べれば良いんだ。

    acrobatCompatibility = AcrobatCompatibility.acrobat6;

これもそのまま、アクロバットの互換性の指定acrobat4〜7(CS3の場合)で指定すれば良い。

    exportGuidesAndGrids = false;
    exportLayers = false;
    exportNonPrintingObjects = false;
    exportReaderSpreads = false;
    generateThumbnails = false;

booleanのエレメント5点は上からガイドやグリッドを含めるか、レイヤー構造を含めるか、ノンプリントオブジェクトを含めるか、スプレッドでの書き出し、サムネイルを生成するかの5点がtrueかfalseで指定するようになっているんだ。まあ、この中でtrueにする場合があるのはexportReaderSpreadsとgenerateThumbnailsぐらいかな。

    try{
        ignoreSpreadOverrides = false;
        } catch(e){}

エラーコレクト対象になっているのだけど、スプレッドオーバーライドを無視するかどうかのスイッチだね。ファイルの状況によっては無視出来ないのでエラーコレクトされているんだ。

    includeBookmarks = true;
    includeHyperlinks = true;
    includeICCProfiles = true;
    includeSlugWithPDF = false;
    includeStructure = false;
    interactiveElements = false;

つづいて、ブックマークを含めるか、ハイパーリンクを含めるか、ICCカラープロファイルを含めるか、スラグエリアを含めるか。次のincludeStructureをtrueとするとtaggedPDFが生成されるんだ。これはアクロバット6以降のバージョンでないと対応出来ないので注意が必要。
最後のインタラクティブっていうのはクリッカブルなボタンやムービー、サウンドなんかの事だね。Indesignでどうしろっていうのだろうねw

    subsetFontsBelow = 0;

フォントのサブセットの生成についてサンプルの「0」だとフォントは完全にインクルードされるんだ。全てを含めてしまうとファイル容量が大きくなるのでサブセット化すればいいのだけど、その場合は0〜100の百分率で指定してあげれば良いんだね。

    colorBitmapCompression =
            BitmapCompression.zip;
    colorBitmapQuality =
            CompressionQuality.eightBit;
    colorBitmapSampling =
            Sampling.none;<

カラーイメージのサンプリング関連の3点。
BitmapCompressionは6種類あって、automaticJpeg2000,autoCompression,jpeg,jpeg2000,none,zipをそれぞれ指定すれば良い。
CompressionQualityはBitmapCompressionとも関連するのだけど、zipではeightBit、fourBit、jpeg系ではheigh、low、medium、minimumが指定出来るんだ。
colorBitmapSamplingは再サンプリングを行う解像度を9〜2400(dpi)の範囲で指定。再サンプルしない場合、見本のようにSampling.noneでOK。

    grayscaleBitmapCompression =
            BitmapCompression.zip;
    grayscaleBitmapQuality =
            CompressionQuality.eightBit;
    grayscaleBitmapSampling =
            Sampling.none;

    monochromeBitmapCompression =
            BitmapCompression.zip;
    monochromeBitmapSampling =
            Sampling.none;

つづくグレースケールとモノクロイメージに対する指定は、ほぼ同じなので割愛。ただ、MonoBitmapCompressionはデータ構造上圧縮方法が他とは異なるので注意。

    compressionType =
                PDFCompressionType.compressNone;
    compressTextAndLineArt = true;
    contentToEmbed = PDFContentToEmbed.embedAll;
    cropImagesToFrames = true;
    optimizePDF = true;

続いて、PDF全般に関する圧縮のプロパティが並んでいるね。
compressionTypeはPDF圧縮を行うかどうか。compressNoneは圧縮しない、compressObjectsは全てを圧縮、compressStructureはPDF構造に関連するデータのみ圧縮するってなるんだね。
compressTextAndLineArtはそのまま、テキストやラインアートを圧縮するかって事だね。続くcropImagesToFramesはフレームで画像を切り抜いてしまうかどうかのフラグ。この2つはPDF書き出しウインドウの圧縮のタブの下の方に並んでいるチェックボックスだね。
optimizePDFは最適化を行うかどうか。

    bleedBottom = app.activeDocument.documentPreferences.
                            documentBleedBottomOffset;
    bleedTop = app.activeDocument.documentPreferences.
                            documentBleedTopOffset;
    bleedInside = app.activeDocument.documentPreferences.
                            documentBleedInsideOrLeftOffset;
    bleedOutside = app.activeDocument.documentPreferences.
                            documentBleedOutsideOrRightOffset;

上下左右の塗りたしの設定だね。これはドキュメントの設定を拾っているね。数値指定でもOKだよ。

    if(bleedBottom == 0 && bleedTop == 0 && bleedInside == 0 &&
        bleedOutside == 0){
        bleedMarks = true;
        } else {
            bleedMarks = false;
            }

続くブロックは塗りたしが0より大きい場合にブリードマーク(外トンボ)を設定するためのブロックだね。

    colorBars = true;
    colorTileSize = 128;
    grayTileSize = 128;
    cropMarks = true;
    omitBitmaps = false;
    omitEPS = false;
    omitPDF = false;
    pageInformationMarks = true;
    pageMarksOffset = 12;
    pdfColorSpace =
            PDFColorSpace.unchangedColorSpace;

colorBarsは、カラーバーを生成するかどうか。
colorTileSize、grayTileSizeは圧縮の方に入れといた方が良いと思うけど画像のタイルサイズ指定。
cropMarksは断ちトンボを付けるかどうか、つづくomit三連発はOPI処理関連だね。
pageInformationMarksはページ情報を付加するかどうか。
pageMarksOffsetはそのままなのだけど、日本式のトンボには関係ないんだ。
pdfColorSpaceは色分解関連の設定。unchangedColorSpaceはカラー変換無し。その他にはcmyk、repurposeCMYK、repurposeRGB、RGBがある。

    pdfMarkType = 1147563124;
    printerMarkWeight = PDFMarkWeight.p125pt;
    registrationMarks = true;

これって分かりづらいね。

PDFExportPreference.
pdfMarkType
Data Type: any
The type of printer marks, either an enum value or the name of a custom marks file. Can return: MarkTypes enumerator or String.

ヘルプから引用してみたけど、理解に苦しむね。恐らくトンボの種類を選択するのだろうけど、指定されている数値については何の記述もないね。
不親切極まりない事だけど、ここを放っておくのは問題あるので少し調べてみた。

西洋トンボ default(1147563124)
丸付センタートンボ JMarkWithCircle(1785558883)
丸無しセンタートンボ JMarkWithoutCircle(1785556579)

printerMarkWeightはトンボの太さの設定だね。p125ptは0.125pt。これは9種類ウエイトが設定されているんだ。

p05mm: number, Value: 808807789 (‘0.05mm’)
p07mm: number, Value: 808938861 (‘0.07mm’)
p10mm: number, Value: 825257325 (‘0.10mm’)
p125pt: number, Value: 825374064 (‘0.125pt’)
p15mm: number, Value: 825585005 (‘0.15mm’)
p20mm: number, Value: 842034541 (‘0.20mm’)
p25pt: number, Value: 842346608 (‘0.250pt’)
p30mm: number, Value: 858811757 (‘0.30mm’)
pP50pt: number, Value: 892350576 (‘0.500pt’)

registrationMarksはレジストレーションマークを付けるかどうか。

    try{
        simulateOverprint = false;
        } catch(e){}
    useDocumentBleedWithPDF = true;
    //Set viewPDF to true to open the PDF in Acrobat or Adobe Reader.
    viewPDF = false;
    }

simulateOverprintはオーバープリントをシミュレートするかどうか。こちらもエラーコレクト処理されているね。
useDocumentBleedWithPDFはドキュメントの塗りたしの設定をPDFに反映するかどうか。
viewPDFは生成したPDFを自動的にアクロバットで表示するかどうか。
以上で設定はおしまい。

app.activeDocument.exportFile(ExportFormat.pdfType,
File(“/testDoc.pdf”), false);

最後はエクスポート処理をすればPDFファイルの出来上がり。しかし、面倒なので実際にはpresetを利用する事をお奨めします。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中