iTextSharp - обрезать файл PDF (C#)

Я хочу обрезать PDF-файл, используя iTextSharp и прямоугольник (0,1000,600,155). Все хорошо, и когда вы открываете созданный *.pdf файл, вы можете видеть только обрезанный контент, НО! Если вы анализируете этот PDF-файл, в нем все еще есть информация и текст из невидимой части документа, я не могу этого принять. Как я могу удалить эти данные полностью?

Вот мой пример кода:

        static void cropiTxtSharp(){
        string file ="C:\\testpdf.pdf";
        string oldchar = "testpdf.pdf";
        string repChar = "test.pdf";
        PdfReader reader = new PdfReader(file);
        PdfDictionary pageDict;
        PdfRectangle rect = new PdfRectangle(0, 1000, 600, 115);
        pageDict = reader.GetPageN(1);
        pageDict.Put(PdfName.CROPBOX, rect);
        PdfStamper stamper = new PdfStamper(reader, new FileStream(file.Replace(oldchar, repChar), FileMode.Create, FileAccess.Write));
        stamper.Close();
        reader.Close();
    }

РЕДАКТИРОВАТЬ: Вот код, который работает, я провожу несколько часов, но, наконец, я сделал это:P
Сначала добавьте следующее к проекту:

using iTextSharp.text.pdf;
using iTextSharp.text;
using iTextSharp.xtra.iTextSharp.text.pdf.pdfcleanup;


Тогда вы можете использовать мой код:

    static void textsharpie()
    {
        string file = "C:\\testpdf.pdf";
        string oldchar = "testpdf.pdf";
        string repChar = "test.pdf";
        PdfReader reader = new PdfReader(file);
        PdfStamper stamper = new PdfStamper(reader, new FileStream(file.Replace(oldchar, repChar), FileMode.Create, FileAccess.Write));
        List<PdfCleanUpLocation> cleanUpLocations = new List<PdfCleanUpLocation>();
        cleanUpLocations.Add(new PdfCleanUpLocation(1, new iTextSharp.text.Rectangle(0f, 0f, 600f, 115f), iTextSharp.text.BaseColor.WHITE));
        PdfCleanUpProcessor cleaner = new PdfCleanUpProcessor(cleanUpLocations, stamper);
        cleaner.CleanUp();
        stamper.Close();
        reader.Close();
    }


К сожалению, я не могу использовать этот код, если хочу коммерциализировать свое приложение без оплаты лицензии, поэтому мне пришлось подумать о другой библиотеке...

1 ответ

Решение

Что вы делаете, это устанавливаете CropBox страницы, который абсолютно ничего не делает с содержимым документа. Это было разработано и всегда было так с Acrobat 1.0.

То, что вы хотите сделать, называется редактированием (или, в вашем случае, исключительным редактированием, поскольку вы хотите удалить все, что находится за пределами прямоугольника). Это определенно нетривиально делать правильно, в основном из-за проблем с контентом, который частично перекрывает границы, которые нужно редактировать (изображения, текст и пути).

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