private string ImportPdeChart(Word.Document wDoc, string chartName, string chartContent) { string chartPath = AssetManager.FileAdapter.GenRandomFilePath(ChartExtension); string bmValue = MarkupUtilities.GenTextXslTag(chartName, XsltType.Select, true); string bmName = BaseMarkupUtilities.XmlEncode(chartName); // create temporary image bmName = string.Format("{0}{1}{2}", MarkupConstant.MarkupPdeTag, bmName, MarkupConstant.MarkupPdeChart); ProntoDoc.Framework.Utils.FileHelper.FileFromBase64(chartContent, chartPath); // delete old bm Word.Bookmark oldBm = null; foreach (Word.Bookmark bookmark in wDoc.Bookmarks) { if (string.Equals(bmName, bookmark.Name, StringComparison.OrdinalIgnoreCase)) { oldBm = bookmark; break; } } if (oldBm != null) { oldBm.Delete(); } // add image into word wDoc.Application.Selection.TypeText(" "); Word.InlineShape inlineShape = wDoc.Application.Selection.InlineShapes.AddPicture(chartPath, false, true); inlineShape.AlternativeText = MarkupUtilities.CreateAlternativeText(bmName, bmValue); // add bookmark wDoc.Application.Selection.MoveLeft(Word.WdUnits.wdCharacter, 1); wDoc.Application.Selection.MoveRight(Word.WdUnits.wdCharacter, 1, Word.WdMovementType.wdExtend); wDoc.Bookmarks.Add(bmName, wDoc.Application.Selection.Range); wDoc.Application.Selection.MoveRight(Word.WdUnits.wdCharacter); // delete temporary file System.IO.File.Delete(chartPath); return(bmName); }
/// <summary> /// Add a bookmark into current document /// </summary> /// <param name="name">Name of bookmark</param> /// <param name="value">Value of bookmark</param> /// <param name="xsltType">XsltType (Select, Foreach or If)</param> /// <returns></returns> public bool AddBookmark(string key) { try { ServicesProfile serviceProfile = Wkl.MainCtrl.ServiceCtrl.GetProfile(key); InternalBookmarkItem bm = serviceProfile.ContentService.AddBookmark_IBookmark; Wkl.MainCtrl.CommonCtrl.CommonProfile.CurrentTemplateInfo.IsAdding = true; serviceProfile.ContentService.MarkProntDoc = true; switch (bm.Type) { case XsltType.Foreach: AddDoubleBookmark(bm); MarkProntoDoc(key); break; case XsltType.If: AddDoubleBookmark(bm); MarkProntoDoc(key); break; case XsltType.Select: if (bm.IsImage()) { serviceProfile.WbmKey = bm.Key + ProntoMarkup.KeyImage; serviceProfile.WbmValue = MarkupUtilities.GenTextXslTag(bm.BizName, bm.Type, true); serviceProfile.AlternativeText = MarkupUtilities.CreateAlternativeText(serviceProfile.WbmKey, serviceProfile.WbmValue); AddBookmarkImageEvent(key); } else { AddSingleBookmark(bm); } MarkProntoDoc(key); break; case XsltType.Comment: AddCommentBookmark(bm); break; default: break; } Wkl.MainCtrl.CommonCtrl.CommonProfile.CurrentTemplateInfo.IsAdding = false; return(true); } catch (BaseException srvExp) { Services.ServiceException newSrvExp = new Services.ServiceException(ErrorCode.ipe_AddBookmarkError); newSrvExp.Errors.Add(srvExp); throw newSrvExp; } catch (Exception ex) { ServiceException srvExp = new ServiceException(ErrorCode.ipe_AddBookmarkError, MessageUtils.Expand(Properties.Resources.ipe_AddBookmarkError, ex.Message), ex.StackTrace); throw srvExp; } }