Posicione uma mesa

Existem tabelas flutuantes e tabelas embutidas:

  • Tabelas embutidas são colocados na mesma camada do texto e são colocados em um fluxo de texto que circunda apenas a tabela acima e abaixo. As tabelas embutidas sempre aparecerão entre os parágrafos onde você as colocou.
  • Mesas flutuantes são colocados em camadas sobre o texto e a posição da tabela em relação ao parágrafo é determinada pela âncora da tabela. Por causa disso, a posição da tabela 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 ao redor.

Neste artigo, discutiremos quais opções o Aspose.Words oferece para posicionamento.

Especifique a posição da tabela embutida

Você pode definir a posição de uma tabela embutida usando o Aspose.Words API e a propriedade 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-.NET.git.
Document doc = new Document(MyDir + "Tables.docx");
Table table = (Table) doc.GetChild(NodeType.Table, 0, true);
// Align the table to the center of the page.
table.Alignment = TableAlignment.Center;

Obtenha alinhamento de mesa flutuante

Se a quebra automática do texto da tabela estiver definida como Around, você poderá obter o alinhamento horizontal e vertical da tabela usando as propriedades RelativeHorizontalAlignment e RelativeVerticalAlignment.

Com outros tipos de quebra automática de texto, você pode obter alinhamento de tabela embutido 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-.NET.git.
Document doc = new Document(MyDir + "Tables.docx");
Table table = (Table) doc.GetChild(NodeType.Table, 0, true);
if (table.TextWrapping == TextWrapping.Around)
{
Console.WriteLine(table.RelativeHorizontalAlignment);
Console.WriteLine(table.RelativeVerticalAlignment);
}
else
{
Console.WriteLine(table.Alignment);
}

Obtenha a posição da mesa flutuante

A posição de uma tabela flutuante é determinada usando as seguintes propriedades:

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-.NET.git.
Document doc = new Document(MyDir + "Table wrapped by text.docx");
foreach (Table table in doc.FirstSection.Body.Tables)
{
// If the table is floating type, then print its positioning properties.
if (table.TextWrapping == TextWrapping.Around)
{
Console.WriteLine(table.HorizontalAnchor);
Console.WriteLine(table.VerticalAnchor);
Console.WriteLine(table.AbsoluteHorizontalDistance);
Console.WriteLine(table.AbsoluteVerticalDistance);
Console.WriteLine(table.AllowOverlap);
Console.WriteLine(table.AbsoluteHorizontalDistance);
Console.WriteLine(table.RelativeVerticalAlignment);
Console.WriteLine("..............................");
}
}

Definir posição da mesa flutuante

Assim como fazer, você pode definir a posição de uma tabela flutuante usando o mesmo Aspose.Words API.

É importante saber que alinhamento e distância horizontal e vertical são propriedades combinadas e uma pode zerar a outra. Por exemplo, definir RelativeHorizontalAlignment redefinirá o AbsoluteHorizontalDistance para seu valor padrão e vice-versa. O mesmo é true para o arranjo 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-.NET.git.
Document doc = new Document(MyDir + "Table wrapped by text.docx");
Table table = doc.FirstSection.Body.Tables[0];
table.AbsoluteHorizontalDistance = 10;
table.RelativeVerticalAlignment = VerticalAlignment.Center;
doc.Save(ArtifactsDir + "WorkingWithTables.FloatingTablePosition.docx");

Obtenha distância entre a tabela e o texto circundante

Aspose.Words também oferece a oportunidade de descobrir as distâncias entre tabelas e textos circundantes:

O exemplo de código a seguir mostra como obter a distância entre uma tabela e o texto ao seu redor:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET.git.
Document doc = new Document(MyDir + "Tables.docx");
Console.WriteLine("\nGet distance between table left, right, bottom, top and the surrounding text.");
Table table = (Table) doc.GetChild(NodeType.Table, 0, true);
Console.WriteLine(table.DistanceTop);
Console.WriteLine(table.DistanceBottom);
Console.WriteLine(table.DistanceRight);
Console.WriteLine(table.DistanceLeft);