Редактировать PDF-текст с помощью C#

Как мне найти, а затем скрыть (или удалить) конкретную текстовую фразу?

Например, я создал файл PDF, содержащий всевозможные данные, такие как изображения, таблицы, текст и т. д.

Теперь я хочу найти конкретную фразу, например «Hello World», где бы она ни упоминалась в файле, и каким-то образом скрыть ее или, еще лучше, удалить ее из PDF.

И наконец получить PDF после удаления этой фразы.

Я пробовал iTextSharp и Spire, но не нашел ничего, что работало.

@BrunoLowagie Я бы не назвал это ложью, это немного сурово. Я бы сказал неполный. Фактически правильным утверждением могло быть: «Я пробовал использовать более старую версию iText, ожидая, что она будет содержать функции, представленные в последней версии, и мне не удалось заставить ее работать».

Amedee Van Gasse 16.05.2018 10:12

Версия iText не была упомянута в сообщении (что является еще одним недостатком вопроса). Однако, поскольку OP говорит о iTextSharp, а не о iText для .NET, мы мог предполагаем, что проблема действительно вызвана использованием старой версии iText. Я не сделал этого, потому что ОП намекает, что он провел поиск и ничего не нашел. Можно было бы ожидать, что такой поиск (например, на веб-сайте iText) приведет к работающему решению, например надстройке iText pdfSweep.

Bruno Lowagie 16.05.2018 10:17

Привет, @David, пожалуйста, удалите ссылки на вопросы о тексте извлечение; они не имеют отношения к ответу на вопрос о тексте редактирование. Извлечение текста - это получение текста из PDF без изменения этого PDF; редактирование текста - это удаление текста из PDF-файла путем изменения синтаксиса этого PDF-файла.

Bruno Lowagie 16.05.2018 10:19

Вы пробовали PDFSharp?

Abbas 16.05.2018 11:26
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
4
2 077
2

Ответы 2

Попробуйте использовать следующие фрагменты кода, чтобы скрыть конкретную текстовую фразу в 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, если не покупать лицензию.

Другие вопросы по теме