using System; using System.Text; using System.Xml.Serialization; using PDFPatcher.Common; using E = System.Text.Encoding; namespace PDFPatcher { public class ExporterOptions { ///获取或指定是否导出文档属性。 [XmlAttribute("导出文档属性")] public bool ExportDocProperties { get; set; } = true; ///获取或指定是否导出书签。 [XmlAttribute("导出文档书签")] public bool ExportBookmarks { get; set; } = true; ///获取或指定是否导出页面内的连接。 [XmlAttribute("导出页面链接")] public bool ExtractPageLinks { get; set; } = true; ///获取或指定是否导出阅读器设置。 [XmlAttribute("导出阅读器设置")] public bool ExportViewerPreferences { get; set; } = true; ///获取或指定是否导出页面的阅读设置。 [XmlAttribute("导出页面设置")] public bool ExtractPageSettings { get; set; } = true; ///获取或指定是否导出文档编录信息。 [XmlAttribute("导出编录信息")] public bool ExportCatalog { get; set; } ///获取或指定是否导出页面内容信息。 [XmlAttribute("导出页面内容")] public bool ExtractPageContent { get; set; } ///获取或指定需要导出的页码范围。页码范围可用“-”表示起止页码,如有多个页码,可用“;”、“,”或“ ”(空格)隔开,如“1;4-15;2 56”,表示依次导出第1页、第4至15页、第2页和第56页的内容。 [XmlAttribute("导出页码范围")] public string ExtractPageRange { get; set; } ///获取或指定页面字典的值。 [XmlAttribute("导出页面字典")] public bool ExtractPageDictionary { get; set; } ///获取或指定是否导出页面中的图片为独立的文件。 [XmlAttribute("导出图片")] public bool ExtractImages { get; set; } ///获取或指定是否解码导出页面中的文本。 [XmlAttribute("导出解码文本")] public bool ExportDecodedText { get; set; } ///获取或指定是否解码导出页面指令。 [XmlAttribute("导出命令操作符")] public bool ExportContentOperators { get; set; } ///获取或指定导出二进制流的字节数。 [XmlAttribute("导出二进制流")] public bool ExportBinaryStream { get; set; } ///获取或指定导出前是否解析命名位置。 [XmlAttribute("解析命名位置")] public bool ConsolidateNamedDestinations { get; set; } ///获取导出图像的选项。 [XmlIgnore] public ImageExtracterOptions Images { get; } = new ImageExtracterOptions(); [XmlElement("导出尺寸单位")] public UnitConverter UnitConverter { get; set; } = new UnitConverter(); private Encoding _Encoding = E.Default; private string _EncodingName; ///获取或指定导出文件时所用的编码。 [XmlAttribute("文本编码")] public string Encoding { get { if (_Encoding.EncodingName == E.Default.EncodingName) { return Constants.Encoding.SystemDefault; } return _EncodingName; } set { if (String.IsNullOrEmpty(value) || value == Constants.Encoding.SystemDefault) { _Encoding = E.Default; } else { try { _Encoding = E.GetEncoding(value); _EncodingName = value; } catch (Exception) { _EncodingName = Constants.Encoding.SystemDefault; } } } } public Encoding GetEncoding() { return _Encoding; } } }