Exemple #1
0
        /**
         * Writes the content of the RtfList
         * @since 2.1.3
         */
        public override void WriteContent(Stream result)
        {
            if (!this.inTable)
            {
                result.Write(OPEN_GROUP, 0, OPEN_GROUP.Length);
            }

            int itemNr = 0;

            if (items != null)
            {
                for (int i = 0; i < items.Count; i++)
                {
                    RtfElement thisRtfElement = (RtfElement)items[i];
                    //thisRtfElement.WriteContent(result);
                    if (thisRtfElement is RtfListItem)
                    {
                        itemNr++;
                        RtfListItem  rtfElement = (RtfListItem)thisRtfElement;
                        RtfListLevel listLevel  = rtfElement.GetParent();
                        if (listLevel.GetListLevel() == 0)
                        {
                            CorrectIndentation();
                        }

                        if (i == 0)
                        {
                            listLevel.WriteListBeginning(result);
                            WriteListNumbers(result);
                        }

                        WriteListTextBlock(result, itemNr, listLevel);

                        rtfElement.WriteContent(result);

                        if (i < (items.Count - 1) || !this.inTable || listLevel.GetListType() > 0) // TODO Fix no paragraph on last list item in tables
                        {
                            result.Write(RtfParagraph.PARAGRAPH, 0, RtfParagraph.PARAGRAPH.Length);
                        }
                        this.document.OutputDebugLinebreak(result);
                    }
                    else if (thisRtfElement is RtfList)
                    {
                        ((RtfList)thisRtfElement).WriteContent(result);
                        //              ((RtfList)thisRtfElement).WriteListBeginning(result);
                        WriteListNumbers(result);
                        this.document.OutputDebugLinebreak(result);
                    }
                }
            }
            if (!this.inTable)
            {
                result.Write(CLOSE_GROUP, 0, CLOSE_GROUP.Length);
                result.Write(RtfParagraph.PARAGRAPH_DEFAULTS, 0, RtfParagraph.PARAGRAPH_DEFAULTS.Length);
            }
        }
        /// <summary>
        /// Writes the content of the RtfList
        /// @since 2.1.3
        /// </summary>
        public override void WriteContent(Stream result)
        {
            if (!InTable)
            {
                result.Write(OpenGroup, 0, OpenGroup.Length);
            }

            int itemNr = 0;

            if (_items != null)
            {
                for (int i = 0; i < _items.Count; i++)
                {
                    RtfElement thisRtfElement = (RtfElement)_items[i];
                    //thisRtfElement.WriteContent(result);
                    if (thisRtfElement is RtfListItem)
                    {
                        itemNr++;
                        RtfListItem  rtfElement = (RtfListItem)thisRtfElement;
                        RtfListLevel listLevel  = rtfElement.GetParent();
                        if (listLevel.GetListLevel() == 0)
                        {
                            CorrectIndentation();
                        }

                        if (i == 0)
                        {
                            listLevel.WriteListBeginning(result);
                            WriteListNumbers(result);
                        }

                        WriteListTextBlock(result, itemNr, listLevel);

                        rtfElement.WriteContent(result);

                        if (i < (_items.Count - 1) || !InTable || listLevel.GetListType() > 0)
                        { // TODO Fix no paragraph on last list item in tables
                            result.Write(RtfParagraph.Paragraph, 0, RtfParagraph.Paragraph.Length);
                        }
                        Document.OutputDebugLinebreak(result);
                    }
                    else if (thisRtfElement is RtfList)
                    {
                        ((RtfList)thisRtfElement).WriteContent(result);
                        //              ((RtfList)thisRtfElement).WriteListBeginning(result);
                        WriteListNumbers(result);
                        Document.OutputDebugLinebreak(result);
                    }
                }
            }
            if (!InTable)
            {
                result.Write(CloseGroup, 0, CloseGroup.Length);
                result.Write(RtfPhrase.ParagraphDefaults, 0, RtfPhrase.ParagraphDefaults.Length);
            }
        }
        /// <summary>
        /// Writes the content of this RtfTable
        /// </summary>
        public override void WriteContent(Stream result)
        {
            if (!InHeader)
            {
                if (_offset != -1)
                {
                    result.Write(RtfFont.FontSize, 0, RtfFont.FontSize.Length);
                    byte[] t;
                    result.Write(t = IntToByteArray(_offset), 0, t.Length);
                }
                result.Write(RtfParagraph.Paragraph, 0, RtfParagraph.Paragraph.Length);
            }

            for (int i = 0; i < _rows.Count; i++)
            {
                RtfElement re = (RtfElement)_rows[i];
                re.WriteContent(result);
            }

            result.Write(RtfPhrase.ParagraphDefaults, 0, RtfPhrase.ParagraphDefaults.Length);
        }
        /**
         * Writes the content of this RtfTable
         */
        public override void WriteContent(Stream result)
        {
            if (!inHeader)
            {
                if (this.offset != -1)
                {
                    result.Write(RtfFont.FONT_SIZE, 0, RtfFont.FONT_SIZE.Length);
                    byte[] t;
                    result.Write(t = IntToByteArray(this.offset), 0, t.Length);
                }
                result.Write(RtfParagraph.PARAGRAPH, 0, RtfParagraph.PARAGRAPH.Length);
            }

            for (int i = 0; i < this.rows.Count; i++)
            {
                RtfElement re = (RtfElement)this.rows[i];
                re.WriteContent(result);
            }

            result.Write(RtfParagraph.PARAGRAPH_DEFAULTS, 0, RtfParagraph.PARAGRAPH_DEFAULTS.Length);
        }
