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:

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:

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());