Позиция на маса
Има плаващи таблици и вградени таблици:
- Inline tables са поставени на същия слой като текста и са поставени в поток от текст, който само заобикаля таблицата над и под. Вградените таблици винаги ще се показват между абзаците, където сте ги поставили.
- Floating tables са наслоени върху текста, а позицията на таблицата по отношение на абзаца се определя от котвата на таблицата. Поради това позицията на плаващата таблица в документа се влияе от настройките за вертикално и хоризонтално позициониране.
Понякога трябва да поставите таблица в документ по определен начин. За да направите това, трябва да използвате инструментите за подравняване и да зададете отстъпите между таблицата и околния текст.
В тази статия ще обсъдим какви опции Aspose.Words предвижда позиционирането.
Посочете Позицията На Вградената Таблица
Можете да зададете позицията на вградената таблица, като използвате свойството Aspose.Words API и 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; | |
} | |
} |
Задаване На Позиция На Плаваща Маса
Точно като получаване, можете да зададете позицията на плаваща таблица, използвайки същия 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; |