Расположите стол
Существуют плавающие таблицы и встроенные таблицы:
- Inline tables располагаются на том же слое, что и текст, и помещаются в текстовом потоке, который окружает таблицу только сверху и снизу. Встроенные таблицы всегда будут отображаться между абзацами, в которых вы их разместили.
- Floating tables накладываются слоями на текст, а положение таблицы относительно абзаца определяется привязкой таблицы. Из-за этого положение плавающей таблицы в документе зависит от настроек вертикального и горизонтального позиционирования.
Иногда вам нужно расположить таблицу в документе определенным образом. Для этого вам нужно воспользоваться инструментами выравнивания и установить отступы между таблицей и окружающим текстом.
В этой статье мы обсудим, какие опции Aspose.Words предоставляет для позиционирования.
Укажите положение встроенной таблицы
Вы можете задать положение встроенной таблицы, используя API Aspose.Words и свойство Alignment. Таким образом, вы можете настроить выравнивание таблицы относительно страницы документа.
В следующем примере кода показано, как задать положение встроенной таблицы:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git. | |
auto doc = MakeObject<Document>(MyDir + u"Tables.docx"); | |
auto table = System::ExplicitCast<Table>(doc->GetChild(NodeType::Table, 0, true)); | |
// Align the table to the center of the page. | |
table->set_Alignment(TableAlignment::Center); |
Получите плавающее выравнивание таблицы
Если для переноса текста таблицы задано значение Around, вы можете выровнять таблицу по горизонтали и вертикали, используя свойства RelativeHorizontalAlignment и RelativeVerticalAlignment.
С помощью other types of text wrapping вы можете получить встроенное выравнивание таблицы, используя свойство Alignment.
В следующем примере кода показано, как получить выравнивание таблицы:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git. | |
auto doc = MakeObject<Document>(MyDir + u"Tables.docx"); | |
auto table = System::ExplicitCast<Table>(doc->GetChild(NodeType::Table, 0, true)); | |
if (table->get_TextWrapping() == TextWrapping::Around) | |
{ | |
std::cout << System::EnumGetName(table->get_RelativeHorizontalAlignment()) << std::endl; | |
std::cout << System::EnumGetName(table->get_RelativeVerticalAlignment()) << std::endl; | |
} | |
else | |
{ | |
std::cout << System::EnumGetName(table->get_Alignment()) << std::endl; | |
} |
Получить плавающее положение стола
Положение плавающей таблицы определяется с помощью следующих свойств:
- HorizontalAnchor – объект для вычисления горизонтального положения плавающей таблицы
- VerticalAnchor – объект для вычисления вертикального положения плавающей таблицы
- AbsoluteHorizontalDistance – абсолютное горизонтальное положение плавающего стола
- AbsoluteVerticalDistance – абсолютное вертикальное положение плавающего стола
- AllowOverlap – опция для включения/ отключения перекрытия с другими плавающими объектами
- RelativeHorizontalAlignment – относительное горизонтальное выравнивание плавающей таблицы.
- RelativeVerticalAlignment – относительное вертикальное выравнивание плавающей таблицы.
В следующем примере кода показано, как получить положение плавающей таблицы:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git. | |
auto doc = MakeObject<Document>(MyDir + u"Table wrapped by text.docx"); | |
for (const auto& table : System::IterateOver<Table>(doc->get_FirstSection()->get_Body()->get_Tables())) | |
{ | |
// If the table is floating type, then print its positioning properties. | |
if (table->get_TextWrapping() == TextWrapping::Around) | |
{ | |
std::cout << System::EnumGetName(table->get_HorizontalAnchor()) << std::endl; | |
std::cout << System::EnumGetName(table->get_VerticalAnchor()) << std::endl; | |
std::cout << table->get_AbsoluteHorizontalDistance() << std::endl; | |
std::cout << table->get_AbsoluteVerticalDistance() << std::endl; | |
std::cout << System::Convert::ToString(table->get_AllowOverlap()) << std::endl; | |
std::cout << table->get_AbsoluteHorizontalDistance() << std::endl; | |
std::cout << System::EnumGetName(table->get_RelativeVerticalAlignment()) << std::endl; | |
std::cout << ".............................." << std::endl; | |
} | |
} |
Установите плавающее положение стола
Точно так же, как и getting, вы можете задать положение плавающей таблицы, используя тот же Aspose.Words API.
Важно знать, что выравнивание и расстояние по горизонтали и вертикали являются комбинированными свойствами, и одно из них может изменять другое. Например, установка значения RelativeHorizontalAlignment приведет к возврату значения AbsoluteHorizontalDistance к его значению по умолчанию, и наоборот. То же самое верно для вертикального расположения.
В следующем примере кода показано, как задать положение плавающей таблицы:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git. | |
auto doc = MakeObject<Document>(MyDir + u"Table wrapped by text.docx"); | |
SharedPtr<Table> table = doc->get_FirstSection()->get_Body()->get_Tables()->idx_get(0); | |
table->set_AbsoluteHorizontalDistance(10); | |
table->set_RelativeVerticalAlignment(VerticalAlignment::Center); | |
doc->Save(ArtifactsDir + u"WorkingWithTables.FloatingTablePosition.docx"); |
Получить расстояние между таблицей и окружающим текстом
Aspose.Words также предоставляет возможность узнать расстояния между таблицами и окружающими текстами:
- DistanceTop – значение расстояния сверху
- DistanceBottom – значение расстояния восприятия
- DistanceRight – значение расстояния справа
- DistanceLeft – значение расстояния слева
В следующем примере кода показано, как определить расстояние между таблицей и окружающим ее текстом:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git. | |
auto doc = MakeObject<Document>(MyDir + u"Tables.docx"); | |
std::cout << "\nGet distance between table left, right, bottom, top and the surrounding text." << std::endl; | |
auto table = System::ExplicitCast<Table>(doc->GetChild(NodeType::Table, 0, true)); | |
std::cout << table->get_DistanceTop() << std::endl; | |
std::cout << table->get_DistanceBottom() << std::endl; | |
std::cout << table->get_DistanceRight() << std::endl; | |
std::cout << table->get_DistanceLeft() << std::endl; |