private static object FromTextToText(ICoreItem coreItem, BodyWriteConfiguration configuration, Stream bodyStream, bool createWriter) { Stream stream = null; object obj = null; try { stream = new BodyCharsetDetectionStream(bodyStream, null, coreItem, BodyStreamFormat.Text, ConvertUtils.UnicodeCharset, configuration.TargetCharset, configuration.TargetCharsetFlags, null, false); if (!createWriter && !configuration.IsContentTransformationNeeded(coreItem)) { obj = stream; } else { TextToText textToText; if (string.IsNullOrEmpty(configuration.InjectPrefix) && string.IsNullOrEmpty(configuration.InjectSuffix)) { textToText = new TextToText(TextToTextConversionMode.ConvertCodePageOnly); } else { textToText = new TextToText(); } textToText.InputEncoding = configuration.SourceEncoding; textToText.OutputEncoding = ConvertUtils.UnicodeEncoding; if (!string.IsNullOrEmpty(configuration.InjectPrefix) || !string.IsNullOrEmpty(configuration.InjectSuffix)) { textToText.Header = configuration.InjectPrefix; textToText.Footer = configuration.InjectSuffix; textToText.HeaderFooterFormat = configuration.InjectionHeaderFooterFormat; } obj = BodyWriteDelegates.GetConverterStreamOrWriter(stream, textToText, createWriter); } } finally { if (obj == null && stream != null) { BodyWriteDelegates.SafeDisposeStream(stream); } } return(obj); }
private static object FromHtmlToHtml(ICoreItem coreItem, BodyWriteConfiguration configuration, Stream bodyStream, bool createWriter) { Stream stream = null; object obj = null; try { if (!createWriter && configuration.SourceCharset == null) { obj = bodyStream; } else { HtmlToHtml htmlToHtml = new HtmlToHtml(); htmlToHtml.InputEncoding = configuration.SourceEncoding; htmlToHtml.DetectEncodingFromMetaTag = configuration.TrustHtmlMetaTag; htmlToHtml.FilterHtml = configuration.FilterHtml; htmlToHtml.HtmlTagCallback = configuration.InternalHtmlTagCallback; htmlToHtml.Header = configuration.InjectPrefix; htmlToHtml.Footer = configuration.InjectSuffix; htmlToHtml.HeaderFooterFormat = configuration.InjectionHeaderFooterFormat; bool canSkipConversionOnMatchingCharset = !configuration.IsContentTransformationNeeded(coreItem); HtmlWriteConverterStream htmlWriteConverterStream = new HtmlWriteConverterStream(bodyStream, htmlToHtml, canSkipConversionOnMatchingCharset); stream = htmlWriteConverterStream; stream = new BodyCharsetDetectionStream(htmlWriteConverterStream, new BodyCharsetDetectionStream.DetectCharsetCallback(htmlWriteConverterStream.SetCharset), coreItem, BodyStreamFormat.Html, configuration.SourceCharset, configuration.TargetCharset, configuration.TargetCharsetFlags, BodyWriteDelegates.GetExtraData(configuration), configuration.TrustHtmlMetaTag); obj = BodyWriteDelegates.GetStreamOrUnicodeWriter(stream, createWriter); } } finally { if (obj == null && stream != null) { BodyWriteDelegates.SafeDisposeStream(stream); } } return(obj); }
private static object FromRtfToRtf(ICoreItem coreItem, BodyWriteConfiguration configuration, Stream bodyStream, bool createWriter) { Stream stream = null; object obj = null; try { if (!createWriter && !configuration.IsContentTransformationNeeded(coreItem)) { obj = new BodyCharsetDetectionStream(bodyStream, null, coreItem, BodyStreamFormat.RtfCompressed, null, configuration.TargetCharset, configuration.TargetCharsetFlags, null, false); } else { stream = new ConverterStream(bodyStream, new RtfToRtfCompressed(), ConverterStreamAccess.Write); stream = new BodyCharsetDetectionStream(stream, null, coreItem, BodyStreamFormat.RtfUncompressed, null, configuration.TargetCharset, configuration.TargetCharsetFlags, null, false); if (configuration.InjectPrefix != null || configuration.InjectSuffix != null) { stream = new ConverterStream(stream, new RtfToRtf { Header = configuration.InjectPrefix, Footer = configuration.InjectSuffix, HeaderFooterFormat = configuration.InjectionHeaderFooterFormat }, ConverterStreamAccess.Write); } obj = BodyWriteDelegates.GetRtfDecompressorOrUnicodeWriter(stream, createWriter); } } finally { if (obj == null && stream != null) { BodyWriteDelegates.SafeDisposeStream(stream); } } return(obj); }