/// <summary> /// Attempts to create a new HTMLData. This can return null if the DataObject /// couldn't be created based upon the IDataObject. /// </summary> /// <param name="iDataObject">The IDataObject from which to create the HTML Data Object</param> /// <returns>The HTMLData, null if it couldn't be created.</returns> public static HTMLData Create(IDataObject iDataObject) { string[] loser = iDataObject.GetFormats(); if (OleDataObjectHelper.GetDataPresentSafe(iDataObject, DataFormats.Html)) { try { HTMLData data = new HTMLData(iDataObject, null); return(string.IsNullOrEmpty(data.HTML) ? null : data); } catch (FormatException) { // EML files with HTML inside of them report that they are HTML // However, when we try to read the format, we have problems reading it // So we will skip loading html that we cannot load return(null); } } else if (HtmlDocumentClassFormatPresent(iDataObject)) { return(new HTMLData(iDataObject, (IHTMLDocument2)iDataObject.GetData(typeof(HTMLDocumentClass)))); } else { return(null); } }
private string GrowToAnchorParent(HTMLData htmlData) { if (htmlData.OnlyImageElement == null) return null; string html; // Load up the html document from the clipboard to a document to examine the html about to be inserted MshtmlMarkupServices markupServices = new MshtmlMarkupServices(htmlData.HTMLDocument as IMarkupServicesRaw); MarkupRange range = markupServices.CreateMarkupRange(htmlData.OnlyImageElement, true); // look to see if this is a case where the inserted html is <a>|<img>|</a> MarkupContext markupContextStart = range.Start.Left(true); MarkupContext markupContextEnd = range.End.Right(true); // if that is the cause, change the html about to be inserted to |<a><img></a>| if (markupContextStart.Context == _MARKUP_CONTEXT_TYPE.CONTEXT_TYPE_ExitScope && markupContextEnd.Context == _MARKUP_CONTEXT_TYPE.CONTEXT_TYPE_ExitScope && markupContextStart.Element.tagName == "A" && markupContextEnd.Element.tagName == "A") { html = markupContextStart.Element.outerHTML; } else { html = htmlData.HTMLSelection; } return html; }
/// <summary> /// Attempts to create a new HTMLData. This can return null if the DataObject /// couldn't be created based upon the IDataObject. /// </summary> /// <param name="iDataObject">The IDataObject from which to create the HTML Data Object</param> /// <returns>The HTMLData, null if it couldn't be created.</returns> public static HTMLData Create(IDataObject iDataObject) { string[] loser = iDataObject.GetFormats(); if (OleDataObjectHelper.GetDataPresentSafe(iDataObject, DataFormats.Html)) { try { HTMLData data = new HTMLData(iDataObject, null); return string.IsNullOrEmpty(data.HTML) ? null : data; } catch (FormatException) { // EML files with HTML inside of them report that they are HTML // However, when we try to read the format, we have problems reading it // So we will skip loading html that we cannot load return null; } } else if (HtmlDocumentClassFormatPresent(iDataObject)) { return new HTMLData(iDataObject, (IHTMLDocument2)iDataObject.GetData(typeof(HTMLDocumentClass))); } else return null; }
private static bool IsOfficeHtml(HTMLData data) { string generator = data.HTMLMetaData.Generator; if (String.IsNullOrEmpty(generator)) return false; return (generator.StartsWith("Microsoft Word") || generator.StartsWith("Microsoft Excel") || generator.StartsWith("Microsoft PowerPoint")); }