Formateo de Texto dentro de PDF
Cómo agregar Sangría de Línea a PDF
Aspose.PDF para Java ofrece la propiedad SubsequentLinesIndent en la clase TextFormattingOptions. La cual se puede usar para especificar sangría de línea en escenarios de generación de PDF con TextFragment y la colección de Paragraphs.
Por favor use el siguiente fragmento de código para usar la propiedad:
public static void AddLineIndentToPDF() {
// Crear nuevo objeto de documento
Document document = new Document();
Page page = document.getPages().add();
TextFragment text = new TextFragment(
"Un rápido zorro marrón saltó sobre el perro perezoso. Un rápido zorro marrón saltó sobre el perro perezoso. Un rápido zorro marrón saltó sobre el perro perezoso. Un rápido zorro marrón saltó sobre el perro perezoso. Un rápido zorro marrón saltó sobre el perro perezoso. Un rápido zorro marrón saltó sobre el perro perezoso. Un rápido zorro marrón saltó sobre el perro perezoso. Un rápido zorro marrón saltó sobre el perro perezoso.");
// Inicializar TextFormattingOptions para el fragmento de texto y especificar
// el valor de SubsequentLinesIndent
TextFormattingOptions textOptions = new TextFormattingOptions();
textOptions.setSubsequentLinesIndent(20);
text.getTextState().setFormattingOptions(textOptions);
page.getParagraphs().add(text);
text = new TextFragment("Línea2");
page.getParagraphs().add(text);
text = new TextFragment("Línea3");
page.getParagraphs().add(text);
text = new TextFragment("Línea4");
page.getParagraphs().add(text);
text = new TextFragment("Línea5");
page.getParagraphs().add(text);
document.save(_dataDir + "SubsequentIndent_out.pdf");
}
Cómo agregar un borde de texto
El siguiente fragmento de código muestra cómo agregar un borde a un texto utilizando TextBuilder y configurando el método DrawTextRectangleBorder de TextState:
public static void AddTextBorder() {
// Crear un nuevo objeto de documento
Document pdfDocument = new Document();
// Obtener una página en particular
Page pdfPage = pdfDocument.getPages().add();
// Crear fragmento de texto
TextFragment textFragment = new TextFragment("texto principal");
textFragment.setPosition(new Position(100, 600));
// Establecer propiedades del texto
textFragment.getTextState().setFontSize(12);
textFragment.getTextState().setFont(FontRepository.findFont("TimesNewRoman"));
textFragment.getTextState().setBackgroundColor (Color.getLightGray());
textFragment.getTextState().setForegroundColor (Color.getRed());
// Usar setStrokingColor para dibujar un borde (trazo) alrededor del rectángulo de texto
textFragment.getTextState().setStrokingColor (Color.getDarkRed());
// Usar el método setDrawTextRectangleBorder para establecer el valor en true
textFragment.getTextState().setDrawTextRectangleBorder(true);
TextBuilder tb = new TextBuilder(pdfPage);
tb.appendText(textFragment);
// Guardar el documento
pdfDocument.save(_dataDir + "PDFWithTextBorder_out.pdf");
}
Cómo agregar texto subrayado
El siguiente fragmento de código te muestra cómo agregar texto subrayado al crear un nuevo archivo PDF.
public static void AddUnderlineText(){
// Crear objeto de documentación
Document pdfDocument = new Document();
// Agregar una página al documento PDF
Page page = pdfDocument.getPages().add();
// Crear TextBuilder para la primera página
TextBuilder tb = new TextBuilder(page);
// TextFragment con texto de ejemplo
TextFragment fragment = new TextFragment("Texto con decoración de subrayado");
// Establecer la fuente para TextFragment
fragment.getTextState().setFont (FontRepository.findFont("Arial"));
fragment.getTextState().setFontSize (10);
// Establecer el formato del texto como subrayado
fragment.getTextState().setUnderline(true);
// Especificar la posición donde se necesita colocar TextFragment
fragment.setPosition (new Position(10, 800));
// Añadir TextFragment al archivo PDF
tb.appendText(fragment);
// Guardar el documento PDF resultante.
pdfDocument.save(_dataDir + "AddUnderlineText_out.pdf");
}
Cómo agregar un borde alrededor del texto añadido
Tienes control sobre la apariencia del texto que agregas. El ejemplo a continuación muestra cómo agregar un borde alrededor de un fragmento de texto que has añadido dibujando un rectángulo a su alrededor. Obtén más información sobre la clase 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), "");
// Guardar el documento PDF resultante.
editor.save(_dataDir + "AddingBorderAroundAddedText_out.pdf");
}
Cómo agregar un salto de línea
TextFragment no soporta el salto de línea dentro del texto. Sin embargo, para agregar texto con salto de línea, utilice TextFragment con TextParagraph:
- use “\r\n” o Environment.NewLine en TextFragment en lugar de un solo “\n”;
- cree un objeto TextParagraph. Esto agregará texto con división de líneas;
- agregue el TextFragment con TextParagraph.AppendLine;
- agregue el TextParagraph con TextBuilder.AppendParagraph. Por favor, use el siguiente fragmento de código.
public static void AddNewLineFeed() {
Document pdfDocument = new Document();
Page page = pdfDocument.getPages().add();
// Inicializar nuevo TextFragment con texto que contiene los marcadores de nueva línea necesarios
TextFragment textFragment = new TextFragment("Applicant Name: " + System.lineSeparator() + " Joe Smoe");
// Establecer propiedades del fragmento de texto si es necesario
textFragment.getTextState().setFontSize (12);
textFragment.getTextState().setFont(FontRepository.findFont("DejaVu Serif"));
textFragment.getTextState().setBackgroundColor (Color.getLightGray());
textFragment.getTextState().setForegroundColor (Color.getRed());
// Crear objeto TextParagraph
TextParagraph par = new TextParagraph();
// Agregar nuevo TextFragment al párrafo
par.appendLine(textFragment);
// Establecer posición del párrafo
par.setPosition (new Position(100, 600));
// Crear objeto TextBuilder
TextBuilder textBuilder = new TextBuilder(page);
// Agregar el TextParagraph usando TextBuilder
textBuilder.appendParagraph(par);
// Guardar el documento PDF resultante.
pdfDocument.save(_dataDir + "AddNewLineFeed_out.pdf");
}
Cómo añadir texto tachado
La clase TextState proporciona las capacidades para establecer el formato de los TextFragments que se colocan dentro de un documento PDF. Puede utilizar esta clase para establecer el formato del texto como Negrita, Cursiva, Subrayado y a partir de esta versión, la API ha proporcionado las capacidades para marcar el formato del texto como Tachado. Por favor, intente usar el siguiente fragmento de código para añadir TextFragment con formato Tachado.
Por favor, use el fragmento de código completo:
public static void AddStrikeOutText(){
// Abrir documento
Document pdfDocument = new Document();
// Obtener página particular
Page pdfPage = (Page)pdfDocument.getPages().add();
// Crear fragmento de texto
TextFragment textFragment = new TextFragment("texto principal");
textFragment.setPosition (new Position(100, 600));
// Establecer propiedades del texto
textFragment.getTextState().setFontSize(12);
textFragment.getTextState().setFont(FontRepository.findFont("DejaVu Serif"));
textFragment.getTextState().setBackgroundColor(Color.getLightGray());
textFragment.getTextState().setForegroundColor(Color.getRed());
// usar el método setStrikeOut para habilitar texto tachado
textFragment.getTextState().setStrikeOut(true);
// Marcar texto como Negrita
textFragment.getTextState().setFontStyle(FontStyles.Bold);
// Crear objeto TextBuilder
TextBuilder textBuilder = new TextBuilder(pdfPage);
// Añadir el fragmento de texto a la página PDF
textBuilder.appendText(textFragment);
// Guardar el documento PDF resultante.
pdfDocument.save(_dataDir + "AddStrikeOutText_out.pdf");
}
Aplicar Sombreado de Gradiente al Texto
El formato de texto se ha mejorado aún más en la API para escenarios de edición de texto y ahora puede agregar texto con espacio de color de patrón dentro de un documento PDF. La clase com.aspose.pdf.Color se ha mejorado aún más introduciendo el nuevo método setPatternColorSpace
, que se puede usar para especificar colores de sombreado para el texto. Este nuevo método agrega diferentes Sombras de Gradiente al texto, por ejemplo, Sombreado Axial, Sombreado Radial (Tipo 3) como se muestra en el siguiente fragmento de código:
public static void ApplyGradientShading() {
Document pdfDocument = new Document(_dataDir + "sample.pdf");
TextFragmentAbsorber absorber = new TextFragmentAbsorber("always print correctly");
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()));
// Crear un nuevo color con espacio de color de patrón
textFragment.getTextState().setForegroundColor (foregroundColor);
textFragment.getTextState().setUnderline(true);
pdfDocument.save(_dataDir + "text_out.pdf");
}
Para aplicar un Degradado Radial, puedes usar el método setPatternColorSpace
igual a GradientRadialShading(startingColor, endingColor)
en el fragmento de código anterior.
public static void ApplyGradientShadingRadial() {
Document pdfDocument = new Document(_dataDir + "sample.pdf");
TextFragmentAbsorber absorber = new TextFragmentAbsorber("always print correctly");
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()));
// Crear un nuevo color con espacio de color de patrón
textFragment.getTextState().setForegroundColor (foregroundColor);
textFragment.getTextState().setUnderline(true);
pdfDocument.save(_dataDir + "text_out.pdf");
}
Cómo alinear texto con contenido flotante
Aspose.PDF admite establecer la alineación del texto para contenidos dentro de un elemento de Caja Flotante. Las propiedades de alineación de la instancia Aspose.Pdf.FloatingBox se pueden utilizar para lograr esto como se muestra en el siguiente ejemplo de código.
public static void AlignTextToFloatContent() {
Document pdfDocument = new Document();
Page page = pdfDocument.getPages().add();
FloatingBox floatBox = new FloatingBox(100, 100);
floatBox.setVerticalAlignment(VerticalAlignment.Bottom); // Ajustar el texto al contenido flotante
floatBox.setHorizontalAlignment (HorizontalAlignment.Right);
floatBox.getParagraphs().add(new TextFragment("FloatingBox_bottom"));
floatBox.setBorder(new BorderInfo(BorderSide.All, Color.getBlue()));
page.getParagraphs().add(floatBox);
FloatingBox floatBox1 = new FloatingBox(100, 100);
floatBox1.setVerticalAlignment(VerticalAlignment.Center); // Ajustar el texto al contenido centrado
floatBox1.setHorizontalAlignment (HorizontalAlignment.Right);
floatBox1.getParagraphs().add(new TextFragment("FloatingBox_center"));
floatBox1.setBorder (new BorderInfo(BorderSide.All, Color.getBlue()));
page.getParagraphs().add(floatBox1);
FloatingBox floatBox2 = new FloatingBox(100, 100);
floatBox2.setVerticalAlignment(VerticalAlignment.Top); // Ajustar el texto al contenido superior
floatBox2.setHorizontalAlignment (HorizontalAlignment.Right);
floatBox2.getParagraphs().add(new TextFragment("FloatingBox_top"));
floatBox2.setBorder (new BorderInfo(BorderSide.All, Color.getBlue()));
page.getParagraphs().add(floatBox2);
pdfDocument.save(_dataDir + "FloatingBox_alignment_review_out.pdf");
}