Ejemplo n.º 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);
                                }
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
        private void ShapeIsText(PageLayer _page, pp.Shape _shape, EAnimation _animation, string _idShape)
        {
            //Thiếu textindent và strike words
            DataDocument document = new DataDocument();

            document.Name = "TextEditor";
            List <DataParaPositionBullet> ListParaPosition   = new List <DataParaPositionBullet>();
            DataParaPositionBullet        paraPositionBullet = null;

            document.Blocks.Clear();
            document.Container = new DataTextContainer();

            if (_shape.Type == office.MsoShapeType.msoTextBox)
            {
                document.TypeTextContainer = TypeTextContainer.AutoChangeHeight;
            }
            else
            {
                document.TypeTextContainer = TypeTextContainer.ChangeSize;
            }


            //Lấy nội dung
            pp.BulletFormat hasBullet = _shape.TextFrame.TextRange.ParagraphFormat.Bullet;
            if (hasBullet.Visible == office.MsoTriState.msoCTrue || hasBullet.Visible == office.MsoTriState.msoTrue)
            {
                foreach (pp.TextRange paragraph in _shape.TextFrame.TextRange.Paragraphs())
                {
                    DataDocumentList docList = new DataDocumentList();
                    int level = paragraph.IndentLevel;
                    DataDocumentListItem docListItem = new DataDocumentListItem();
                    pp.BulletFormat      prgBullet   = paragraph.ParagraphFormat.Bullet;
                    docListItem.TypeWordBullet = new Text.ViewModels.Text.TypeWordBullet();

                    docListItem.TypeWordBullet.StarIndex = prgBullet.StartValue;
                    if (prgBullet.Visible == office.MsoTriState.msoCTrue || prgBullet.Visible == office.MsoTriState.msoTrue)
                    {
                        docListItem.TypeWordBullet            = new Text.ViewModels.Text.TypeWordBullet();
                        docListItem.TypeWordBullet.SizeOffset = 100;
                        if (prgBullet.Type == PpBulletType.ppBulletNumbered)
                        {
                            docListItem.TypeWordBullet.Fontfamily = "Arial";
                            docListItem.TypeWordBullet.Text       = "1.";
                            docListItem.TypeWordBullet.ListType   = Text.ListType.Decimal;
                            switch (prgBullet.Style)
                            {
                            case PpNumberedBulletStyle.ppBulletStyleMixed:
                                break;

                            case PpNumberedBulletStyle.ppBulletAlphaLCPeriod:
                                docListItem.TypeWordBullet.Fontfamily = "Arial";
                                docListItem.TypeWordBullet.Text       = "a.";
                                docListItem.TypeWordBullet.ListType   = Text.ListType.LowerLatin;
                                break;

                            case PpNumberedBulletStyle.ppBulletAlphaUCPeriod:
                                docListItem.TypeWordBullet.Fontfamily = "Arial";
                                docListItem.TypeWordBullet.Text       = "A.";
                                docListItem.TypeWordBullet.ListType   = Text.ListType.UpperLatin;
                                break;

                            case PpNumberedBulletStyle.ppBulletArabicParenRight:
                                docListItem.TypeWordBullet.Fontfamily = "Arial";
                                docListItem.TypeWordBullet.Text       = "1)";
                                docListItem.TypeWordBullet.ListType   = Text.ListType.Decimal2;
                                break;

                            case PpNumberedBulletStyle.ppBulletArabicPeriod:
                                docListItem.TypeWordBullet.Fontfamily = "Arial";
                                docListItem.TypeWordBullet.Text       = "1.";
                                docListItem.TypeWordBullet.ListType   = Text.ListType.Decimal;
                                break;

                            case PpNumberedBulletStyle.ppBulletRomanLCParenBoth:
                                break;

                            case PpNumberedBulletStyle.ppBulletRomanLCParenRight:
                                break;

                            case PpNumberedBulletStyle.ppBulletRomanLCPeriod:
                                docListItem.TypeWordBullet.Fontfamily = "Arial";
                                docListItem.TypeWordBullet.Text       = "i.";
                                docListItem.TypeWordBullet.ListType   = Text.ListType.LowerRoman;
                                break;

                            case PpNumberedBulletStyle.ppBulletRomanUCPeriod:
                                docListItem.TypeWordBullet.Fontfamily = "Arial";
                                docListItem.TypeWordBullet.Text       = "I.";
                                docListItem.TypeWordBullet.ListType   = Text.ListType.UpperRoman;
                                break;

                            case PpNumberedBulletStyle.ppBulletAlphaLCParenBoth:
                                break;

                            case PpNumberedBulletStyle.ppBulletAlphaLCParenRight:
                                docListItem.TypeWordBullet.Fontfamily = "Arial";
                                docListItem.TypeWordBullet.Text       = "a)";
                                docListItem.TypeWordBullet.ListType   = Text.ListType.LowerLatin2;
                                break;

                            case PpNumberedBulletStyle.ppBulletAlphaUCParenBoth:
                                break;

                            case PpNumberedBulletStyle.ppBulletAlphaUCParenRight:
                                break;

                            case PpNumberedBulletStyle.ppBulletArabicParenBoth:
                                break;

                            case PpNumberedBulletStyle.ppBulletArabicPlain:
                                break;

                            case PpNumberedBulletStyle.ppBulletRomanUCParenBoth:
                                break;

                            case PpNumberedBulletStyle.ppBulletRomanUCParenRight:
                                break;

                            case PpNumberedBulletStyle.ppBulletSimpChinPlain:
                                break;

                            case PpNumberedBulletStyle.ppBulletSimpChinPeriod:
                                break;

                            case PpNumberedBulletStyle.ppBulletCircleNumDBPlain:
                                break;

                            case PpNumberedBulletStyle.ppBulletCircleNumWDWhitePlain:
                                break;

                            case PpNumberedBulletStyle.ppBulletCircleNumWDBlackPlain:
                                break;

                            case PpNumberedBulletStyle.ppBulletTradChinPlain:
                                break;

                            case PpNumberedBulletStyle.ppBulletTradChinPeriod:
                                break;

                            case PpNumberedBulletStyle.ppBulletArabicAlphaDash:
                                break;

                            case PpNumberedBulletStyle.ppBulletArabicAbjadDash:
                                break;

                            case PpNumberedBulletStyle.ppBulletHebrewAlphaDash:
                                break;

                            case PpNumberedBulletStyle.ppBulletKanjiKoreanPlain:
                                break;

                            case PpNumberedBulletStyle.ppBulletKanjiKoreanPeriod:
                                break;

                            case PpNumberedBulletStyle.ppBulletArabicDBPlain:
                                break;

                            case PpNumberedBulletStyle.ppBulletArabicDBPeriod:
                                break;

                            case PpNumberedBulletStyle.ppBulletThaiAlphaPeriod:
                                break;

                            case PpNumberedBulletStyle.ppBulletThaiAlphaParenRight:
                                break;

                            case PpNumberedBulletStyle.ppBulletThaiAlphaParenBoth:
                                break;

                            case PpNumberedBulletStyle.ppBulletThaiNumPeriod:
                                break;

                            case PpNumberedBulletStyle.ppBulletThaiNumParenRight:
                                break;

                            case PpNumberedBulletStyle.ppBulletThaiNumParenBoth:
                                break;

                            case PpNumberedBulletStyle.ppBulletHindiAlphaPeriod:
                                break;

                            case PpNumberedBulletStyle.ppBulletHindiNumPeriod:
                                break;

                            case PpNumberedBulletStyle.ppBulletKanjiSimpChinDBPeriod:
                                break;

                            case PpNumberedBulletStyle.ppBulletHindiNumParenRight:
                                break;

                            case PpNumberedBulletStyle.ppBulletHindiAlpha1Period:
                                break;

                            default:
                                break;
                            }
                        }
                        else if (prgBullet.Type == PpBulletType.ppBulletUnnumbered)
                        {
                            if (prgBullet.Character == 8226)
                            {
                                docListItem.TypeWordBullet.Fontfamily = "Wingdings";
                                docListItem.TypeWordBullet.Text       = "l";
                                docListItem.TypeWordBullet.ListType   = Text.ListType.Bullet;
                            }
                            else if (prgBullet.Character == 111)
                            {
                                docListItem.TypeWordBullet.Fontfamily = "Raleway";
                                docListItem.TypeWordBullet.Text       = "o";
                                docListItem.TypeWordBullet.ListType   = Text.ListType.Bullet;
                            }
                            else if (prgBullet.Character == 167)
                            {
                                docListItem.TypeWordBullet.Fontfamily = "Wingdings";
                                docListItem.TypeWordBullet.Text       = ((char)167).ToString();
                                docListItem.TypeWordBullet.ListType   = Text.ListType.Bullet;
                            }
                            else if (prgBullet.Character == 113)
                            {
                                docListItem.TypeWordBullet.Fontfamily = "Wingdings";
                                docListItem.TypeWordBullet.Text       = "q";
                                docListItem.TypeWordBullet.ListType   = Text.ListType.Bullet;
                            }
                            else if (prgBullet.Character == 118)
                            {
                                docListItem.TypeWordBullet.Fontfamily = "Wingdings";
                                docListItem.TypeWordBullet.Text       = "v";
                                docListItem.TypeWordBullet.ListType   = Text.ListType.Bullet;
                            }
                            else if (prgBullet.Character == 216)
                            {
                                docListItem.TypeWordBullet.Fontfamily = "Wingdings";
                                docListItem.TypeWordBullet.Text       = ((char)216).ToString();
                                docListItem.TypeWordBullet.ListType   = Text.ListType.Bullet;
                            }
                            else if (prgBullet.Character == 252)
                            {
                                docListItem.TypeWordBullet.Fontfamily = "Wingdings";
                                docListItem.TypeWordBullet.Text       = ((char)252).ToString();
                                docListItem.TypeWordBullet.ListType   = Text.ListType.Bullet;
                            }
                            else
                            {
                                docListItem.TypeWordBullet.Fontfamily = "Wingdings";
                                docListItem.TypeWordBullet.Text       = "l";
                                docListItem.TypeWordBullet.ListType   = Text.ListType.Bullet;
                            }
                        }
                    }
                    paraPositionBullet          = new DataParaPositionBullet();
                    paraPositionBullet.Para     = GetEParagraph(paragraph);
                    paraPositionBullet.ListType = docListItem.TypeWordBullet;
                    paraPositionBullet.Position = level;
                    ListParaPosition.Add(paraPositionBullet);
                }
            }
            else
            {
                foreach (pp.TextRange paragraph in _shape.TextFrame.TextRange.Paragraphs())
                {
                    /*
                     * var _para = GetEParagraph(paragraph);
                     * if (_para.Inlines?.Count > 0)
                     * {
                     *  if ((_para.Inlines.Last() as DataRun)?.Text != null)
                     *      (_para.Inlines.Last() as DataRun).Text = (_para.Inlines.Last() as DataRun).Text + "\r";
                     * }
                     * document.Blocks.Add(_para);*/
                    paraPositionBullet      = new DataParaPositionBullet();
                    paraPositionBullet.Para = GetEParagraph(paragraph);
                    if (paraPositionBullet.Para?.Inlines?.Count > 0)
                    {
                        if ((paraPositionBullet.Para.Inlines.Last() as DataRun)?.Text != null)
                        {
                            (paraPositionBullet.Para.Inlines.Last() as DataRun).Text = (paraPositionBullet.Para.Inlines.Last() as DataRun).Text + "\r";
                        }
                    }
                    paraPositionBullet.ListType = null;
                    paraPositionBullet.Position = 0;
                    ListParaPosition.Add(paraPositionBullet);
                }
                //goto addToDoc;
            }
            if (ListParaPosition?.Count == 0)
            {
                paraPositionBullet      = new DataParaPositionBullet();
                paraPositionBullet.Para = new DataParagraph();
                DataRun _run = new DataRun();
                _run.Text       = "\r";
                _run.FontSize   = 14;
                _run.Fontfamily = "Times New Roman";
                _run.Parent     = paraPositionBullet.Para;
                paraPositionBullet.Para.Inlines.Add(_run);
                ListParaPosition.Add(paraPositionBullet);
            }
            ConverterListParaToDataDocument(ListParaPosition, document);

            _page.Children.Add(document);
        }