Formatage du texte dans un PDF en utilisant C++
Comment ajouter un retrait de ligne au PDF
Pour ajouter un retrait de ligne au PDF, Aspose.PDF pour C++ utilise la propriété SubsequentLinesIndent dans la classe TextFormattingOptions et utilise également les collections TextFragment et Paragraphs.
Veuillez utiliser l’extrait de code suivant pour utiliser la propriété :
using namespace System;
using namespace Aspose::Pdf;
using namespace Aspose::Pdf::Text;
void AddLineIndent() {
String _dataDir("C:\\Samples\\");
// Chaîne pour le nom du fichier de sortie
String outputFileName("SubsequentIndent_out.pdf");
// Créez un nouvel objet document
auto document = MakeObject<Document>();
auto page = document->get_Pages()->Add();
auto text = MakeObject<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 les TextFormattingOptions pour le fragment de texte et spécifier la valeur SubsequentLinesIndent
text->get_TextState()->set_FormattingOptions(MakeObject<Aspose::Pdf::Text::TextFormattingOptions>());
text->get_TextState()->get_FormattingOptions()->set_SubsequentLinesIndent(20);
page->get_Paragraphs()->Add(text);
text = MakeObject<Aspose::Pdf::Text::TextFragment>(u"Ligne2");
page->get_Paragraphs()->Add(text);
text = MakeObject<Aspose::Pdf::Text::TextFragment>(u"Ligne3");
page->get_Paragraphs()->Add(text);
text = MakeObject<Aspose::Pdf::Text::TextFragment>(u"Ligne4");
page->get_Paragraphs()->Add(text);
text = MakeObject<Aspose::Pdf::Text::TextFragment>(u"Ligne5");
page->get_Paragraphs()->Add(text);
document->Save(_dataDir + outputFileName);
}
Comment ajouter une bordure de texte
L’extrait de code suivant montre comment ajouter une bordure à un texte en utilisant TextBuilder et en définissant la propriété DrawTextRectangleBorder de TextState
void AddTextBorder() {
String _dataDir("C:\\Samples\\");
// Chaîne pour le nom de fichier de sortie
String outputFileName("PDFWithTextBorder_out.pdf");
// Créer un nouvel objet document
auto document = MakeObject<Document>();
// Obtenir une page particulière
auto page = document->get_Pages()->Add();
// Créer un fragment de texte
auto textFragment = MakeObject<TextFragment>("main text");
textFragment->set_Position(MakeObject<Position>(100, 600));
// Définir les propriétés du texte
textFragment->get_TextState()->set_FontSize(12);
textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"DejaVu Serif"));
textFragment->get_TextState()->set_BackgroundColor(Color::get_LightGray());
textFragment->get_TextState()->set_ForegroundColor(Color::get_Red());
// Définir la propriété StrokingColor pour dessiner une bordure (tracé) autour du texte
// rectangle
textFragment->get_TextState()->set_StrokingColor(Color::get_DarkRed());
// Définir la valeur de la propriété DrawTextRectangleBorder à true
textFragment->get_TextState()->set_DrawTextRectangleBorder(true);
auto tb = MakeObject<TextBuilder>(page);
tb->AppendText(textFragment);
// Enregistrer le document
document->Save(_dataDir + outputFileName);
}
Comment ajouter du texte souligné
Le fragment de code suivant vous montre comment ajouter du texte souligné lors de la création d’un nouveau fichier PDF.
void AddUnderlineText() {
String _dataDir("C:\\Samples\\");
// Chaîne pour le nom du fichier de sortie
String outputFileName("AddUnderlineText_out.pdf");
// Créer un nouvel objet document
auto document = MakeObject<Document>();
// Obtenir une page particulière
auto page = document->get_Pages()->Add();
// TextFragment avec du texte d'exemple
auto fragment = MakeObject<TextFragment>("Texte avec décoration de soulignement");
// Définir la police pour TextFragment
fragment->get_TextState()->set_Font(FontRepository::FindFont(u"DejaVu Serif"));
fragment->get_TextState()->set_FontSize(10);
// Définir la mise en forme du texte comme souligné
fragment->get_TextState()->set_Underline(true);
// Spécifiez la position où TextFragment doit être placé
fragment->set_Position(MakeObject<Position>(10, 800));
auto tb = MakeObject<TextBuilder>(page);
// Ajouter TextFragment au fichier PDF
tb->AppendText(fragment);
// Enregistrer le document PDF résultant.
document->Save(_dataDir + outputFileName);
}
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 texte que vous avez ajouté en dessinant un rectangle autour de celui-ci. Découvrez-en plus sur la classe PdfContentEditor.
void AddBorderAroundAddedText() {
String _dataDir("C:\\Samples\\");
// Chaîne pour le nom du fichier d'entrée
String inputFileName("sample.pdf");
// Chaîne pour le nom du fichier de sortie
String outputFileName("AddingBorderAroundAddedText_out.pdf");
auto editor = MakeObject<Aspose::Pdf::Facades::PdfContentEditor>();
editor->BindPdf(_dataDir + inputFileName);
auto lineInfo = MakeObject<Aspose::Pdf::Facades::LineInfo>();
lineInfo->set_LineWidth(2);
lineInfo->set_VerticeCoordinate(MakeArray<float>({ 0, 0, 100, 100, 50, 100 }));
lineInfo->set_Visibility(true);
auto rect = MakeObject<System::Drawing::Rectangle>(0, 0, 0, 0);
editor->CreatePolygon(lineInfo, 1, System::Drawing::Rectangle(0, 0, 0, 0), String::Empty);
// Enregistrer le document PDF résultant.
editor->Save(_dataDir + outputFileName);
}
Comment ajouter un saut de ligne
Pour ajouter du texte avec un saut de ligne, veuillez utiliser TextFragment avec TextParagraph.
L’extrait de code suivant vous montre comment ajouter un saut de ligne dans votre fichier PDF :
void AddNewLineFeed() {
String _dataDir("C:\\Samples\\");
// Chaîne pour le nom du fichier de sortie
String outputFileName("AddNewLineFeed_out.pdf");
// Créer un nouvel objet document
auto document = MakeObject<Document>();
// Obtenir une page particulière
auto page = document->get_Pages()->Add();
// Initialiser un nouveau TextFragment avec du texte contenant les marqueurs de saut de ligne requis
auto textFragment = MakeObject<TextFragment>("Nom du candidat : \r\n Joe Smoe");
// Définir les propriétés du fragment de texte si nécessaire
textFragment->get_TextState()->set_FontSize(12);
textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"DejaVu Serif"));
textFragment->get_TextState()->set_BackgroundColor(Color::get_LightGray());
textFragment->get_TextState()->set_ForegroundColor(Color::get_Red());
// Créer un objet TextParagraph
auto par = MakeObject<TextParagraph>();
// Ajouter un nouveau TextFragment au paragraphe
par->AppendLine(textFragment);
// Définir la position du paragraphe
par->set_Position(MakeObject<Position>(100, 600));
// Créer un objet TextBuilder
auto textBuilder = new TextBuilder(page);
// Ajouter le TextParagraph en utilisant TextBuilder
textBuilder->AppendParagraph(par);
// Enregistrer le document PDF résultant.
document->Save(_dataDir + outputFileName);
}
Comment ajouter du texte barré
Vous pouvez utiliser la classe TextState pour définir la mise en forme du texte comme Gras, Italique, Souligné, et aussi, l’API a fourni les capacités de marquer la mise en forme du texte comme Barré.
Veuillez essayer d’utiliser le code suivant pour ajouter un TextFragment avec une mise en forme Barré.
void AddStrikeOutText() {
String _dataDir("C:\\Samples\\");
// String pour le nom du fichier de sortie
String outputFileName("AddStrikeOutText_out.pdf");
// Ouvrir le document
auto document = MakeObject<Document>();
// Obtenir une page particulière
auto page = document->get_Pages()->Add();
// Créer un fragment de texte
auto textFragment = MakeObject<TextFragment>("main text");
textFragment->set_Position(MakeObject<Position>(100, 600));
// Définir les propriétés du texte
textFragment->get_TextState()->set_FontSize(12);
textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"DejaVu Serif"));
textFragment->get_TextState()->set_BackgroundColor(Color::get_LightGray());
textFragment->get_TextState()->set_ForegroundColor(Color::get_Red());
// Définir la propriété Barré
textFragment->get_TextState()->set_StrikeOut(true);
// Marquer le texte comme Gras
textFragment->get_TextState()->set_FontStyle(FontStyles::Bold);
// Créer un objet TextBuilder
auto textBuilder = MakeObject<TextBuilder>(page);
// Ajouter le fragment de texte à la page PDF
textBuilder->AppendText(textFragment);
// Enregistrer le document PDF résultant.
document->Save(_dataDir + outputFileName);
}
Appliquer un ombrage en dégradé au texte
La classe Aspose.Pdf.Color a été encore améliorée en introduisant une nouvelle propriété de PatternColorSpace, qui peut être utilisée pour spécifier des couleurs d’ombrage pour le texte. Cette nouvelle propriété ajoute différents ombrages en dégradé au texte, par exemple, ombrage axial, ombrage radial (Type 3) comme illustré dans l’extrait de code suivant :
void ApplyGradientShading() {
String _dataDir("C:\\Samples\\");
// Chaîne pour le nom de fichier d'entrée
String inputFileName("sample.pdf");
// Chaîne pour le nom de fichier de sortie
String outputFileName("ApplyGradientShading_out.pdf");
// Ouvrir le document
auto document = MakeObject<Document>(_dataDir + inputFileName);
auto absorber = MakeObject<TextFragmentAbsorber>("always print correctly");
document->get_Pages()->Accept(absorber);
auto textFragment = absorber->get_TextFragments()->idx_get(1);
auto foregroundColor = MakeObject<Aspose::Pdf::Color>();
foregroundColor->set_PatternColorSpace(MakeObject<Aspose::Pdf::Drawing::GradientAxialShading>(Color::get_Red(), Color::get_Blue()));
// Créer une nouvelle couleur avec l'espace de couleurs de motif
textFragment->get_TextState()->set_ForegroundColor(foregroundColor);
textFragment->get_TextState()->set_Underline(true);
document->Save(_dataDir + outputFileName);
}
Pour appliquer un dégradé radial, vous pouvez définir la propriété ‘PatternColorSpace’ égale à ‘Aspose.Pdf.Drawing.GradientRadialShading(startingColor, endingColor)’ dans l’extrait de code ci-dessus.
Comment aligner le texte avec le 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 Floating Box. Les propriétés d’alignement de l’instance Aspose.Pdf.FloatingBox peuvent être utilisées pour y parvenir comme indiqué dans l’exemple de code suivant.
void ApplyGradientShadingRadial() {
String _dataDir("C:\\Samples\\");
// Chaîne pour le nom du fichier d'entrée
String inputFileName("sample.pdf");
// Chaîne pour le nom du fichier de sortie
String outputFileName("ApplyGradientShadingRadial_out.pdf");
auto document = MakeObject<Document>(_dataDir + inputFileName);
auto absorber = MakeObject<TextFragmentAbsorber>(u"always print correctly");
document->get_Pages()->Accept(absorber);
auto textFragment = absorber->get_TextFragments()->idx_get(1);
auto foregroundColor = MakeObject<Aspose::Pdf::Color>();
foregroundColor->set_PatternColorSpace(MakeObject<Aspose::Pdf::Drawing::GradientRadialShading>(Color::get_Red(), Color::get_Blue()));
// Créer une nouvelle couleur avec un espace colorimétrique de motif
textFragment->get_TextState()->set_ForegroundColor(foregroundColor);
textFragment->get_TextState()->set_Underline(true);
document->Save(_dataDir + outputFileName);
}