public override void Print(CloudPrintJob job) { using (Ghostscript gs = new Ghostscript()) { PrintTicket printTicket = job.GetPrintTicket(); byte[] printData = job.GetPrintData(); List <string> args = new List <string>(); args.Add("-dAutoRotatePages=/None"); if (printTicket.OutputColor != OutputColor.Color) { args.Add("-sColorConversionStrategy=Gray"); args.Add("-dProcessColorModel=/DeviceGray"); } byte[] printdata = gs.ProcessData(printTicket, printData, "pdfwrite", args.ToArray(), null); WindowsRawPrintJob pj = new WindowsRawPrintJob { JobName = job.JobTitle, UserName = job.Username, PrinterName = job.Printer.Name, PrintData = printdata, RunAsUser = true }; pj.Print(); } }
protected void PrintData(string username, PrintTicket ticket, string printername, string jobname, byte[] data, string driver) { using (Ghostscript gs = new Ghostscript()) { if (driver != null) { byte[] outdata = gs.ProcessData(ticket, data, driver, null, null); WindowsRawPrintJob pj = new WindowsRawPrintJob { JobName = jobname, PrinterName = printername, UserName = username, PrintData = outdata, RunAsUser = true }; pj.Print(); } else { gs.PrintData(username, ticket, printername, jobname, data, new string[] { }); } } }
protected void PrintData(string username, PrintTicket ticket, string printername, string jobname, byte[] data, Dictionary <string, string> pjljobattribs) { using (Ghostscript gs = new Ghostscript()) { string driver = ticket.OutputColor == OutputColor.Color ? "pxlcolor" : "pxlmono"; byte[] pcldata = gs.ProcessData(ticket, data, driver, null, null); PaginatedPrintData pcljob = ProcessPCL(pcldata, pjljobattribs, ticket); WindowsRawPrintJob job = new WindowsRawPrintJob { PagedData = pcljob, JobName = jobname, PrinterName = printername, UserName = username, RunAsUser = true }; job.Print(); } }
/* ----------------------------------------------------------------- */ /// /// 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"); }
/* ----------------------------------------------------------------- */ /// /// 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); }
/* ----------------------------------------------------------------- */ /// /// 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); }
/* ----------------------------------------------------------------- */ /// /// 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); }
/* ----------------------------------------------------------------- */ /// /// 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()); } }
/* ----------------------------------------------------------------- */ /// /// ConfigureBitmap /// /// <summary> /// BMP, PNG, JPEG のビットマップ系ファイルに変換するために必要な /// オプションを設定します。 /// </summary> /// /* ----------------------------------------------------------------- */ private void ConfigureBitmap(UserSetting setting, Ghostscript.Converter gs) { gs.AddOption("GraphicsAlphaBits", 4); gs.AddOption("TextAlphaBits", 4); }
public PdfTests() { Ghostscript.Initialize(); }
/* ----------------------------------------------------------------- */ /// /// 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); }
public void Initialize() { Ghostscript.Initialize(); }