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-Java.git. | |
Document doc = new Document(getMyDir() + "Tables.docx"); | |
Table table = (Table) doc.getChild(NodeType.TABLE, 0, true); | |
// Align the table to the center of the page. | |
table.setAlignment(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-Java.git. | |
Document doc = new Document(getMyDir() + "Tables.docx"); | |
Table table = (Table) doc.getChild(NodeType.TABLE, 0, true); | |
if (table.getTextWrapping() == TextWrapping.AROUND) | |
{ | |
System.out.println(table.getRelativeHorizontalAlignment()); | |
System.out.println(table.getRelativeVerticalAlignment()); | |
} | |
else | |
{ | |
System.out.println(table.getAlignment()); | |
} |
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-Java.git. | |
Document doc = new Document(getMyDir() + "Table wrapped by text.docx"); | |
for (Table table : doc.getFirstSection().getBody().getTables()) | |
{ | |
// If the table is floating type, then print its positioning properties. | |
if (table.getTextWrapping() == TextWrapping.AROUND) | |
{ | |
System.out.println(table.getHorizontalAnchor()); | |
System.out.println(table.getVerticalAnchor()); | |
System.out.println(table.getAbsoluteHorizontalDistance()); | |
System.out.println(table.getAbsoluteVerticalDistance()); | |
System.out.println(table.getAllowOverlap()); | |
System.out.println(table.getAbsoluteHorizontalDistance()); | |
System.out.println(table.getRelativeVerticalAlignment()); | |
System.out.println(".............................."); | |
} | |
} |
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-Java.git. | |
Document doc = new Document(getMyDir() + "Table wrapped by text.docx"); | |
Table table = doc.getFirstSection().getBody().getTables().get(0); | |
table.setAbsoluteHorizontalDistance(10.0); | |
table.setRelativeVerticalAlignment(VerticalAlignment.CENTER); | |
doc.save(getArtifactsDir() + "WorkingWithTables.FloatingTablePosition.docx"); |
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git. | |
Document doc = new Document(getMyDir() + "Table wrapped by text.docx"); | |
Table table = doc.getFirstSection().getBody().getTables().get(0); | |
table.setHorizontalAnchor(RelativeHorizontalPosition.COLUMN); | |
table.setVerticalAnchor(RelativeVerticalPosition.PAGE); | |
doc.save(getArtifactsDir() + "WorkingWithTables.RelativeHorizontalOrVerticalPosition.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-Java.git. | |
Document doc = new Document(getMyDir() + "Tables.docx"); | |
System.out.println("\nGet distance between table left, right, bottom, top and the surrounding text."); | |
Table table = (Table) doc.getChild(NodeType.TABLE, 0, true); | |
System.out.println(table.getDistanceTop()); | |
System.out.println(table.getDistanceBottom()); | |
System.out.println(table.getDistanceRight()); | |
System.out.println(table.getDistanceLeft()); |