public static void ConverterListParaToDataDocument(List <DataParaPositionBullet> list, DataDocument dataDocument) { DataParagraph _paraAdd = new DataParagraph(); DataParagraph _para = new DataParagraph(); //TextRange _textRange = new TextRange(); int _countListPara = list.Count; int positionBlock = 0; for (int t = 0; t < _countListPara; t++) { //Trường hợp là Para if (list[t].Position == 0) { list[t].Para.Parent = dataDocument; dataDocument.Blocks.Add(list[t].Para); positionBlock++; } else//Trường hợp là List { //Nếu para trước nó là bullet=null hoặc nó là list đầu tiên thì tạo mới List if (t == 0 || list[t - 1].Position == 0) { DataDocumentList _list = new DataDocumentList(); DataDocumentListItem _listItem = new DataDocumentListItem(); list[t].Para.Parent = _listItem; _listItem.Blocks.Add(list[t].Para); _listItem.TypeWordBullet = list[t].ListType; _listItem.Parent = _list; _list.Items.Add(_listItem); dataDocument.Blocks.Add(_list); positionBlock++; } else { int index = GetIndexList(list, t); if (index != -1) { //Trường hợp không cùng cấp if (list[t].Position - list[index].Position > 0) { list[t].Position = list[index].Position + 1; if (list[index].Para.Parent is DataDocumentListItem) { DataDocumentListItem _listItem = new DataDocumentListItem(); DataDocumentList _listData = new DataDocumentList(); DataDocumentListItem _listItem2 = new DataDocumentListItem(); list[t].Para.Parent = _listItem2; _listItem2.Blocks.Add(list[t].Para); _listItem2.TypeWordBullet = list[t].ListType; _listItem2.Parent = _listData; _listData.Items.Add(_listItem2); _listData.Parent = _listItem; (list[index].Para.Parent as DataDocumentListItem).Blocks.Add(_listData); } } //Trường hợp cùng cấp else { if (list[index].Para.Parent is DataDocumentListItem && list[index].Para.Parent.Parent is DataDocumentList) { DataDocumentListItem _listItem = new DataDocumentListItem(); list[t].Para.Parent = _listItem; _listItem.Blocks.Add(list[t].Para); _listItem.TypeWordBullet = list[t].ListType; _listItem.Parent = list[index].Para.Parent.Parent; (list[index].Para.Parent.Parent as DataDocumentList).Items.Add(_listItem); } } } } } } }
/// <summary> /// Hàm lấy đoạn văn bản của PowerPoint /// </summary> /// <param name="_paragraph"></param> /// <returns></returns> private DataParagraph GetEParagraph(pp.TextRange _paragraph) { DataParagraph eParagraph = new DataParagraph(); //Căn vị trí đoạn văn bản - mặc định sẽ căn trái eParagraph.LineHeight = _paragraph.ParagraphFormat.SpaceWithin; eParagraph.Margin.Top = _paragraph.ParagraphFormat.SpaceBefore; eParagraph.TextAlign = Text.HorizontalAlign.Left; switch (_paragraph.ParagraphFormat.Alignment) { case PpParagraphAlignment.ppAlignmentMixed: break; case PpParagraphAlignment.ppAlignLeft: eParagraph.TextAlign = Text.HorizontalAlign.Left; break; case PpParagraphAlignment.ppAlignCenter: eParagraph.TextAlign = Text.HorizontalAlign.Center; break; case PpParagraphAlignment.ppAlignRight: eParagraph.TextAlign = Text.HorizontalAlign.Right; break; case PpParagraphAlignment.ppAlignJustify: eParagraph.TextAlign = Text.HorizontalAlign.Justify; break; case PpParagraphAlignment.ppAlignDistribute: break; case PpParagraphAlignment.ppAlignThaiDistribute: break; case PpParagraphAlignment.ppAlignJustifyLow: break; default: break; } foreach (pp.TextRange textRun in _paragraph.Runs()) { DataRun eRun = new DataRun(); if (textRun.Font.NameAscii == "Cambria Math" && textRun.Font.NameOther == "Cambria Math") { //xuất ảnh chứa công thức toán học return(null); } else { //Tạm rào để sử dụng app demo bool result = ((System.Windows.Application.Current as IAppGlobal).SelectedTheme.FontFamilies.Fonts).Any(o => o.Name == textRun.Font.NameAscii); if (result) { eRun.Fontfamily = textRun.Font.NameAscii; } else { eRun.Fontfamily = "Arial"; } eRun.FontSize = textRun.Font.Size; if (textRun.Font.Bold == Microsoft.Office.Core.MsoTriState.msoTrue || textRun.Font.Bold == Microsoft.Office.Core.MsoTriState.msoCTrue) { eRun.FontWeight = Text.FontWeight.Bold; } else { eRun.FontWeight = Text.FontWeight.Normal; } if (textRun.Font.Italic == office.MsoTriState.msoTrue || textRun.Font.Italic == office.MsoTriState.msoCTrue) { eRun.FontStyle = Text.FontStyle.Italic; } else { eRun.FontStyle = Text.FontStyle.Normal; } if (textRun.Font.Underline == office.MsoTriState.msoTrue || textRun.Font.Underline == office.MsoTriState.msoCTrue) { DataUnderline underline = new DataUnderline(); underline.Color = new SolidColor() { Color = ConvertColor(textRun.Font.Color.RGB) }; underline.Style = Text.UnderlineStyle.Single; eRun.Underline = underline; } eRun.Foreground = new DataColor() { Name = ConvertColor(textRun.Font.Color.RGB) }; eRun.Text = textRun.Text; eRun.ScriptOffset = (int)(textRun.Font.BaselineOffset * 100); eParagraph.Inlines.Add(eRun); } } return(eParagraph); }