Example #1
0
        /* ----------------------------------------------------------------- */
        ///
        /// ConfigPdf
        ///
        /// <summary>
        /// PDF ファイルに変換するために必要なオプションを設定します。
        /// </summary>
        ///
        /* ----------------------------------------------------------------- */
        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");
                }
            }
        }
Example #2
0
 /* ----------------------------------------------------------------- */
 ///
 /// PDFVersionString
 ///
 /// <summary>
 /// PDFVersions の各値に対応する文字列を取得します。
 /// </summary>
 ///
 /* ----------------------------------------------------------------- */
 public static string PDFVersionString(Parameter.PdfVersions id)
 {
     if (id == Parameter.PdfVersions.VerPDFA)
     {
         return("");                                     //"PDF/A";
     }
     else if (id == Parameter.PdfVersions.VerPDFX)
     {
         return("");                                          //"PDF/X";
     }
     return(Parameter.PdfVersionValue(id).ToString());
 }
Example #3
0
        /* ----------------------------------------------------------------- */
        ///
        /// WebOptimize
        ///
        /// <summary>
        /// Web に最適化された PDF ファイルに変換します。
        /// </summary>
        ///
        /// <remarks>
        /// iTextSharp には Web 最適化オプションが存在しないため、
        /// Ghostscript を再度使用して変換を行います。
        /// </remarks>
        ///
        /* ----------------------------------------------------------------- */
        private bool WebOptimize(UserSetting setting)
        {
            string tmp = Utility.WorkingDirectory + '\\' + System.IO.Path.GetRandomFileName();

            Ghostscript.Converter gs = new CubePdf.Ghostscript.Converter(_messages);
            gs.Device = Ghostscript.Devices.PDF_Opt;
            bool status = true;

            try
            {
                if (CubePdf.Misc.File.Exists(tmp))
                {
                    CubePdf.Misc.File.Delete(tmp, true);
                }
                CubePdf.Misc.File.Move(setting.OutputPath, tmp, true);
                gs.AddInclude(setting.LibPath + @"\lib");
                gs.Resolution   = Parameter.ResolutionValue(setting.Resolution);
                gs.PageRotation = setting.PageRotation;

                gs.AddOption("CompatibilityLevel", Parameter.PdfVersionValue(setting.PDFVersion));
                gs.AddOption("UseFlateCompression", true);

                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");
                }

                gs.AddSource(tmp);
                gs.Destination = setting.OutputPath;
                gs.Run();
            }
            catch (Exception err)
            {
                _messages.Add(new Message(Message.Levels.Warn, "CubePdf.PDFModifier.WebOptimize: False"));
                _messages.Add(new Message(Message.Levels.Debug, err));
                status = false;
            }
            finally
            {
                if (!CubePdf.Misc.File.Exists(setting.OutputPath))
                {
                    CubePdf.Misc.File.Move(tmp, setting.OutputPath, true);
                }
                else
                {
                    var fi = new System.IO.FileInfo(setting.OutputPath);
                    if (fi.Length == 0)
                    {
                        CubePdf.Misc.File.Move(tmp, setting.OutputPath, true);
                    }
                    else
                    {
                        CubePdf.Misc.File.Delete(tmp, false);
                    }
                }
            }

            return(status);
        }