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:
- HorizontalAnchor – um objeto para calcular o posicionamento horizontal de uma mesa flutuante
- VerticalAnchor – um objeto para calcular o posicionamento vertical de uma mesa flutuante
- AbsoluteHorizontalDistance – posição absoluta da mesa flutuante horizontal
- AbsoluteVerticalDistance – posição vertical absoluta da mesa flutuante
- AllowOverlap – opção para ativar/desativar a sobreposição com outros objetos flutuantes
- RelativeHorizontalAlignment – alinhamento horizontal relativo da tabela flutuante.
- RelativeVerticalAlignment – alinhamento vertical relativo da tabela 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-.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:
- 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 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); |