Formatage du texte dans un PDF

Comment ajouter un retrait de ligne au PDF

Aspose.PDF pour Java offre la propriété SubsequentLinesIndent dans la classe TextFormattingOptions. Elle peut être utilisée pour spécifier un retrait de ligne dans les scénarios de génération de PDF avec TextFragment et la collection Paragraphs.

Veuillez utiliser l’extrait de code suivant pour utiliser la propriété :

public static void AddLineIndentToPDF() {
        // Créer un nouvel objet document
        Document document = new Document();
        Page page = document.getPages().add();

        TextFragment text = new TextFragment(
                "Un renard brun rapide a sauté par-dessus le chien paresseux. Un renard brun rapide a sauté par-dessus le chien paresseux. Un renard brun rapide a sauté par-dessus le chien paresseux. Un renard brun rapide a sauté par-dessus le chien paresseux. Un renard brun rapide a sauté par-dessus le chien paresseux. Un renard brun rapide a sauté par-dessus le chien paresseux. Un renard brun rapide a sauté par-dessus le chien paresseux. Un renard brun rapide a sauté par-dessus le chien paresseux.");

        // Initialiser TextFormattingOptions pour le fragment de texte et spécifier
        // la valeur SubsequentLinesIndent
        TextFormattingOptions textOptions = new TextFormattingOptions();
        textOptions.setSubsequentLinesIndent(20);
        text.getTextState().setFormattingOptions(textOptions);

        page.getParagraphs().add(text);

        text = new TextFragment("Ligne2");
        page.getParagraphs().add(text);

        text = new TextFragment("Ligne3");
        page.getParagraphs().add(text);

        text = new TextFragment("Ligne4");
        page.getParagraphs().add(text);

        text = new TextFragment("Ligne5");
        page.getParagraphs().add(text);

        document.save(_dataDir + "SubsequentIndent_out.pdf");
    }

Comment ajouter une bordure de texte

Le code suivant montre comment ajouter une bordure à un texte en utilisant TextBuilder et en définissant la méthode DrawTextRectangleBorder de TextState :

public static void AddTextBorder() {
    // Créer un nouvel objet document
    Document pdfDocument = new Document();
    // Obtenir une page particulière
    Page pdfPage = pdfDocument.getPages().add();
    // Créer un fragment de texte
    TextFragment textFragment = new TextFragment("texte principal");
    textFragment.setPosition(new Position(100, 600));
    // Définir les propriétés du texte
    textFragment.getTextState().setFontSize(12);
    textFragment.getTextState().setFont(FontRepository.findFont("TimesNewRoman"));
    textFragment.getTextState().setBackgroundColor (Color.getLightGray());
    textFragment.getTextState().setForegroundColor (Color.getRed());
    // Utiliser setStrokingColor pour dessiner une bordure (tracé) autour du rectangle de texte
    textFragment.getTextState().setStrokingColor (Color.getDarkRed());
    // Utiliser la méthode setDrawTextRectangleBorder pour définir la valeur sur true
    textFragment.getTextState().setDrawTextRectangleBorder(true);
    TextBuilder tb = new TextBuilder(pdfPage);
    tb.appendText(textFragment);
    // Enregistrer le document
    pdfDocument.save(_dataDir + "PDFWithTextBorder_out.pdf");
}

Comment ajouter un texte souligné

Le code ci-dessous vous montre comment ajouter un texte souligné lors de la création d’un nouveau fichier PDF.

public static void AddUnderlineText(){
    // Créer un objet de documentation
    Document pdfDocument = new Document();
    // Ajouter une page au document PDF
    Page page = pdfDocument.getPages().add();
    // Créer un TextBuilder pour la première page
    TextBuilder tb = new TextBuilder(page);
    // TextFragment avec texte d'exemple
    TextFragment fragment = new TextFragment("Texte avec décoration soulignée");
    // Définir la police pour TextFragment
    fragment.getTextState().setFont (FontRepository.findFont("Arial"));
    fragment.getTextState().setFontSize (10);
    // Définir le formatage du texte comme souligné
    fragment.getTextState().setUnderline(true);
    // Spécifier la position où TextFragment doit être placé
    fragment.setPosition (new Position(10, 800));
    // Ajouter TextFragment au fichier PDF
    tb.appendText(fragment);

    // Enregistrer le document PDF résultant.
    pdfDocument.save(_dataDir + "AddUnderlineText_out.pdf");
}

Comment ajouter une bordure autour du texte ajouté

Vous avez le contrôle sur l’apparence du texte que vous ajoutez. L’exemple ci-dessous montre comment ajouter une bordure autour d’un morceau de texte que vous avez ajouté en dessinant un rectangle autour de celui-ci. Découvrez-en plus sur la 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), "");

    // Enregistrer le document PDF résultant.
    editor.save(_dataDir + "AddingBorderAroundAddedText_out.pdf");
}

Comment ajouter un saut de ligne

TextFragment ne supporte pas le saut de ligne à l’intérieur du texte. Cependant, afin d’ajouter du texte avec un saut de ligne, veuillez utiliser TextFragment avec TextParagraph :

  • utilisez “\r\n” ou Environment.NewLine dans TextFragment au lieu de “\n” seul ;
  • créez un objet TextParagraph. Il ajoutera du texte avec séparation de ligne ;
  • ajoutez le TextFragment avec TextParagraph.AppendLine ;
  • ajoutez le TextParagraph avec TextBuilder.AppendParagraph.
    Veuillez utiliser l’extrait de code ci-dessous.
