using System; using System.Text; using System.Xml.Serialization; using PDFPatcher.Common; using E = System.Text.Encoding; namespace PDFPatcher { public class ExporterOptions { private bool _ExportDocProperties = true; ///获取或指定是否导出文档属性。 [XmlAttribute("导出文档属性")] public bool ExportDocProperties { get => _ExportDocProperties; set => _ExportDocProperties = value; } private bool _ExportBookmarks = true; ///获取或指定是否导出书签。 [XmlAttribute("导出文档书签")] public bool ExportBookmarks { get => _ExportBookmarks; set => _ExportBookmarks = value; } private bool _ExtractPageLinks = true; ///获取或指定是否导出页面内的连接。 [XmlAttribute("导出页面链接")] public bool ExtractPageLinks { get => _ExtractPageLinks; set => _ExtractPageLinks = value; } private bool _ExportViewerPreferences = true; ///获取或指定是否导出阅读器设置。 [XmlAttribute("导出阅读器设置")] public bool ExportViewerPreferences { get => _ExportViewerPreferences; set => _ExportViewerPreferences = value; } private bool _ExtractPageSettings = true; ///获取或指定是否导出页面的阅读设置。 [XmlAttribute("导出页面设置")] public bool ExtractPageSettings { get => _ExtractPageSettings; set => _ExtractPageSettings = value; } ///获取或指定是否导出文档编录信息。 [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; } private int _ExportBinaryStream = 200; ///获取或指定导出二进制流的字节数。 [XmlAttribute("导出二进制流")] public int ExportBinaryStream { get => _ExportBinaryStream; set => _ExportBinaryStream = value; } ///获取或指定导出前是否解析命名位置。 [XmlAttribute("解析命名位置")] public bool ConsolidateNamedDestinations { get; set; } private readonly ImageExtracterOptions _Images = new ImageExtracterOptions(); ///获取导出图像的选项。 [XmlIgnore] public ImageExtracterOptions Images => _Images; private UnitConverter _UnitConverter = new UnitConverter(); [XmlElement("导出尺寸单位")] public UnitConverter UnitConverter { get => _UnitConverter; set => _UnitConverter = value; } 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; } } }