从在线pdf文件中提取文本(sharepoint)
Posted
技术标签:
【中文标题】从在线pdf文件中提取文本(sharepoint)【英文标题】:extracting text from online pdf file (sharepoint) 【发布时间】:2018-01-16 13:44:22 【问题描述】:我知道有人提出并回答了类似的问题,但我找不到解决问题的方法。 所以基本上我想使用 C# 从在线 pdf 文件中提取文本,我可以使用 [itextsharp] 库来实现。然而,这适用于我可以通过在谷歌上搜索找到的一些随机 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;
我很乐意提供任何帮助或信息! 感谢您的时间和精力!
【问题讨论】:
【参考方案1】:这是我的 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();
【讨论】:
谢谢!我接受了您的回答作为解决方案,但是如果您或其他任何人可以提供有关为什么 context.Credentials = CredentialCache.DefaultCredentials; 的任何信息而不是 context.Credentials = new SharePointOnlineCredentials(login, sec_pass);不起作用。我也会为此感到高兴的!再次感谢。以上是关于从在线pdf文件中提取文本(sharepoint)的主要内容,如果未能解决你的问题,请参考以下文章
在python中使用PDFMiner从PDF文件中提取文本?