public static void AddNewLineFeed() {        
    Document pdfDocument = new Document();
    Page page = pdfDocument.getPages().add();

    // Initialiser un nouveau TextFragment avec le texte contenant les marqueurs de nouvelle ligne requis
    TextFragment textFragment = new TextFragment("Nom du demandeur : " + System.lineSeparator() + " Joe Smoe");

    // Définir les propriétés du fragment de texte si nécessaire
    textFragment.getTextState().setFontSize (12);
    textFragment.getTextState().setFont(FontRepository.findFont("DejaVu Serif"));
    textFragment.getTextState().setBackgroundColor (Color.getLightGray());
    textFragment.getTextState().setForegroundColor (Color.getRed());

    // Créer un objet TextParagraph
    TextParagraph par = new TextParagraph();

    // Ajouter un nouveau TextFragment au paragraphe
    par.appendLine(textFragment);

    // Définir la position du paragraphe
    par.setPosition (new Position(100, 600));

    // Créer un objet TextBuilder
    TextBuilder textBuilder = new TextBuilder(page);
    // Ajouter le TextParagraph en utilisant TextBuilder
    textBuilder.appendParagraph(par);

    // Enregistrer le document PDF résultant.
    pdfDocument.save(_dataDir + "AddNewLineFeed_out.pdf");
}

Comment ajouter du texte barré

La classe TextState offre la possibilité de définir le formatage pour les TextFragments placés à l’intérieur d’un document PDF. Vous pouvez utiliser cette classe pour définir le formatage du texte comme Gras, Italique, Souligné et à partir de cette version, l’API a fourni la capacité de marquer le formatage du texte comme Barré. Veuillez essayer d’utiliser l’extrait de code suivant pour ajouter un TextFragment avec un formatage Barré.

Veuillez utiliser l’extrait de code complet :

public static void AddStrikeOutText(){
    // Ouvrir le document
    Document pdfDocument = new Document();
    // Obtenir une page particulière
    Page pdfPage = (Page)pdfDocument.getPages().add();

    // Créer un fragment de texte
    TextFragment textFragment = new TextFragment("main text");
    textFragment.setPosition (new Position(100, 600));

    // Définir les propriétés du texte
    textFragment.getTextState().setFontSize(12);
    textFragment.getTextState().setFont(FontRepository.findFont("DejaVu Serif"));
    textFragment.getTextState().setBackgroundColor(Color.getLightGray());
    textFragment.getTextState().setForegroundColor(Color.getRed());
    // utiliser la méthode setStrikeOut pour activer le texte barré
    textFragment.getTextState().setStrikeOut(true);
    // Marquer le texte comme Gras
    textFragment.getTextState().setFontStyle(FontStyles.Bold);

    // Créer un objet TextBuilder
    TextBuilder textBuilder = new TextBuilder(pdfPage);
    // Ajouter le fragment de texte à la page PDF
    textBuilder.appendText(textFragment);

    // Enregistrer le document PDF résultant.
    pdfDocument.save(_dataDir + "AddStrikeOutText_out.pdf");        
}

Appliquer un Ombrage en Dégradé au Texte

Le formatage du texte a été davantage amélioré dans l’API pour les scénarios d’édition de texte et vous pouvez maintenant ajouter du texte avec un espace colorimétrique à motifs dans le document PDF. La classe com.aspose.pdf.Color a été encore améliorée en introduisant de nouvelles méthodes setPatternColorSpace, qui peuvent être utilisées pour spécifier des couleurs d’ombrage pour le texte. Cette nouvelle méthode ajoute différents ombrages en dégradé au texte, par exemple l’ombrage axial, l’ombrage radial (Type 3) comme montré dans l’extrait de code suivant :

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

    // Créer une nouvelle couleur avec un espace colorimétrique à motifs
    textFragment.getTextState().setForegroundColor(foregroundColor);

    textFragment.getTextState().setUnderline(true);

    pdfDocument.save(_dataDir + "text_out.pdf");
}

Pour appliquer un dégradé radial, vous pouvez utiliser la méthode setPatternColorSpace égale à GradientRadialShading(startingColor, endingColor) dans l’extrait de code ci-dessus.

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

    // Créer une nouvelle couleur avec un espace colorimétrique de motif
    textFragment.getTextState().setForegroundColor (foregroundColor);

    textFragment.getTextState().setUnderline(true);

    pdfDocument.save(_dataDir + "text_out.pdf");
}

Comment aligner le texte par rapport au contenu flottant

Aspose.PDF prend en charge le réglage de l’alignement du texte pour les contenus à l’intérieur d’un élément de boîte flottante. Les propriétés d’alignement de l’instance Aspose.Pdf.FloatingBox peuvent être utilisées pour réaliser cela comme montré dans l’exemple de code suivant.

public static void AlignTextToFloatContent() {
    Document pdfDocument = new Document();
    Page page = pdfDocument.getPages().add();

    FloatingBox floatBox = new FloatingBox(100, 100);
    floatBox.setVerticalAlignment(VerticalAlignment.Bottom);
    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);
    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);
    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");        
}