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