从在线 pdf 文件中提取文本 (sharepoint)

extracting text from online pdf file (sharepoint)

我知道有人提出过类似的问题并得到了回答,但我找不到解决问题的方法。 所以基本上我想使用 C# 从在线 pdf 文件中提取文本,我可以使用 [itextsharp] 库来实现。然而,这适用于一些我可以通过在 google 上搜索找到的随机 pdf 文件。我的目标是对存储多个 PDF 文件的私人共享点帐户执行相同的操作。我的 chrome 网络浏览器设置为记住用户和密码,但我仍然无法用我的代码实现它。对我来说,身份验证似乎没有问题,但我可能错了。这是代码:

public static string pdfTX(string path)
{
    CookieContainer cookieJar = new CookieContainer();
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(path);

    request.Proxy.Credentials = CredentialCache.DefaultCredentials;

    request.UserAgent = @"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36";
    request.Credentials = CredentialCache.DefaultCredentials;
    //  request.Credentials = new NetworkCredential(uName, pWord);

    Thread.Sleep(3000);
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    Stream stream = request.GetResponse().GetResponseStream();

    string textPDF = string.Empty;

    PdfReader reader = new PdfReader(stream); //error here (iTextSharp.text.exceptions.InvalidPdfException: 'PDF header signature not found.')

    for (int page = 1; page <= reader.NumberOfPages; page++)
    {
       textPDF += PdfTextExtractor.GetTextFromPage(reader, page);
    }

    reader.Close();
    response.Close();
    //  readStream.Close();
    // public string passtext = text;

    return textPDF;
}

我很乐意提供任何帮助或信息! 感谢您的时间和精力!

这是我使用 CSOM 的测试代码(如果我使用流读取文件,我会遇到同样的错误)。

static void Main(string[] args)
        {
            string login = "lee@domain.onmicrosoft.com"; //give your username here  

            using (var context = new ClientContext("https://domain.sharepoint.com/sites/tst"))
            {
                string password = "pw";
                SecureString sec_pass = new SecureString();
                Array.ForEach(password.ToArray(), sec_pass.AppendChar);
                sec_pass.MakeReadOnly();
                context.Credentials = new SharePointOnlineCredentials(login, sec_pass);

                var path = "/sites/tst/mydoc3/beginning_sharepoint_2013_development.pdf";
                var file = context.Web.GetFileByServerRelativeUrl(path);
                context.Load(file);
                context.ExecuteQuery();

                ClientResult<System.IO.Stream> data = file.OpenBinaryStream();
                context.Load(file);
                context.ExecuteQuery();                

                string textPDF = string.Empty;
                using (System.IO.MemoryStream mStream = new System.IO.MemoryStream())
                {
                    if (data != null)
                    {
                        data.Value.CopyTo(mStream);
                        byte[] array = mStream.ToArray();
                        PdfReader reader = new PdfReader(array);

                        for (int page = 1; page <= reader.NumberOfPages; page++)
                        {
                            textPDF += PdfTextExtractor.GetTextFromPage(reader, page);
                        }

                        reader.Close();
                    }
                }
            }            
            Console.WriteLine("done");
            Console.ReadKey();

        }