Exemple #5
0
        /**
         * Writes the definition part of this list level
         * @param result
         * @throws IOException
         * @since 2.1.3
         */
        public void WriteDefinition(Stream result)
        {
            byte[] t;
            result.Write(OPEN_GROUP, 0, OPEN_GROUP.Length);
            result.Write(LIST, 0, LIST.Length);
            result.Write(LIST_TEMPLATE_ID, 0, LIST_TEMPLATE_ID.Length);
            result.Write(t = IntToByteArray(document.GetRandomInt()), 0, t.Length);

            int levelsToWrite = -1;

            switch (this.listType)
            {
            case LIST_TYPE_NORMAL:
                levelsToWrite = listLevels.Count;
                break;

            case LIST_TYPE_SIMPLE:
                result.Write(LIST_SIMPLE, 0, LIST_SIMPLE.Length);
                result.Write(t = IntToByteArray(1), 0, t.Length);
                levelsToWrite  = 1;
                break;

            case LIST_TYPE_HYBRID:
                result.Write(LIST_HYBRID, 0, LIST_HYBRID.Length);
                levelsToWrite = listLevels.Count;
                break;

            default:
                break;
            }
            this.document.OutputDebugLinebreak(result);

            // TODO: Figure out hybrid because multi-level hybrid does not work.
            // Seems hybrid is mixed type all single level - Simple = single level
            // SIMPLE1/HYRBID
            // 1. Line 1
            // 2. Line 2
            // MULTI-LEVEL LISTS Are Simple0 - 9 levels (0-8) all single digit
            // 1. Line 1
            // 1.1. Line 1.1
            // 1.2. Line 1.2
            // 2. Line 2

            // write the listlevels here
            for (int i = 0; i < levelsToWrite; i++)
            {
                ((RtfListLevel)listLevels[i]).WriteDefinition(result);
                this.document.OutputDebugLinebreak(result);
            }

            result.Write(LIST_ID, 0, LIST_ID.Length);
            result.Write(t = IntToByteArray(this.listID), 0, t.Length);
            result.Write(CLOSE_GROUP, 0, CLOSE_GROUP.Length);
            this.document.OutputDebugLinebreak(result);
            if (items != null)
            {
                for (int i = 0; i < items.Count; i++)
                {
                    RtfElement rtfElement = (RtfElement)items[i];
                    if (rtfElement is RtfList)
                    {
                        RtfList rl = (RtfList)rtfElement;
                        rl.WriteDefinition(result);
                        break;
                    }
                    else if (rtfElement is RtfListItem)
                    {
                        RtfListItem rli = (RtfListItem)rtfElement;
                        if (rli.WriteDefinition(result))
                        {
                            break;
                        }
                    }
                }
            }
        }
        /// <summary>
        /// Writes the definition part of this list level
        /// @throws IOException
        /// @since 2.1.3
        /// </summary>
        /// <param name="result"></param>
        public void WriteDefinition(Stream result)
        {
            byte[] t;
            result.Write(OpenGroup, 0, OpenGroup.Length);
            result.Write(_list, 0, _list.Length);
            result.Write(_listTemplateId, 0, _listTemplateId.Length);
            result.Write(t = IntToByteArray(Document.GetRandomInt()), 0, t.Length);

            int levelsToWrite = -1;

            switch (_listType)
            {
            case LIST_TYPE_NORMAL:
                levelsToWrite = _listLevels.Count;
                break;

            case LIST_TYPE_SIMPLE:
                result.Write(_listSimple, 0, _listSimple.Length);
                result.Write(t = IntToByteArray(1), 0, t.Length);
                levelsToWrite  = 1;
                break;

            case LIST_TYPE_HYBRID:
                result.Write(_listHybrid, 0, _listHybrid.Length);
                levelsToWrite = _listLevels.Count;
                break;

            default:
                break;
            }
            Document.OutputDebugLinebreak(result);

            // TODO: Figure out hybrid because multi-level hybrid does not work.
            // Seems hybrid is mixed type all single level - Simple = single level
            // SIMPLE1/HYRBID
            // 1. Line 1
            // 2. Line 2
            // MULTI-LEVEL LISTS Are Simple0 - 9 levels (0-8) all single digit
            // 1. Line 1
            // 1.1. Line 1.1
            // 1.2. Line 1.2
            // 2. Line 2

            // write the listlevels here
            for (int i = 0; i < levelsToWrite; i++)
            {
                ((RtfListLevel)_listLevels[i]).WriteDefinition(result);
                Document.OutputDebugLinebreak(result);
            }

            result.Write(ListId, 0, ListId.Length);
            result.Write(t = IntToByteArray(_listId), 0, t.Length);
            result.Write(CloseGroup, 0, CloseGroup.Length);
            Document.OutputDebugLinebreak(result);
            if (_items != null)
            {
                for (int i = 0; i < _items.Count; i++)
                {
                    RtfElement rtfElement = (RtfElement)_items[i];
                    if (rtfElement is RtfList)
                    {
                        RtfList rl = (RtfList)rtfElement;
                        rl.WriteDefinition(result);
                        break;
                    }
                    else if (rtfElement is RtfListItem)
                    {
                        RtfListItem rli = (RtfListItem)rtfElement;
                        if (rli.WriteDefinition(result))
                        {
                            break;
                        }
                    }
                }
            }
        }
