Posicionar uma tabela
Existem mesas flutuantes e Mesas embutidas:
- Inline tables são colocados na mesma camada que o texto e são colocados em um fluxo de texto que envolve apenas a tabela acima e abaixo. As tabelas em linha aparecerão sempre entre os parágrafos onde as colocou.
- Floating tables estão em camadas sobre o texto e a posição da tabela em relação ao parágrafo é determinada pela âncora da tabela. Devido a isso, a posição da mesa flutuante no documento é afetada pelas configurações de posicionamento vertical e horizontal.
Às vezes, você precisa posicionar uma tabela em um documento de uma determinada maneira. Para fazer isso, você precisa usar as ferramentas de alinhamento e definir os recuos entre a tabela e o texto circundante.
Neste artigo, discutiremos quais opções Aspose.Words fornecem para o posicionamento.
Especificar A Posição Da Tabela Em Linha
Você pode definir a posição de uma tabela embutida usando as propriedades Aspose.Words API e Alignment. Assim, você pode ajustar o alinhamento da tabela em relação à página do documento.
O exemplo de código a seguir mostra como definir a posição de uma tabela embutida:
// 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); |
Obter Alinhamento Da Mesa Flutuante
Se a quebra de texto da tabela estiver definida como Around, pode obter o alinhamento horizontal e vertical da tabela utilizando as propriedades RelativeHorizontalAlignment e RelativeVerticalAlignment.
Com other types of text wrapping, você pode obter o alinhamento da tabela embutida usando a propriedade Alignment.
O exemplo de código a seguir mostra como obter o alinhamento da tabela:
// 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; | |
} |
Obter Posição Da Mesa Flutuante
A posição de uma mesa flutuante é determinada utilizando as seguintes propriedades:
- HorizontalAnchor - objecto de cálculo do posicionamento horizontal de uma mesa flutuante
- VerticalAnchor - um objecto para calcular o posicionamento vertical de uma mesa flutuante
- AbsoluteHorizontalDistance - posição horizontal absoluta da mesa flutuante
- AbsoluteVerticalDistance - posição vertical absoluta da mesa flutuante
- AllowOverlap - opção para activar / desactivar a sobreposição com outros objectos flutuantes
- RelativeHorizontalAlignment - alinhamento horizontal relativo da mesa flutuante.
- RelativeVerticalAlignment - alinhamento vertical relativo da mesa flutuante.
O exemplo de código a seguir mostra como obter a posição de uma tabela flutuante:
// 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; | |
} | |
} |
Definir A Posição Da Mesa Flutuante
Assim como obter, você pode definir a posição de uma tabela flutuante usando o mesmo Aspose.Words API.
É importante saber que o alinhamento e a distância horizontal e vertical são propriedades combinadas e uma pode repor a outra. Por exemplo, definir RelativeHorizontalAlignment redefinirá o AbsoluteHorizontalDistance para seu valor padrão e vice-versa. O mesmo se aplica à disposição vertical.
O exemplo de código a seguir mostra como definir a posição de uma tabela flutuante:
// 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"); |
Obter distância entre a tabela e o texto circundante
Aspose.Words também oferece uma oportunidade para descobrir as distâncias entre as tabelas e os textos circundantes:
- DistanceTop - o valor da distância de cima
- DistanceBottom - o valor da distância de percepção
- DistanceRight - Valor da distância à direita
- DistanceLeft - Valor da distância à esquerda
O exemplo de código a seguir mostra como obter a distância entre uma tabela e seu texto ao redor:
// 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; |