Как мне найти, а затем скрыть (или удалить) конкретную текстовую фразу?
Например, я создал файл PDF, содержащий всевозможные данные, такие как изображения, таблицы, текст и т. д.
Теперь я хочу найти конкретную фразу, например «Hello World», где бы она ни упоминалась в файле, и каким-то образом скрыть ее или, еще лучше, удалить ее из PDF.
И наконец получить PDF после удаления этой фразы.
Я пробовал iTextSharp и Spire, но не нашел ничего, что работало.
Версия iText не была упомянута в сообщении (что является еще одним недостатком вопроса). Однако, поскольку OP говорит о iTextSharp, а не о iText для .NET, мы мог предполагаем, что проблема действительно вызвана использованием старой версии iText. Я не сделал этого, потому что ОП намекает, что он провел поиск и ничего не нашел. Можно было бы ожидать, что такой поиск (например, на веб-сайте iText) приведет к работающему решению, например надстройке iText pdfSweep.
Привет, @David, пожалуйста, удалите ссылки на вопросы о тексте извлечение; они не имеют отношения к ответу на вопрос о тексте редактирование. Извлечение текста - это получение текста из PDF без изменения этого PDF; редактирование текста - это удаление текста из PDF-файла путем изменения синтаксиса этого PDF-файла.
Вы пробовали PDFSharp?





Попробуйте использовать следующие фрагменты кода, чтобы скрыть конкретную текстовую фразу в PDF с помощью Spire.PDF.
using Spire.Pdf;
using Spire.Pdf.General.Find;
using System.Drawing;
namespace HideText
{
class Program
{
static void Main(string[] args)
{
//load PDF file
PdfDocument doc = new PdfDocument();
doc.LoadFromFile(@"C:\Users\Administrator\Desktop\Example.pdf");
//find all results where "Hello World" appears
PdfTextFind[] finds = null;
foreach (PdfPageBase page in doc.Pages)
{
finds = page.FindText("Hello World").Finds;
}
//cover the specific result with white background color
finds[0].ApplyRecoverString("", Color.White, false);
//save to file
doc.SaveToFile("output.pdf");
}
}
}
Следующий фрагмент отсюда позволяет найти и затемнить текст в PDF-документе:
PdfDocument pdf = new PdfDocument(new PdfReader(SRC), new PdfWriter(DEST));
ICleanupStrategy cleanupStrategy = new RegexBasedCleanupStrategy(new Regex(@"Alice", RegexOptions.IgnoreCase)).SetRedactionColor(ColorConstants.PINK);
PdfAutoSweep autoSweep = new PdfAutoSweep(cleanupStrategy);
autoSweep.CleanUp(pdf);
pdf.Close();
Обратите внимание на лицензию. Это AGPL, если не покупать лицензию.
@BrunoLowagie Я бы не назвал это ложью, это немного сурово. Я бы сказал неполный. Фактически правильным утверждением могло быть: «Я пробовал использовать более старую версию iText, ожидая, что она будет содержать функции, представленные в последней версии, и мне не удалось заставить ее работать».