Exemple #7
0
        /**
         * Writes the content of the RtfList
         *
         * @return A byte array containing the actual content of the RtfList
         */
        public override byte[] Write()
        {
            MemoryStream result = new MemoryStream();

            try {
                byte[] t;
                result.Write(t = WriteListBeginning(), 0, t.Length);
                result.Write(t = WriteListNumbers(), 0, t.Length);
                result.Write(OPEN_GROUP, 0, OPEN_GROUP.Length);
                int itemNr = 0;
                for (int i = 0; i < items.Count; i++)
                {
                    RtfElement rtfElement = (RtfElement)items[i];
                    if (rtfElement is RtfListItem)
                    {
                        itemNr++;
                        result.Write(OPEN_GROUP, 0, OPEN_GROUP.Length);
                        result.Write(LIST_TEXT, 0, LIST_TEXT.Length);
                        result.Write(RtfParagraph.PARAGRAPH_DEFAULTS, 0, RtfParagraph.PARAGRAPH_DEFAULTS.Length);
                        if (this.inTable)
                        {
                            result.Write(RtfParagraph.IN_TABLE, 0, RtfParagraph.IN_TABLE.Length);
                        }
                        result.Write(ST.RtfFontList.FONT_NUMBER, 0, ST.RtfFontList.FONT_NUMBER.Length);
                        if (numbered)
                        {
                            result.Write(t = IntToByteArray(fontNumber.GetFontNumber()), 0, t.Length);
                        }
                        else
                        {
                            result.Write(t = IntToByteArray(fontBullet.GetFontNumber()), 0, t.Length);
                        }
                        result.Write(t = WriteIndentations(), 0, t.Length);
                        result.Write(DELIMITER, 0, DELIMITER.Length);
                        if (numbered)
                        {
                            result.Write(t = this.IntToByteArray(itemNr), 0, t.Length);
                            result.Write(LIST_NUMBER_END, 0, LIST_NUMBER_END.Length);
                        }
                        else
                        {
                            result.Write(LIST_BULLET, 0, LIST_BULLET.Length);
                        }
                        result.Write(TAB, 0, TAB.Length);
                        result.Write(CLOSE_GROUP, 0, CLOSE_GROUP.Length);
                        result.Write(t = rtfElement.Write(), 0, t.Length);
                        result.Write(RtfParagraph.PARAGRAPH, 0, RtfParagraph.PARAGRAPH.Length);
                        if (((RtfListItem)rtfElement).IsContainsInnerList())
                        {
                            result.Write(t = WriteListNumbers(), 0, t.Length);
                        }
                        result.WriteByte((byte)'\n');
                    }
                    else if (rtfElement is RtfList)
                    {
                        result.Write(t = rtfElement.Write(), 0, t.Length);
                        result.Write(t = WriteListBeginning(), 0, t.Length);
                        result.WriteByte((byte)'\n');
                    }
                }
                result.Write(CLOSE_GROUP, 0, CLOSE_GROUP.Length);
                if (!this.inTable)
                {
                    result.Write(RtfParagraph.PARAGRAPH_DEFAULTS, 0, RtfParagraph.PARAGRAPH_DEFAULTS.Length);
                }
            } catch (IOException) {
            }
            return(result.ToArray());
        }
