Exemple #1
0
        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);
                                }
                            }
                        }
                    }
                }
            }
        }
Exemple #2
0
        /// <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);
        }