Расположите стол

Существуют плавающие таблицы и встроенные таблицы:

  • 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;