Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Le code suivant fonctionne également avec la bibliothèque Aspose.PDF.Drawing.
Pour remplacer du texte dans toutes les pages d’un document PDF, vous devez d’abord utiliser TextFragmentAbsorber pour trouver la phrase particulière que vous souhaitez remplacer. Après cela, vous devez parcourir tous les TextFragments pour remplacer le texte et modifier d’autres attributs. Une fois cela fait, vous n’avez qu’à enregistrer le PDF de sortie en utilisant la méthode Save de l’objet Document. Le code suivant vous montre comment remplacer du texte dans toutes les pages d’un document PDF.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ReplaceTextInAllPages()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Text();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "ReplaceTextAll.pdf"))
{
// Create TextAbsorber object to find all instances of the input search phrase
var absorber = new Aspose.Pdf.Text.TextFragmentAbsorber("text");
// Accept the absorber for all the pages
document.Pages.Accept(absorber);
// Get the extracted text fragments
var textFragmentCollection = absorber.TextFragments;
// Loop through the fragments
foreach (var textFragment in textFragmentCollection)
{
// Update text and other properties
textFragment.Text = "TEXT";
textFragment.TextState.Font = Aspose.Pdf.Text.FontRepository.FindFont("Verdana");
textFragment.TextState.FontSize = 22;
textFragment.TextState.ForegroundColor = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Blue);
textFragment.TextState.BackgroundColor = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Green);
}
// Save PDF document
document.Save(dataDir + "ReplaceTextInAllPages_out.pdf");
}
}
Pour remplacer du texte dans une région de page particulière, nous devons d’abord instancier l’objet TextFragmentAbsorber, spécifier la région de la page en utilisant la propriété TextSearchOptions.Rectangle, puis itérer à travers tous les TextFragments pour remplacer le texte. Une fois ces opérations terminées, nous n’avons qu’à enregistrer le PDF de sortie en utilisant la méthode Save de l’objet Document. Le code suivant vous montre comment remplacer du texte dans toutes les pages d’un document PDF.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ReplaceTextInParticularPageRegion()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Text();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "programaticallyproducedpdf.pdf"))
{
// instantiate TextFragment Absorber object
var absorber = new Aspose.Pdf.Text.TextFragmentAbsorber();
// search text within page bound
absorber.TextSearchOptions.LimitToPageBounds = true;
// specify the page region for TextSearch Options
absorber.TextSearchOptions.Rectangle = new Aspose.Pdf.Rectangle(100, 100, 200, 200);
// search text from first page of PDF file
document.Pages[1].Accept(absorber);
// iterate through individual TextFragment
foreach (var textFragment in absorber.TextFragments)
{
// update text to blank characters
textFragment.Text = "";
}
// Save PDF document
document.Save(dataDir + "ReplaceTextInParticularPageRegion_out.pdf");
}
}
Si vous souhaitez remplacer certaines phrases en fonction d’une expression régulière, vous devez d’abord trouver toutes les phrases correspondant à cette expression régulière particulière en utilisant TextFragmentAbsorber. Vous devrez passer l’expression régulière comme paramètre au constructeur de TextFragmentAbsorber. Vous devez également créer un objet TextSearchOptions qui spécifie si l’expression régulière est utilisée ou non. Une fois que vous avez les phrases correspondantes dans les TextFragments, vous devez les parcourir et les mettre à jour si nécessaire. Enfin, vous devez enregistrer le PDF mis à jour en utilisant la méthode Save de l’objet Document. Le code suivant vous montre comment remplacer du texte basé sur une expression régulière.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ReplaceTextBasedOnARegularExpression()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Text();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "SearchRegularExpressionPage.pdf"))
{
// Create TextAbsorber object to find all the phrases matching the regular expression
var absorber = new Aspose.Pdf.Text.TextFragmentAbsorber("\\d{4}-\\d{4}"); // Like 1999-2000
// Set text search option to specify regular expression usage
absorber.TextSearchOptions = new Aspose.Pdf.Text.TextSearchOptions(true);
// Accept the absorber for a single page
document.Pages[1].Accept(absorber);
// Get the extracted text fragments
var collection = absorber.TextFragments;
// Loop through the fragments
foreach (var textFragment in collection)
{
// Update text and other properties
textFragment.Text = "New Phrase";
// Set to an instance of an object.
textFragment.TextState.Font = Aspose.Pdf.Text.FontRepository.FindFont("Verdana");
textFragment.TextState.FontSize = 22;
textFragment.TextState.ForegroundColor = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Blue);
textFragment.TextState.BackgroundColor = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Green);
}
// Save PDF document
document.Save(dataDir + "ReplaceTextonRegularExpression_out.pdf");
}
}
Aspose.PDF for .NET prend en charge la capacité de remplacer du texte dans un document PDF. Cependant, parfois, vous avez besoin de ne remplacer que la police utilisée dans le document PDF. Ainsi, au lieu de remplacer le texte, seule la police utilisée est remplacée. L’un des surcharges du constructeur TextFragmentAbsorber accepte un objet TextEditOptions comme argument et nous pouvons utiliser la valeur RemoveUnusedFonts de l’énumération TextEditOptions.FontReplace pour répondre à nos besoins. Le code suivant montre comment remplacer la police à l’intérieur d’un document PDF.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ReplaceFonts()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Text();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "ReplaceTextPage.pdf"))
{
// Create text edit options
var options = new Aspose.Pdf.Text.TextEditOptions(Aspose.Pdf.Text.TextEditOptions.FontReplace.RemoveUnusedFonts);
// Search text fragments and set edit option as remove unused fonts
var absorber = new Aspose.Pdf.Text.TextFragmentAbsorber(options);
// Accept the absorber for all the pages
document.Pages.Accept(absorber);
// Traverse through all the TextFragments
foreach (var textFragment in absorber.TextFragments)
{
// If the font name is ArialMT, replace font name with Arial
if (textFragment.TextState.Font.FontName == "Arial,Bold")
{
textFragment.TextState.Font = Aspose.Pdf.Text.FontRepository.FindFont("Arial");
}
}
// Save PDF document
document.Save(dataDir + "ReplaceFonts_out.pdf");
}
}
Aspose.PDF for .NET prend en charge la fonctionnalité de recherche et de remplacement de texte à l’intérieur du fichier PDF. Cependant, récemment, certains clients ont rencontré des problèmes lors du remplacement de texte lorsque certains TextFragments sont remplacés par des contenus plus petits et que des espaces supplémentaires sont affichés dans le PDF résultant ou dans le cas où le TextFragment est remplacé par une chaîne plus longue, les mots se chevauchent avec le contenu existant de la page. Ainsi, le besoin était d’introduire un mécanisme qui, une fois le texte à l’intérieur d’un document PDF remplacé, le contenu devrait être réarrangé.
Pour répondre aux scénarios énoncés ci-dessus, Aspose.PDF for .NET a été amélioré afin qu’aucun problème de ce type n’apparaisse lors du remplacement de texte à l’intérieur d’un fichier PDF. Le code suivant montre comment remplacer du texte à l’intérieur d’un fichier PDF et le contenu des pages doit être réarrangé automatiquement.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void AutomaticallyReArrangePageContents()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Text();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "ExtractTextPage.pdf"))
{
// Create TextFragment Absorber object with regular expression
var absorber = new Aspose.Pdf.Text.TextFragmentAbsorber("[TextFragmentAbsorber,companyname,Textbox,50]");
document.Pages.Accept(absorber);
// Replace each TextFragment
foreach (var textFragment in absorber.TextFragments)
{
// Set font of text fragment being replaced
textFragment.TextState.Font = Aspose.Pdf.Text.FontRepository.FindFont("Arial");
// Set font size
textFragment.TextState.FontSize = 12;
textFragment.TextState.ForegroundColor = Aspose.Pdf.Color.Navy;
// Replace the text with larger string than placeholder
textFragment.Text = "This is a Larger String for the Testing of this issue";
}
// Save PDF document
document.Save(dataDir + "AutomaticallyReArrangePageContents_out.pdf");
}
}
Les symboles remplaçables sont des symboles spéciaux dans une chaîne de texte qui peuvent être remplacés par le contenu correspondant à l’exécution. Les symboles remplaçables actuellement pris en charge par le nouveau modèle d’objet Document du namespace Aspose.PDF sont $P
, $p
, \n
, \r
. Les $p
et $P
sont utilisés pour gérer la numérotation des pages à l’exécution. $p
est remplacé par le numéro de la page où se trouve la classe Paragraph actuelle. $P
est remplacé par le nombre total de pages dans le document. Lors de l’ajout de TextFragment
à la collection de paragraphes des documents PDF, il ne prend pas en charge le saut de ligne à l’intérieur du texte. Cependant, pour ajouter du texte avec un saut de ligne, veuillez utiliser TextFragment
avec TextParagraph
:
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void RenderingReplaceableSymbols()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Text();
// Create PDF document
using (var document = new Aspose.Pdf.Document())
{
var page = document.Pages.Add();
// Initialize new TextFragment with text containing required newline markers
Aspose.Pdf.Text.TextFragment textFragment = new Aspose.Pdf.Text.TextFragment("Applicant Name: " + Environment.NewLine + " Joe Smoe");
// Set text fragment properties if necessary
textFragment.TextState.FontSize = 12;
textFragment.TextState.Font = Aspose.Pdf.Text.FontRepository.FindFont("TimesNewRoman");
textFragment.TextState.BackgroundColor = Aspose.Pdf.Color.LightGray;
textFragment.TextState.ForegroundColor = Aspose.Pdf.Color.Red;
// Create TextParagraph object
var par = new Aspose.Pdf.Text.TextParagraph();
// Add new TextFragment to paragraph
par.AppendLine(textFragment);
// Set paragraph position
par.Position = new Aspose.Pdf.Text.Position(100, 600);
// Create TextBuilder object
var textBuilder = new Aspose.Pdf.Text.TextBuilder(page);
// Add the TextParagraph using TextBuilder
textBuilder.AppendParagraph(par);
// Save PDF document
document.Save(dataDir + "RenderingReplaceableSymbols_out.pdf");
}
}
Les symboles remplaçables peuvent également être placés à l’intérieur de la section d’en-tête/pied de page d’un fichier PDF. Veuillez consulter le code suivant pour des détails sur la façon d’ajouter un symbole remplaçable dans la section de pied de page.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ReplaceableSymbolsInHeaderOrFooterArea()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Text();
// Create PDF document
using (var document = new Aspose.Pdf.Document())
{
var page = document.Pages.Add();
// Create margin info
var marginInfo = new Aspose.Pdf.MarginInfo();
marginInfo.Top = 90;
marginInfo.Bottom = 50;
marginInfo.Left = 50;
marginInfo.Right = 50;
// Assign the marginInfo instance to Margin property of sec1.PageInfo
page.PageInfo.Margin = marginInfo;
var headerFooterFirst = new Aspose.Pdf.HeaderFooter();
page.Header = headerFooterFirst;
headerFooterFirst.Margin.Left = 50;
headerFooterFirst.Margin.Right = 50;
// Instantiate a Text paragraph that will store the content to show as header
var fragment1 = new Aspose.Pdf.Text.TextFragment("report title");
fragment1.TextState.Font = Aspose.Pdf.Text.FontRepository.FindFont("Arial");
fragment1.TextState.FontSize = 16;
fragment1.TextState.ForegroundColor = Aspose.Pdf.Color.Black;
fragment1.TextState.FontStyle = Aspose.Pdf.Text.FontStyles.Bold;
fragment1.TextState.HorizontalAlignment = Aspose.Pdf.HorizontalAlignment.Center;
fragment1.TextState.LineSpacing = 5f;
headerFooterFirst.Paragraphs.Add(fragment1);
var fragment2 = new Aspose.Pdf.Text.TextFragment("Report_Name");
fragment2.TextState.Font = Aspose.Pdf.Text.FontRepository.FindFont("Arial");
fragment2.TextState.ForegroundColor = Aspose.Pdf.Color.Black;
fragment2.TextState.HorizontalAlignment = Aspose.Pdf.HorizontalAlignment.Center;
fragment2.TextState.LineSpacing = 5f;
fragment2.TextState.FontSize = 12;
headerFooterFirst.Paragraphs.Add(fragment2);
// Create a HeaderFooter object for the section
var headerFooterFoot = new Aspose.Pdf.HeaderFooter();
// Set the HeaderFooter object to odd & even footer
page.Footer = headerFooterFoot;
headerFooterFoot.Margin.Left = 50;
headerFooterFoot.Margin.Right = 50;
// Add a text paragraph containing current page number of total number of pages
var fragment3 = new Aspose.Pdf.Text.TextFragment("Generated on test date");
var fragment4 = new Aspose.Pdf.Text.TextFragment("report name ");
var fragment5 = new Aspose.Pdf.Text.TextFragment("Page $p of $P");
// Instantiate a table object
var table2 = new Aspose.Pdf.Table();
// Add the table in paragraphs collection of the desired section
headerFooterFoot.Paragraphs.Add(table2);
// Set with column widths of the table
table2.ColumnWidths = "165 172 165";
// Create rows in the table and then cells in the rows
var row3 = table2.Rows.Add();
row3.Cells.Add();
row3.Cells.Add();
row3.Cells.Add();
// Set the vertical allignment of the text as center alligned
row3.Cells[0].Alignment = Aspose.Pdf.HorizontalAlignment.Left;
row3.Cells[1].Alignment = Aspose.Pdf.HorizontalAlignment.Center;
row3.Cells[2].Alignment = Aspose.Pdf.HorizontalAlignment.Right;
row3.Cells[0].Paragraphs.Add(fragment3);
row3.Cells[1].Paragraphs.Add(fragment4);
row3.Cells[2].Paragraphs.Add(fragment5);
// Sec1.Paragraphs.Add(New Text("Aspose.Total for Java is a compilation of every Java component offered by Aspose. It is compiled on a#$NL" + "daily basis to ensure it contains the most up to date versions of each of our Java components. #$NL " + "Using Aspose.Total for Java developers can create a wide range of applications. #$NL #$NL #$NP" + "Aspose.Total for Java is a compilation of every Java component offered by Aspose. It is compiled on a#$NL" + "daily basis to ensure it contains the most up to date versions of each of our Java components. #$NL " + "Using Aspose.Total for Java developers can create a wide range of applications. #$NL #$NL #$NP" + "Aspose.Total for Java is a compilation of every Java component offered by Aspose. It is compiled on a#$NL" + "daily basis to ensure it contains the most up to date versions of each of our Java components. #$NL " + "Using Aspose.Total for Java developers can create a wide range of applications. #$NL #$NL"))
var table = new Aspose.Pdf.Table();
table.ColumnWidths = "33% 33% 34%";
table.DefaultCellPadding = new Aspose.Pdf.MarginInfo();
table.DefaultCellPadding.Top = 10;
table.DefaultCellPadding.Bottom = 10;
// Add the table in paragraphs collection of the desired section
page.Paragraphs.Add(table);
// Set default cell border using BorderInfo object
table.DefaultCellBorder = new Aspose.Pdf.BorderInfo(Aspose.Pdf.BorderSide.All, 0.1f);
// Set table border using another customized BorderInfo object
table.Border = new Aspose.Pdf.BorderInfo(Aspose.Pdf.BorderSide.All, 1f);
table.RepeatingRowsCount = 1;
// Create rows in the table and then cells in the rows
var row1 = table.Rows.Add();
row1.Cells.Add("col1");
row1.Cells.Add("col2");
row1.Cells.Add("col3");
const string CRLF = "\r\n";
for (int i = 0; i <= 10; i++)
{
var row = table.Rows.Add();
row.IsRowBroken = true;
for (int c = 0; c <= 2; c++)
{
Aspose.Pdf.Cell c1;
if (c == 2)
{
c1 = row.Cells.Add("Aspose.Total for Java is a compilation of every Java component offered by Aspose. It is compiled on a" + CRLF + "daily basis to ensure it contains the most up to date versions of each of our Java components. " + CRLF + "daily basis to ensure it contains the most up to date versions of each of our Java components. " + CRLF + "Using Aspose.Total for Java developers can create a wide range of applications.");
}
else
{
c1 = row.Cells.Add("item1" + c);
}
c1.Margin = new Aspose.Pdf.MarginInfo();
c1.Margin.Left = 30;
c1.Margin.Top = 10;
c1.Margin.Bottom = 10;
}
}
// Save PDF document
document.Save(dataDir + "ReplaceableSymbolsInHeaderFooter_out.pdf");
}
}
Aspose.PDF for .NET prend en charge la fonctionnalité d’incorporation de polices lors de la création d’un document PDF, ainsi que la capacité d’incorporer des polices dans des fichiers PDF existants. À partir de Aspose.PDF for .NET 7.3.0, il vous permet également de supprimer les polices en double ou inutilisées des documents PDF.
Pour remplacer les polices, utilisez l’approche suivante :
Le code suivant remplace la police pour tous les fragments de texte de toutes les pages du document et supprime les polices inutilisées.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void RemoveUnusedFonts()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Text();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "ReplaceTextPage.pdf"))
{
var options = new Aspose.Pdf.Text.TextEditOptions(Aspose.Pdf.Text.TextEditOptions.FontReplace.RemoveUnusedFonts);
var absorber = new Aspose.Pdf.Text.TextFragmentAbsorber();
document.Pages.Accept(absorber);
// Iterate through all the TextFragments
foreach (var textFragment in absorber.TextFragments)
{
textFragment.TextState.Font = Aspose.Pdf.Text.FontRepository.FindFont("Arial, Bold");
}
// Save PDF document
document.Save(dataDir + "RemoveUnusedFonts_out.pdf");
}
}
Dans certaines opérations de texte, vous devez supprimer tout le texte d’un document PDF et pour cela, vous devez généralement définir le texte trouvé comme une valeur de chaîne vide. Le point est que changer le texte pour une multitude de fragments de texte invoque un certain nombre d’opérations de vérification et d’ajustement de position de texte. Elles sont essentielles dans les scénarios d’édition de texte. La difficulté est que vous ne pouvez pas déterminer combien de fragments de texte seront supprimés dans le scénario où ils sont traités dans une boucle.
Par conséquent, nous recommandons d’utiliser une autre approche pour le scénario de suppression de tout le texte des pages PDF. Veuillez considérer le code suivant qui fonctionne très rapidement.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void RemoveAllTextFromDocument()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Text();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "RemoveAllText.pdf"))
{
// Loop through all pages of PDF Document
for (int i = 1; i <= document.Pages.Count; i++)
{
var page = document.Pages[i];
var operatorSelector = new Aspose.Pdf.OperatorSelector(new Aspose.Pdf.Operators.TextShowOperator());
// Select all text on the page
page.Contents.Accept(operatorSelector);
// Delete all text
page.Contents.Delete(operatorSelector.Selected);
}
// Save PDF document
document.Save(dataDir + "RemoveAllText_out.pdf", Aspose.Pdf.SaveFormat.Pdf);
}
}
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.