Exemple #8
0
        /**
         * Writes the definition part of this list level
         *
         * @return A byte array containing the definition of this list level
         */
        public byte[] WriteDefinition()
        {
            MemoryStream result = new MemoryStream();

            try {
                byte[] t;
                result.Write(OPEN_GROUP, 0, OPEN_GROUP.Length);
                result.Write(LIST_LEVEL, 0, LIST_LEVEL.Length);
                result.Write(LIST_LEVEL_TYPE, 0, LIST_LEVEL_TYPE.Length);
                if (numbered)
                {
                    result.Write(t = IntToByteArray(0), 0, t.Length);
                }
                else
                {
                    result.Write(t = IntToByteArray(23), 0, t.Length);
                }
                result.Write(LIST_LEVEL_TYPE_NEW, 0, LIST_LEVEL_TYPE_NEW.Length);
                if (numbered)
                {
                    result.Write(t = IntToByteArray(0), 0, t.Length);
                }
                else
                {
                    result.Write(t = IntToByteArray(23), 0, t.Length);
                }
                result.Write(LIST_LEVEL_ALIGNMENT, 0, LIST_LEVEL_ALIGNMENT.Length);
                result.Write(t = IntToByteArray(0), 0, t.Length);
                result.Write(LIST_LEVEL_ALIGNMENT_NEW, 0, LIST_LEVEL_ALIGNMENT_NEW.Length);
                result.Write(t = IntToByteArray(0), 0, t.Length);
                result.Write(LIST_LEVEL_START_AT, 0, LIST_LEVEL_START_AT.Length);
                result.Write(t = IntToByteArray(1), 0, t.Length);
                result.Write(OPEN_GROUP, 0, OPEN_GROUP.Length);
                result.Write(LIST_LEVEL_TEXT, 0, LIST_LEVEL_TEXT.Length);
                if (numbered)
                {
                    result.Write(LIST_LEVEL_STYLE_NUMBERED_BEGIN, 0, LIST_LEVEL_STYLE_NUMBERED_BEGIN.Length);
                    if (listLevel < 10)
                    {
                        result.Write(t = IntToByteArray(0), 0, t.Length);
                    }
                    result.Write(t = IntToByteArray(listLevel), 0, t.Length);
                    result.Write(LIST_LEVEL_STYLE_NUMBERED_END, 0, LIST_LEVEL_STYLE_NUMBERED_END.Length);
                }
                else
                {
                    result.Write(LIST_LEVEL_STYLE_BULLETED, 0, LIST_LEVEL_STYLE_BULLETED.Length);
                }
                result.Write(CLOSE_GROUP, 0, CLOSE_GROUP.Length);
                result.Write(OPEN_GROUP, 0, OPEN_GROUP.Length);
                result.Write(LIST_LEVEL_NUMBERS_BEGIN, 0, LIST_LEVEL_NUMBERS_BEGIN.Length);
                if (numbered)
                {
                    result.Write(LIST_LEVEL_NUMBERS_NUMBERED, 0, LIST_LEVEL_NUMBERS_NUMBERED.Length);
                }
                result.Write(LIST_LEVEL_NUMBERS_END, 0, LIST_LEVEL_NUMBERS_END.Length);
                result.Write(CLOSE_GROUP, 0, CLOSE_GROUP.Length);
                result.Write(ST.RtfFontList.FONT_NUMBER, 0, ST.RtfFontList.FONT_NUMBER.Length);
                if (numbered)
                {
                    result.Write(t = IntToByteArray(fontNumber.GetFontNumber()), 0, t.Length);
                }
                else
                {
                    result.Write(t = IntToByteArray(fontBullet.GetFontNumber()), 0, t.Length);
                }
                result.Write(t = WriteIndentations(), 0, t.Length);
                result.Write(LIST_LEVEL_SYMBOL_INDENT, 0, LIST_LEVEL_SYMBOL_INDENT.Length);
                result.Write(t = IntToByteArray(this.leftIndent), 0, t.Length);
                result.Write(CLOSE_GROUP, 0, CLOSE_GROUP.Length);
                result.WriteByte((byte)'\n');
                for (int i = 0; i < items.Count; i++)
                {
                    RtfElement rtfElement = (RtfElement)items[i];
                    if (rtfElement is RtfList)
                    {
                        result.Write(t = ((RtfList)rtfElement).WriteDefinition(), 0, t.Length);
                        break;
                    }
                    else if (rtfElement is RtfListItem)
                    {
                        byte[] data = ((RtfListItem)rtfElement).WriteDefinition();
                        if (data.Length > 0)
                        {
                            result.Write(data, 0, data.Length);
                            break;
                        }
                    }
                }
            } catch (IOException) {
            }
            return(result.ToArray());
        }