Rotacionar texto PDF em Java
Contents
[
Hide
]
Aspose.PDF for Java permite girar fragmentos de texto individuais, bem como parágrafos de texto completos.
Girar fragmentos de texto individuais
Use este exemplo quando vários fragmentos de texto na mesma linha devem usar diferentes ângulos de rotação.
- Crie um novo documento PDF e adicione uma página.
- Crie fragmentos de texto com os valores de rotação necessários.
- Anexe-os com
TextBuildere salve o resultado.
public static void rotateTextInsidePdf1(Path outputFile) {
try (Document document = new Document()) {
Page page = document.getPages().add();
TextFragment textFragment1 = new TextFragment("main text");
textFragment1.setPosition(new Position(100, 600));
textFragment1.getTextState().setFontSize(12);
textFragment1.getTextState().setFont(FontRepository.findFont("TimesNewRoman"));
TextFragment textFragment2 = new TextFragment("rotated text");
textFragment2.setPosition(new Position(200, 600));
textFragment2.getTextState().setFontSize(12);
textFragment2.getTextState().setFont(FontRepository.findFont("TimesNewRoman"));
textFragment2.getTextState().setRotation(45);
TextFragment textFragment3 = new TextFragment("rotated text");
textFragment3.setPosition(new Position(300, 600));
textFragment3.getTextState().setFontSize(12);
textFragment3.getTextState().setFont(FontRepository.findFont("TimesNewRoman"));
textFragment3.getTextState().setRotation(90);
TextBuilder builder = new TextBuilder(page);
builder.appendText(textFragment1);
builder.appendText(textFragment2);
builder.appendText(textFragment3);
document.save(outputFile.toString());
}
}
Rotacionar linhas dentro de um parágrafo de texto
Use este exemplo quando um parágrafo deve conter linhas normais e giradas.
- Crie um novo documento PDF e adicione uma página.
- Crie um
TextParagraphe anexe fragmentos de texto com diferentes configurações de rotação. - Adicione o parágrafo à página e salve o documento.
public static void rotateTextInsidePdf2(Path outputFile) {
try (Document document = new Document()) {
Page page = document.getPages().add();
TextParagraph paragraph = new TextParagraph();
paragraph.setPosition(new Position(200, 600));
TextFragment textFragment1 = new TextFragment("rotated text");
textFragment1.getTextState().setFontSize(12);
textFragment1.getTextState().setFont(FontRepository.findFont("TimesNewRoman"));
textFragment1.getTextState().setRotation(45);
TextFragment textFragment2 = new TextFragment("main text");
textFragment2.getTextState().setFontSize(12);
textFragment2.getTextState().setFont(FontRepository.findFont("TimesNewRoman"));
TextFragment textFragment3 = new TextFragment("another rotated text");
textFragment3.getTextState().setFontSize(12);
textFragment3.getTextState().setFont(FontRepository.findFont("TimesNewRoman"));
textFragment3.getTextState().setRotation(-45);
paragraph.appendLine(textFragment1);
paragraph.appendLine(textFragment2);
paragraph.appendLine(textFragment3);
TextBuilder textBuilder = new TextBuilder(page);
textBuilder.appendParagraph(paragraph);
document.save(outputFile.toString());
}
}
Rotacionar fragmentos de parágrafo sem posições explícitas
Use este exemplo quando o texto rotacionado deve ser adicionado através do fluxo normal de parágrafos da página.
- Crie um novo documento PDF e adicione uma página.
- Crie vários fragmentos de texto com diferentes valores de rotação.
- Adicione-os à coleção de parágrafos da página e salve o PDF.
public static void rotateTextInsidePdf3(Path outputFile) {
try (Document document = new Document()) {
Page page = document.getPages().add();
TextFragment textFragment1 = new TextFragment("main text");
textFragment1.getTextState().setFontSize(12);
textFragment1.getTextState().setFont(FontRepository.findFont("TimesNewRoman"));
TextFragment textFragment2 = new TextFragment("rotated text");
textFragment2.getTextState().setFontSize(12);
textFragment2.getTextState().setFont(FontRepository.findFont("TimesNewRoman"));
textFragment2.getTextState().setRotation(315);
TextFragment textFragment3 = new TextFragment("rotated text");
textFragment3.getTextState().setFontSize(12);
textFragment3.getTextState().setFont(FontRepository.findFont("TimesNewRoman"));
textFragment3.getTextState().setRotation(270);
page.getParagraphs().add(textFragment1);
page.getParagraphs().add(textFragment2);
page.getParagraphs().add(textFragment3);
document.save(outputFile.toString());
}
}
Rotacionar parágrafos completos
Use este exemplo quando o bloco inteiro de parágrafos deve ser rotacionado enquanto cada linha mantém o estilo compartilhado.
- Crie um novo documento PDF e adicione uma página.
- Construa vários objetos
TextParagraphcom rotação ao nível do parágrafo. - Crie as linhas com um método auxiliar compartilhado, anexe-as e salve o documento.
public static void rotateTextInsidePdf4(Path outputFile) {
try (Document document = new Document()) {
Page page = document.getPages().add();
for (int i = 0; i < 4; i++) {
TextParagraph paragraph = new TextParagraph();
paragraph.setPosition(new Position(200, 600));
paragraph.setRotation(i * 90 + 45);
TextFragment textFragment1 = rotatedLine("Paragraph Text", false);
TextFragment textFragment2 = rotatedLine("Second line of text", false);
TextFragment textFragment3 = rotatedLine("And some more text...", true);
paragraph.appendLine(textFragment1);
paragraph.appendLine(textFragment2);
paragraph.appendLine(textFragment3);
TextBuilder builder = new TextBuilder(page);
builder.appendParagraph(paragraph);
}
document.save(outputFile.toString());
}
}
private static TextFragment rotatedLine(String text, boolean underline) {
TextFragment fragment = new TextFragment(text);
fragment.getTextState().setFontSize(12);
fragment.getTextState().setFont(FontRepository.findFont("TimesNewRoman"));
fragment.getTextState().setBackgroundColor(Color.getLightGray());
fragment.getTextState().setForegroundColor(Color.getBlue());
fragment.getTextState().setUnderline(underline);
return fragment;
}