Beispiel #1
0
        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();
            }
        }
Beispiel #2
0
        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();
            }
        }
Beispiel #4
0
 /* ----------------------------------------------------------------- */
 ///
 /// 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");
 }
Beispiel #5
0
 /* ----------------------------------------------------------------- */
 ///
 /// 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);
 }
Beispiel #6
0
 /* ----------------------------------------------------------------- */
 ///
 /// 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);
 }
Beispiel #7
0
 /* ----------------------------------------------------------------- */
 ///
 /// 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);
 }
Beispiel #8
0
        /* ----------------------------------------------------------------- */
        ///
        /// 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());
            }
        }
Beispiel #9
0
 /* ----------------------------------------------------------------- */
 ///
 /// ConfigureBitmap
 ///
 /// <summary>
 /// BMP, PNG, JPEG のビットマップ系ファイルに変換するために必要な
 /// オプションを設定します。
 /// </summary>
 ///
 /* ----------------------------------------------------------------- */
 private void ConfigureBitmap(UserSetting setting, Ghostscript.Converter gs)
 {
     gs.AddOption("GraphicsAlphaBits", 4);
     gs.AddOption("TextAlphaBits", 4);
 }
Beispiel #10
0
 public PdfTests()
 {
     Ghostscript.Initialize();
 }
Beispiel #11
0
 /* ----------------------------------------------------------------- */
 ///
 /// 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);
     }
 }
Beispiel #12
0
 /* ----------------------------------------------------------------- */
 ///
 /// 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");
 }
Beispiel #13
0
        /* ----------------------------------------------------------------- */
        /// 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");
                }
            }
        }
Beispiel #14
0
        /* ----------------------------------------------------------------- */
        /// 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());
            }
        }
Beispiel #15
0
 /* ----------------------------------------------------------------- */
 ///
 /// ConfigImage
 ///
 /// <summary>
 /// bmp, png, jpeg, gif のビットマップ系ファイルに変換するために
 /// 必要なオプションを設定する.
 /// </summary>
 ///
 /* ----------------------------------------------------------------- */
 public void ConfigImage(UserSetting setting, Ghostscript.Converter gs)
 {
     gs.AddOption("GraphicsAlphaBits", 4);
     gs.AddOption("TextAlphaBits", 4);
 }
Beispiel #16
0
 public void Initialize()
 {
     Ghostscript.Initialize();
 }