Я хочу заменить все текстовые поля в моем документе RTF на таблицы.Текстовые поля вставляются с использованием MS Word.Я пробовал следующий код в C #:
Document rtfFile = new Document(@"C:\Tools\docwithTextBox.rtf");
DocumentBuilder builder = new DocumentBuilder(rtfFile);
var nodes = rtfFile.GetChildNodes(NodeType.Shape, true);
foreach (Shape shape in nodes)
{
if (shape.ShapeType == ShapeType.TextBox)
{
var width = shape.Width;
var height = shape.Height;
string text = shape.GetText();
builder.MoveTo(shape);
shape.Remove();
Aspose.Words.Tables.Table table = builder.StartTable();
Cell cell = builder.InsertCell();
builder.Write(text);
builder.RowFormat.Height = height;
builder.RowFormat.HeightRule = HeightRule.Exactly;
table.PreferredWidth = PreferredWidth.FromPoints(width);
builder.EndRow();
builder.EndTable();
}
}
rtfFile.Save(@"C:\Tools\docwithTextBox.rtf");
Я столкнулся со следующими проблемами с вышеупомянутым подходом:
Таблицы не добавляются в позициисоответствующие текстовые поля.Хотя я звоню builder.MoveTo()
, значение left
новой таблицы не совпадает с текстовым полем.
Высота некоторых таблиц не совпадает свысота соответствующая shape(TextBox
.Ширина сохраняется правильно.
Строка, возвращаемая методом shape.GetText()
, не сохраняет форматирование.Например, даже если текст внутри текстового поля выделен жирным шрифтом или курсивом, метод shape.GetText()
возвращает неформатированный текст.Как сохранить форматирование перед вставкой в таблицу?
Пожалуйста, дайте мне знать, как я могу решить эту проблему.Любая помощь будет высоко оценена.
Спасибо,