Как определить прямоугольники и прямоугольники в PDF с помощью C# iTextSharp - PullRequest
1 голос
/ 25 марта 2020

У меня есть образец PDF, который выглядит следующим образом

enter image description here

Я пытаюсь получить эти прямоугольники / ящики, используя C# iTextSharp

        PdfReader reader = new PdfReader(inFileName);

        for (int i = 1; i <= reader.NumberOfPages; ++i)
        {
            strPageNumber = i.ToString();
            if (intCommentCount >= 5)
            {
                break;
            }

            PdfDictionary pagedic = reader.GetPageN(i);

            var thing = reader.GetPageContent(i);
            string converted = Encoding.UTF8.GetString(thing, 0, thing.Length);
            PdfArray rectarray = (PdfArray)PdfReader.GetPdfObject(pagedic.Get(PdfName.RECT));

            if (rectarray == null || rectarray.Size == 0)
            {
                continue;
            }
         }

Однако, к сожалению, прямой массив возвращается как ноль. Я попробовал BOX вместо RECT, но rectarray также возвращается как ноль

Как собрать объекты BOX / RECTANGLE из PDF с помощью C# iTextSharp

Заранее спасибо

1 Ответ

0 голосов
/ 25 марта 2020

Вы можете использовать PdfPig , чтобы получить эти прямоугольники. Я не знаю, являются ли прямоугольники Path или Annotations, поэтому вот код для обоих случаев:

using (PdfDocument document = PdfDocument.Open("file.pdf"))
{      
    for (int i = 0; i < document.NumberOfPages; i++)
    {
        var page = document.GetPage(i + 1);

        // if the rectangle are paths
        var paths = page.ExperimentalAccess.Paths;

        // if the rectangle are annotations
        var annotations = page.ExperimentalAccess.GetAnnotations().ToList();
        foreach (var annotation in annotations)
        {
            var rectangle = annotation.Rectangle;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...