Получить текст из PDF, хранящегося в LocalFolder, с помощью iTextSharp

Я пытаюсь получить текст из PDF-файла, хранящегося в localStorage в приложении Windows Phone 8.1, но всегда получаю исключение FileNotFoundException.

Чтобы объяснить всю историю, я получаю PDF-файл из онлайн-источника, сохраняю его в папке с именем, совпадающим с именем пользователя (имя пользователя — это адрес электронной почты, но я пробовал также без знака @) пользователя, а затем я хотите получить текст из файла PDF. Я использую iTextSharp и следую примерам, но не могу добиться успеха. Когда я отправляю PDF-файл в Launcher, он успешно открывается другим приложением, таким как Acrobat Reader.

Моя функция, как показано ниже. Сначала я отправляю объект PDF, который имеет атрибут Путь и хранится в папке, соответствующей имени пользователя пользователя. Затем я получаю PDF как элемент StorageFile. Когда я создаю PDFReader, вызывая конструктор, я получаю исключение FileNotFoundException. Кто-нибудь знает или может предположить, в чем может быть проблема? Совместим ли iTextSharp с Windows Phone 8.1?

internal async Task<bool> OpenPdfFromDownloadedCollections(PDF pdfToOpen, string username)
    {
        try
        {
            StorageFolder folder = ApplicationData.Current.LocalFolder;
            var pdfFolder = await folder.GetFolderAsync(username + "PDFs");

            var pdf = await pdfFolder.GetFileAsync(Object.Path);

            StringBuilder text = new StringBuilder();
            using (PdfReader reader = new PdfReader(pdf.Path))
            {
                for (int i = 1; i <= reader.NumberOfPages; i++)
                {
                    string thePage = PdfTextExtractor.GetTextFromPage(reader, i, its);
                    string[] theLines = thePage.Split('\n');
                    foreach (var theLine in theLines)
                    {
                        text.AppendLine(theLine);
                    }
                }
            }
            return true;
        }
        catch (Exception)
        {
            return false;
        }
    }

person Andreas777    schedule 24.07.2015    source источник
comment
какую версию itextsharp вы используете?   -  person Boot750    schedule 24.07.2015
comment
Я использую 5.5.6.0 из библиотеки nuget.   -  person Andreas777    schedule 24.07.2015
comment
Насколько я понимаю из других постов и видео, это может не работать с версией Windows Phone из-за некоторых конфликтов с System.Drawing.dll.   -  person Andreas777    schedule 24.07.2015
comment
Так же, как я слышал. Я думаю, вам нужно проверить, есть ли другие компоненты, которые могут вам помочь. Существует сообщение в блоге Microsoft blogs.msdn.com/b/eternalcoding/archive/2013/04/15/ возможно, это то, что вы ищете.   -  person Boot750    schedule 24.07.2015
comment
Остальные все платные и дорогие, но работают, как пробовал пробную. Мне нужно получить штрих-код из pdf и отобразить его на экране. Знаете ли вы какую-либо бесплатную библиотеку для преобразования pdf в изображение или текст, кроме этой?   -  person Andreas777    schedule 24.07.2015
comment
Вы хотите извлечь изображение штрих-кода или просто показать сайт в формате PDF на экране?   -  person Boot750    schedule 24.07.2015
comment
Можете ли вы преобразовать StorageFile в массив байтов и передать его PdfReader()? stackoverflow.com/a/15358695/231316   -  person Chris Haas    schedule 24.07.2015
comment
Я сделал, и я получил другие исключения в выводе. (System.TypeLoadException' произошло в itextsharp.DLL System.FormatException' произошло в mscorlib.ni.dll System.FormatException' произошло в mscorlib.ni.dll System.TypeLoadException' произошло в itextsharp.DLL iTextSharp.text.exceptions.InvalidPdfException' произошло в itextsharp.DLL iTextSharp.text.exceptions.InvalidPdfException' произошло в itextsharp.DLL)   -  person Andreas777    schedule 24.07.2015


Ответы (1)


var pdf = await pdfFolder.GetFileAsync(Object.Path);

В этой строке кода вы должны передать только имя файла, но вы указываете весь путь в качестве параметра. Поскольку pdfFolder в настоящее время представляет путь.

person soumya sambit Kunda    schedule 24.07.2015
comment
Меня сбивает с толку соглашение об именах, но это только имя файла. Например, example.pdf. Функция выдает исключение, когда я передаю путь к PdfReader. - person Andreas777; 24.07.2015
comment
вы пробовали pdfToOpen.path вместо Object.Path - person soumya sambit Kunda; 24.07.2015
comment
Нет, но это не настоящий файл. Это просто имя конкретного объекта. Но я попытаюсь. - person Andreas777; 24.07.2015