Могу ли я использовать Telerik Document Processing для чтения содержимого PDF? - PullRequest
0 голосов
/ 04 мая 2018

Я работаю над проектом, в котором библиотеки Telerik для обработки документов доступны для меня, и я надеялся, что смогу использовать его для чтения PDF-файла и поиска конкретного текста, который я могу использовать для другой обработки. Но хотя код для этого кажется простым, я не получаю ожидаемых результатов. Это доказательство концепции, которую я бросил вместе:

        var fs = new FileStream("..\\some.pdf", FileMode.Open);

        RadFixedDocument doc = new PdfFormatProvider(fs).Import();

        var pageCt = 0;
        var elementCt = 0;
        foreach (var page in doc.Pages) {
            pageCt += 1;
            Console.WriteLine($"Page {pageCt}, (Has content: {page.HasContent}, {page.Content.Count})");
            foreach (var contentEl in page.Content) {
                elementCt += 1;
                Console.WriteLine($"Element {elementCt}");
                if (contentEl is TextFragment) {
                    string text = (contentEl as TextFragment).Text;
                    Console.WriteLine(text);
                    // if (text.Contains("{{CustomTag}}")) {
                    //     Console.WriteLine(text);
                    // } else {
                    //     Console.Write(".");
                    // }
                }
                else {
                    Console.WriteLine($"Content Type: {contentEl.GetType().ToString()}");
                }
            }
        }

Я проверил это на нескольких документах, но, хотя кажется, что выбрано правильное количество страниц, каждая страница сообщает, что HasContent равно false, а коллекция Content пуста.

Не ошибаюсь ли я, думая, что смогу пройтись по элементам содержимого PDF таким образом?

1 Ответ

0 голосов
/ 09 мая 2018

OK. Это довольно странная сделка, но с небольшой помощью коллеги нам удалось заставить это работать. Оказывается, разница в том, как вы применяете FileStream.

Так что вместо

RadFixedDocument doc = new PdfFormatProvider(fs).Import();

Мы использовали

RadFixedDocument doc = new PdfFormatProvider().Import(fs);

И со всем остальным тоже самое - работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...