Пример #1
0
        /// <summary>
        /// Функция для поиска и замены изображений в документе
        /// Пробегаюсь по параграфам и нахожу картинки
        /// Картинки имею свое имя. Обычно один параграф и есть одна картинка, что упрощает поиск
        /// Чтобы в дальнейшем запомнить положение той или иной картинки, я
        /// Заменяю место в тексте специальным тегом #picture \\name\\
        /// В дальнейшем при обработке я ищу эти теги и заменяю картинками по имени
        /// </summary>
        /// <param name="text"></param>
        /// <param name="doc"></param>
        /// <returns>Полный текст документа + теги картинок</returns>
        public static string ReplaceImages(this string text, Novacode.Container doc)
        {
            var newText = string.Empty;

            foreach (var p in doc.Paragraphs)
            {
                newText += p.Text;
                if (p.Pictures.Count != 0)
                {
                    newText += $"<#picture= {p.Pictures[0].FileName} #>";
                }
            }
            return(newText);
        }
Пример #2
0
        /// <summary>
        /// Функция для замены таблиц в документе текстовым аналогом
        /// | столбец | столбец |
        /// | строка  | строка  |
        /// Выравнивание пока не реализовано, но пока и так вариант ответа понятен
        /// Каждая ячейка в исходном документе была отдельным параграфом, поэтому я передаю и исходный текст,
        /// чтобы заменить эти ошибки на презентабельный вид
        /// </summary>
        /// <param name="text">текст с картинками</param>
        /// <param name="doc">Контейнер документа</param>
        /// <returns>Полный текст (с картинками) + Таблицы</returns>
        public static string ReplaceTables(this string text, Novacode.Container doc)
        {
            foreach (var p in doc.Tables)
            {
                var processedText = string.Empty;
                var replaceText   = string.Empty;
                var look          = p.Paragraphs;

                for (var i = 0; i < look.Count; i++)
                {
                    if (i != 0 && i % p.ColumnCount == 0)
                    {
                        processedText += "\n";
                    }
                    replaceText   += look[i].Text;
                    processedText += $"| {look[i].Text} ";
                }

                text = text.Replace(replaceText, processedText);
                //processedText += "\n";
            }
            return(text);
        }