使用iTextSharp从LocalFolder中存储PDF文本

时间:2015-07-24 12:10:16

标签: c# windows-phone-8.1 itextsharp pdftotext

我正在尝试从Windows Phone 8.1应用程序中的localStorage中存储的PDF中获取文本,但我总是得到一个FileNotFoundException。

为了解释整个故事,我从在线资源中获取PDF,我将其存储到名称与用户名相同的文件夹(用户名是电子邮件地址,但我也试过没有@符号)然后我想从PDF文件中获取一些文本。我使用iTextSharp并按照示例,但不能成功。当我将PDF发送到启动器时,可以使用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;
        }
    }

1 个答案:

答案 0 :(得分:0)

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

在这行代码中,您应该只传递文件名,但是您将整个Path作为参数。由于pdfFolder目前代表路径。