/* ----------------------------------------------------------------- */ /// /// ConfigurePdfA /// /// <summary> /// PDF/A 形式に変換するのに必要なオプションを設定します。 /// </summary> /// /// <remarks> /// PDF/A の主な要求項目は以下の通り: /// /// - デバイス独立カラーまたは PDF/A-1 OutputIntent 指定でカラーの /// 再現性を保証する /// - 基本 14 フォントを含む全てのフォントの埋め込み /// - PDF/Aリーダは,システムのフォントでなく埋め込みフォントで /// 表示すること /// - XMPメタデータの埋め込み /// - タグ付きPDFとする(PDF/A-1aのみ) /// </remarks> /// /* ----------------------------------------------------------------- */ private void ConfigurePdfA(UserSetting setting, Ghostscript.Converter gs) { gs.AddOption("PDFA"); gs.AddOption("EmbedAllFonts", true); gs.AddOption("SubsetFonts", true); }
/* ----------------------------------------------------------------- */ /// /// ConfigurePdfX /// /// <summary> /// PDF/X 形式に変換するのに必要なオプションを設定します。 /// </summary> /// /// <remarks> /// PDF/X(1-a) の主な要求項目は以下の通り: /// /// - すべてのイメージのカラーは CMYKか 特色 /// - 基本 14 フォントを含む全てのフォントの埋め込み /// </remarks> /// /* ----------------------------------------------------------------- */ private void ConfigurePdfX(UserSetting setting, Ghostscript.Converter gs) { gs.AddOption("PDFX"); gs.AddOption("EmbedAllFonts", true); gs.AddOption("SubsetFonts", true); if (!setting.Grayscale) gs.AddOption("ColorConversionStrategy", "/CMYK"); }
/* ----------------------------------------------------------------- */ /// /// ConfigureDocument /// /// <summary> /// PDF, PostScript, EPS のファイルに変換するために必要なオプションを /// 設定します。 /// </summary> /// /* ----------------------------------------------------------------- */ private void ConfigureDocument(UserSetting setting, Ghostscript.Converter gs) { gs.AddOption("EmbedAllFonts", setting.EmbedFont); if (setting.EmbedFont) gs.AddOption("SubsetFonts", true); if (setting.FileType == Parameter.FileTypes.PDF) ConfigurePdf(setting, gs); }
/* ----------------------------------------------------------------- */ /// /// ConfigurePdf /// /// <summary> /// PDF ファイルに変換するために必要なオプションを設定します。 /// </summary> /// /* ----------------------------------------------------------------- */ private void ConfigurePdf(UserSetting setting, Ghostscript.Converter gs) { gs.AddOption("CompatibilityLevel", Parameter.ToValue(setting.PDFVersion)); gs.AddOption("UseFlateCompression", true); if (setting.PDFVersion == Parameter.PdfVersions.VerPDFA) ConfigurePdfA(setting, gs); if (setting.PDFVersion == Parameter.PdfVersions.VerPDFX) ConfigurePdfX(setting, gs); }
/* ----------------------------------------------------------------- */ /// /// ConfigureBitmap /// /// <summary> /// BMP, PNG, JPEG のビットマップ系ファイルに変換するために必要な /// オプションを設定します。 /// </summary> /// /* ----------------------------------------------------------------- */ private void ConfigureBitmap(UserSetting setting, Ghostscript.Converter gs) { gs.AddOption("GraphicsAlphaBits", 4); gs.AddOption("TextAlphaBits", 4); }
/* ----------------------------------------------------------------- */ /// /// ConfigureCommonImage /// /// <summary> /// 画像に関わるオプションを設定します。 /// </summary> /// /// <remarks> /// 全てのファイルタイプ共通の設定です。 /// </remarks> /// /* ----------------------------------------------------------------- */ private void ConfigureCommonImage(UserSetting setting, Ghostscript.Converter gs) { gs.AddOption("ColorConversionStrategy", setting.Grayscale ? "/Gray" : "/RGB"); gs.AddOption("DownsampleColorImages", true); gs.AddOption("DownsampleGrayImages", true); gs.AddOption("DownsampleMonoImages", true); // 解像度 var resolution = Parameter.ToValue(setting.Resolution); var mono = resolution < 300 ? 300 : 1200; gs.AddOption("ColorImageResolution", resolution); gs.AddOption("GrayImageResolution", resolution); gs.AddOption("MonoImageResolution", mono); // 画像圧縮 gs.AddOption("AutoFilterColorImages", false); gs.AddOption("AutoFilterGrayImages", false); gs.AddOption("AutoFilterMonoImages", false); gs.AddOption("ColorImageFilter", "/" + setting.ImageFilter.ToString()); gs.AddOption("GrayImageFilter", "/" + setting.ImageFilter.ToString()); gs.AddOption("MonoImageFilter", "/" + setting.ImageFilter.ToString()); // ダウンサンプリング if (setting.DownSampling != Parameter.DownSamplings.None) { gs.AddOption("ColorImageDownsampleType", "/" + setting.DownSampling.ToString()); gs.AddOption("GrayImageDownsampleType", "/" + setting.DownSampling.ToString()); gs.AddOption("MonoImageDownsampleType", "/" + setting.DownSampling.ToString()); } }
/* ----------------------------------------------------------------- */ /// /// ConfigDocument /// /// <summary> /// pdf, ps, eps, svg のベクター系ファイルに変換するために必要な /// オプションを設定する. /// </summary> /// /* ----------------------------------------------------------------- */ public void ConfigDocument(UserSetting setting, Ghostscript.Converter gs) { if (setting.FileType == Parameter.FileTypes.PDF) this.ConfigPDF(setting, gs); else { if (setting.EmbedFont) { gs.AddOption("EmbedAllFonts", true); gs.AddOption("SubsetFonts", true); } else gs.AddOption("EmbedAllFonts", false); } }
/* ----------------------------------------------------------------- */ /// /// ConfigPDFX /// /// <summary> /// PDF/X(1-a) の主な要求項目は以下の通り: /// - すべてのイメージのカラーは CMYKか 特色 /// - 基本 14 フォントを含む全てのフォントの埋め込み /// </summary> /// /* ----------------------------------------------------------------- */ public void ConfigPDFX(UserSetting setting, Ghostscript.Converter gs) { gs.AddOption("PDFX"); gs.AddOption("EmbedAllFonts", true); gs.AddOption("SubsetFonts", true); if (setting.Grayscale) { gs.AddOption("ProcessColorModel", "/DeviceGray"); gs.AddOption("ColorConversionStrategy", "/Gray"); } else { gs.AddOption("ProcessColorModel", "/DeviceCMYK"); gs.AddOption("ColorConversionStrategy", "/CMYK"); } gs.AddOption("UseCIEColor"); }
/* ----------------------------------------------------------------- */ /// ConfigPDF /* ----------------------------------------------------------------- */ public void ConfigPDF(UserSetting setting, Ghostscript.Converter gs) { gs.AddOption("CompatibilityLevel", Parameter.PDFVersionValue(setting.PDFVersion)); gs.AddOption("UseFlateCompression", true); if (setting.PDFVersion == Parameter.PDFVersions.VerPDFA) this.ConfigPDFA(setting, gs); else if (setting.PDFVersion == Parameter.PDFVersions.VerPDFX) this.ConfigPDFX(setting, gs); else { if (setting.EmbedFont) { gs.AddOption("EmbedAllFonts", true); gs.AddOption("SubsetFonts", true); } else gs.AddOption("EmbedAllFonts", false); if (setting.Grayscale) { gs.AddOption("ProcessColorModel", "/DeviceGray"); gs.AddOption("ColorConversionStrategy", "/Gray"); } } }
/* ----------------------------------------------------------------- */ /// ConfigImageOperations /* ----------------------------------------------------------------- */ public void ConfigImageOperations(UserSetting setting, Ghostscript.Converter gs) { // 解像度 var resolution = Parameter.ResolutionValue(setting.Resolution); gs.AddOption("ColorImageResolution", resolution); gs.AddOption("GrayImageResolution", resolution); gs.AddOption("MonoImageResolution", (resolution < 300) ? 300 : 1200); // 画像圧縮 gs.AddOption("AutoFilterColorImages", false); gs.AddOption("AutoFilterGrayImages", false); gs.AddOption("AutoFilterMonoImages", false); gs.AddOption("ColorImageFilter", "/" + setting.ImageFilter.ToString()); gs.AddOption("GrayImageFilter", "/" + setting.ImageFilter.ToString()); gs.AddOption("MonoImageFilter", "/" + setting.ImageFilter.ToString()); // ダウンサンプリング if (setting.DownSampling == Parameter.DownSamplings.None) { gs.AddOption("DownsampleColorImages", false); gs.AddOption("DownsampleGrayImages", false); gs.AddOption("DownsampleMonoImages", false); } else { gs.AddOption("DownsampleColorImages", true); gs.AddOption("DownsampleGrayImages", true); gs.AddOption("DownsampleMonoImages", true); gs.AddOption("ColorImageDownsampleType", "/" + setting.DownSampling.ToString()); gs.AddOption("GrayImageDownsampleType", "/" + setting.DownSampling.ToString()); gs.AddOption("MonoImageDownsampleType", "/" + setting.DownSampling.ToString()); } }
/* ----------------------------------------------------------------- */ /// /// ConfigImage /// /// <summary> /// bmp, png, jpeg, gif のビットマップ系ファイルに変換するために /// 必要なオプションを設定する. /// </summary> /// /* ----------------------------------------------------------------- */ public void ConfigImage(UserSetting setting, Ghostscript.Converter gs) { gs.AddOption("GraphicsAlphaBits", 4); gs.AddOption("TextAlphaBits", 4); }