public TrueTypeFontHandler(ILog log, IPdfTokenScanner pdfScanner, ILookupFilterProvider filterProvider, IEncodingReader encodingReader, ISystemFontFinder systemFontFinder, IFontHandler type1FontHandler) { this.log = log; this.filterProvider = filterProvider; this.encodingReader = encodingReader; this.systemFontFinder = systemFontFinder; this.type1FontHandler = type1FontHandler; this.pdfScanner = pdfScanner; }
/// <summary> /// Default ctor WmlToHtmlConverterSettings /// </summary> /// <param name="pageTitle">Page title</param> public WmlToHtmlConverterSettings(string pageTitle) { AdditionalCss = defaultAdditionalCss; GeneralCss = defaultgeneralCss; PageTitle = pageTitle ?? string.Empty; FabricateCssClasses = true; CssClassPrefix = defaultCssClassPrefix; ImageHandler = new ImageHandler(); TextHandler = new TextDummyHandler(); SymbolHandler = new SymbolHandler(); BreakHandler = new BreakHandler(); FontHandler = new FontHandler(); }
/// <summary> /// Ctor WmlToHtmlConverterSettings /// </summary> /// <param name="pageTitle">Page title</param> /// <param name="customImageHandler">Handler used to convert open XML images to HTML images</param> /// <param name="textHandler">Handler used to convert open XML text to HTML compatible text</param> /// <param name="symbolHandler">Handler used to convert open XML symbols to HTML compatible text</param> /// <param name="breakHandler">Handler used to convert open XML breaks to HTML equivalent</param> /// <param name="fontHandler">Handler used translate open XML fonts to HTML equivalent</param> /// <param name="fabricateCssClasses">Set to true, if CSS style should be stored in classes instead of an inline attribute on each node</param> /// <param name="generalCss">Optional CSS, default is "span { white-space: pre-wrap; }"</param> /// <param name="additionalCss">Optional CSS, default is "body { margin: 1cm auto; max-width: 20cm; padding: 0; }"</param> /// <param name="cssClassPrefix">Optional CSS class name prefix, default is "pt-"</param> public WmlToHtmlConverterSettings(string pageTitle, IImageHandler customImageHandler, ITextHandler textHandler, ISymbolHandler symbolHandler, IBreakHandler breakHandler, IFontHandler fontHandler, bool fabricateCssClasses, string generalCss = defaultgeneralCss, string additionalCss = defaultAdditionalCss, string cssClassPrefix = defaultCssClassPrefix) { AdditionalCss = additionalCss; GeneralCss = generalCss; PageTitle = pageTitle; FabricateCssClasses = fabricateCssClasses; CssClassPrefix = cssClassPrefix; ImageHandler = customImageHandler; TextHandler = textHandler; SymbolHandler = symbolHandler; BreakHandler = breakHandler; FontHandler = fontHandler; }
private TrueTypeFont ParseTrueTypeFont(FontDescriptor descriptor, out IFontHandler actualHandler) { actualHandler = null; if (descriptor.FontFile == null) { try { var ttf = systemFontFinder.GetTrueTypeFont(descriptor.FontName.Data); return(ttf); } catch (Exception ex) { log.Error($"Failed finding system font by name: {descriptor.FontName}.", ex); } return(null); } try { var fontFileStream = DirectObjectFinder.Get <StreamToken>(descriptor.FontFile.ObjectKey, pdfScanner); var fontFile = fontFileStream.Decode(filterProvider); if (descriptor.FontFile.FileType == DescriptorFontFile.FontFileType.FromSubtype) { var shouldThrow = true; if (fontFileStream.StreamDictionary.TryGet(NameToken.Subtype, pdfScanner, out NameToken subTypeName)) { if (subTypeName == NameToken.Type1C) { actualHandler = type1FontHandler; return(null); } if (subTypeName == NameToken.OpenType) { shouldThrow = false; } } if (shouldThrow) { throw new InvalidFontFormatException( $"Expected a TrueType font in the TrueType font descriptor, instead it was {descriptor.FontFile.FileType}."); } } var font = TrueTypeFontParser.Parse(new TrueTypeDataBytes(new ByteArrayInputBytes(fontFile))); return(font); } catch (Exception ex) { log.Error("Could not parse the TrueType font.", ex); return(null); } }
private static WmlToHtmlConverterSettings CreateHtmlConverterSettings(string pageTitle, IImageHandler imageHandler, IFontHandler fontHandler) { var settings = new WmlToHtmlConverterSettings(pageTitle, imageHandler, new TextSymbolToUnicodeHandler(), new SymbolHandler(), new PageBreakHandler(new BreakHandler()), fontHandler, true, string.Empty, "@page { size: A4 } body { margin: 1cm auto; max-width: 20cm; padding: 0; }", "Codeuctivity-"); return(settings); }