Formatação de Texto dentro do PDF
Como adicionar Recuo de Linha ao PDF
Aspose.PDF para Java oferece a propriedade SubsequentLinesIndent na classe TextFormattingOptions. Que pode ser usada para especificar o recuo de linha em cenários de geração de PDF com TextFragment e coleção de Parágrafos.
Por favor, use o seguinte trecho de código para usar a propriedade:
public static void AddLineIndentToPDF() {
// Criar novo objeto de documento
Document document = new Document();
Page page = document.getPages().add();
TextFragment text = new TextFragment(
"A quick brown fox jumped over the lazy dog. A quick brown fox jumped over the lazy dog. A quick brown fox jumped over the lazy dog. A quick brown fox jumped over the lazy dog. A quick brown fox jumped over the lazy dog. A quick brown fox jumped over the lazy dog. A quick brown fox jumped over the lazy dog. A quick brown fox jumped over the lazy dog.");
// Inicializar TextFormattingOptions para o fragmento de texto e especificar
// valor SubsequentLinesIndent
TextFormattingOptions textOptions = new TextFormattingOptions();
textOptions.setSubsequentLinesIndent(20);
text.getTextState().setFormattingOptions(textOptions);
page.getParagraphs().add(text);
text = new TextFragment("Linha2");
page.getParagraphs().add(text);
text = new TextFragment("Linha3");
page.getParagraphs().add(text);
text = new TextFragment("Linha4");
page.getParagraphs().add(text);
text = new TextFragment("Linha5");
page.getParagraphs().add(text);
document.save(_dataDir + "SubsequentIndent_out.pdf");
}
Como adicionar borda ao texto
O trecho de código a seguir mostra como adicionar uma borda a um texto usando TextBuilder e configurando o método DrawTextRectangleBorder de TextState:
public static void AddTextBorder() {
// Criar novo objeto de documento
Document pdfDocument = new Document();
// Obter página específica
Page pdfPage = pdfDocument.getPages().add();
// Criar fragmento de texto
TextFragment textFragment = new TextFragment("texto principal");
textFragment.setPosition(new Position(100, 600));
// Definir propriedades do texto
textFragment.getTextState().setFontSize(12);
textFragment.getTextState().setFont(FontRepository.findFont("TimesNewRoman"));
textFragment.getTextState().setBackgroundColor (Color.getLightGray());
textFragment.getTextState().setForegroundColor (Color.getRed());
// Usar setStrokingColor para desenhar borda ao redor do retângulo de texto
textFragment.getTextState().setStrokingColor (Color.getDarkRed());
// Usar o método setDrawTextRectangleBorder para definir o valor como verdadeiro
textFragment.getTextState().setDrawTextRectangleBorder(true);
TextBuilder tb = new TextBuilder(pdfPage);
tb.appendText(textFragment);
// Salvar o documento
pdfDocument.save(_dataDir + "PDFWithTextBorder_out.pdf");
}
Como adicionar Texto Sublinhado
O trecho de código a seguir mostra como adicionar texto sublinhado ao criar um novo arquivo PDF.
public static void AddUnderlineText(){
// Criar objeto de documentação
Document pdfDocument = new Document();
// Adicionar página ao documento PDF
Page page = pdfDocument.getPages().add();
// Criar TextBuilder para a primeira página
TextBuilder tb = new TextBuilder(page);
// TextFragment com texto de exemplo
TextFragment fragment = new TextFragment("Texto com decoração sublinhada");
// Definir a fonte para TextFragment
fragment.getTextState().setFont (FontRepository.findFont("Arial"));
fragment.getTextState().setFontSize (10);
// Definir o formato do texto como Sublinhado
fragment.getTextState().setUnderline(true);
// Especificar a posição onde o TextFragment precisa ser colocado
fragment.setPosition (new Position(10, 800));
// Anexar TextFragment ao arquivo PDF
tb.appendText(fragment);
// Salvar o documento PDF resultante.
pdfDocument.save(_dataDir + "AddUnderlineText_out.pdf");
}
Como adicionar borda ao redor do texto adicionado
Você tem controle sobre a aparência do texto que adiciona. O exemplo abaixo mostra como adicionar uma borda ao redor de um trecho de texto que você adicionou desenhando um retângulo ao seu redor. Saiba mais sobre a classe PdfContentEditor.
public static void AddBorderAroundAddedText() {
PdfContentEditor editor = new PdfContentEditor();
editor.bindPdf(_dataDir + "input.pdf");
LineInfo lineInfo = new LineInfo();
lineInfo.setLineWidth(2);
lineInfo.setVerticeCoordinate (new float[] { 0, 0, 100, 100, 50, 100 });
lineInfo.setVisibility(true);
editor.createPolygon(lineInfo, 1, new java.awt.Rectangle(0, 0, 0, 0), "");
// Salvar o documento PDF resultante.
editor.save(_dataDir + "AddingBorderAroundAddedText_out.pdf");
}
Como adicionar quebra de linha
TextFragment não suporta quebra de linha dentro do texto. No entanto, para adicionar texto com quebra de linha, use TextFragment com TextParagraph:
- use “\r\n” ou Environment.NewLine em TextFragment em vez de um único “\n”;
- crie um objeto TextParagraph. Ele adicionará texto com divisão de linha;
- adicione o TextFragment com TextParagraph.AppendLine;
- adicione o TextParagraph com TextBuilder.AppendParagraph. Por favor, use o trecho de código abaixo.
public static void AddNewLineFeed() {
Document pdfDocument = new Document();
Page page = pdfDocument.getPages().add();
// Inicialize um novo TextFragment com texto que contém os marcadores de nova linha necessários
TextFragment textFragment = new TextFragment("Applicant Name: " + System.lineSeparator() + " Joe Smoe");
// Defina as propriedades do fragmento de texto, se necessário
textFragment.getTextState().setFontSize (12);
textFragment.getTextState().setFont(FontRepository.findFont("DejaVu Serif"));
textFragment.getTextState().setBackgroundColor (Color.getLightGray());
textFragment.getTextState().setForegroundColor (Color.getRed());
// Crie um objeto TextParagraph
TextParagraph par = new TextParagraph();
// Adicione o novo TextFragment ao parágrafo
par.appendLine(textFragment);
// Defina a posição do parágrafo
par.setPosition (new Position(100, 600));
// Crie um objeto TextBuilder
TextBuilder textBuilder = new TextBuilder(page);
// Adicione o TextParagraph usando o TextBuilder
textBuilder.appendParagraph(par);
// Salve o documento PDF resultante.
pdfDocument.save(_dataDir + "AddNewLineFeed_out.pdf");
}
Como adicionar Texto Tachado
A classe TextState fornece as capacidades para definir formatação para TextFragments sendo colocados dentro de um documento PDF. Você pode usar esta classe para definir formatação de texto como Negrito, Itálico, Sublinhado e, a partir desta versão, a API forneceu as capacidades para marcar a formatação de texto como Tachado. Por favor, tente usar o seguinte trecho de código para adicionar TextFragment com formatação Tachada.
Por favor, use o trecho de código completo:
public static void AddStrikeOutText(){
// Abrir documento
Document pdfDocument = new Document();
// Obter página específica
Page pdfPage = (Page)pdfDocument.getPages().add();
// Criar fragmento de texto
TextFragment textFragment = new TextFragment("texto principal");
textFragment.setPosition (new Position(100, 600));
// Definir propriedades do texto
textFragment.getTextState().setFontSize(12);
textFragment.getTextState().setFont(FontRepository.findFont("DejaVu Serif"));
textFragment.getTextState().setBackgroundColor(Color.getLightGray());
textFragment.getTextState().setForegroundColor(Color.getRed());
// usar método setStrikeOut para habilitar Texto Tachado
textFragment.getTextState().setStrikeOut(true);
// Marcar texto como Negrito
textFragment.getTextState().setFontStyle(FontStyles.Bold);
// Criar objeto TextBuilder
TextBuilder textBuilder = new TextBuilder(pdfPage);
// Anexar o fragmento de texto à página PDF
textBuilder.appendText(textFragment);
// Salvar documento PDF resultante.
pdfDocument.save(_dataDir + "AddStrikeOutText_out.pdf");
}
Aplicar Sombreamento Gradiente ao Texto
A formatação de texto foi ainda mais aprimorada na API para cenários de edição de texto e agora você pode adicionar texto com espaço de cor de padrão dentro do documento PDF. A classe com.aspose.pdf.Color foi ainda mais aprimorada com a introdução do novo método setPatternColorSpace
, que pode ser usado para especificar cores de sombreamento para o texto. Este novo método adiciona diferentes Sombreamentos de Gradiente ao texto, por exemplo, Sombreamento Axial, Sombreamento Radial (Tipo 3), conforme mostrado no trecho de código a seguir:
public static void ApplyGradientShading() {
Document pdfDocument = new Document(_dataDir + "sample.pdf");
TextFragmentAbsorber absorber = new TextFragmentAbsorber("sempre imprima corretamente");
pdfDocument.getPages().accept(absorber);
TextFragment textFragment = absorber.getTextFragments().get_Item(1);
Color foregroundColor = new com.aspose.pdf.Color();
foregroundColor.setPatternColorSpace(new GradientAxialShading(Color.getRed(), Color.getBlue()));
// Criar nova cor com espaço de cor de padrão
textFragment.getTextState().setForegroundColor (foregroundColor);
textFragment.getTextState().setUnderline(true);
pdfDocument.save(_dataDir + "text_out.pdf");
}
Para aplicar um Gradiente Radial, você pode usar o método setPatternColorSpace
igual a GradientRadialShading(startingColor, endingColor)
no trecho de código acima.
public static void ApplyGradientShadingRadial() {
Document pdfDocument = new Document(_dataDir + "sample.pdf");
TextFragmentAbsorber absorber = new TextFragmentAbsorber("sempre imprimir corretamente");
pdfDocument.getPages().accept(absorber);
TextFragment textFragment = absorber.getTextFragments().get_Item(1);
Color foregroundColor = new com.aspose.pdf.Color();
foregroundColor.setPatternColorSpace(new GradientRadialShading(Color.getRed(), Color.getBlue()));
// Criar nova cor com espaço de cor de padrão
textFragment.getTextState().setForegroundColor(foregroundColor);
textFragment.getTextState().setUnderline(true);
pdfDocument.save(_dataDir + "text_out.pdf");
}
Como alinhar texto ao conteúdo flutuante
O Aspose.PDF suporta a configuração do alinhamento de texto para conteúdos dentro de um elemento Floating Box. As propriedades de alinhamento da instância Aspose.Pdf.FloatingBox podem ser usadas para alcançar isso, como mostrado no exemplo de código a seguir.
public static void AlignTextToFloatContent() {
Document pdfDocument = new Document();
Page page = pdfDocument.getPages().add();
FloatingBox floatBox = new FloatingBox(100, 100);
floatBox.setVerticalAlignment(VerticalAlignment.Bottom); // Configura o alinhamento vertical para baixo
floatBox.setHorizontalAlignment(HorizontalAlignment.Right); // Configura o alinhamento horizontal para a direita
floatBox.getParagraphs().add(new TextFragment("FloatingBox_bottom"));
floatBox.setBorder(new BorderInfo(BorderSide.All, Color.getBlue())); // Configura a borda para todas as laterais com a cor azul
page.getParagraphs().add(floatBox);
FloatingBox floatBox1 = new FloatingBox(100, 100);
floatBox1.setVerticalAlignment(VerticalAlignment.Center); // Configura o alinhamento vertical para o centro
floatBox1.setHorizontalAlignment(HorizontalAlignment.Right); // Configura o alinhamento horizontal para a direita
floatBox1.getParagraphs().add(new TextFragment("FloatingBox_center"));
floatBox1.setBorder(new BorderInfo(BorderSide.All, Color.getBlue())); // Configura a borda para todas as laterais com a cor azul
page.getParagraphs().add(floatBox1);
FloatingBox floatBox2 = new FloatingBox(100, 100);
floatBox2.setVerticalAlignment(VerticalAlignment.Top); // Configura o alinhamento vertical para o topo
floatBox2.setHorizontalAlignment(HorizontalAlignment.Right); // Configura o alinhamento horizontal para a direita
floatBox2.getParagraphs().add(new TextFragment("FloatingBox_top"));
floatBox2.setBorder(new BorderInfo(BorderSide.All, Color.getBlue())); // Configura a borda para todas as laterais com a cor azul
page.getParagraphs().add(floatBox2);
pdfDocument.save(_dataDir + "FloatingBox_alignment_review_out.pdf");
}