我在vb.net上使用itextsharp从pdf文件中获取文本内容.该解决方案适用于某些文件,但不适用于其他甚至非常简单的文件.问题是令牌字符串值设置为null(一组空方框)
token = New iTextSharp.text.pdf.PRTokeniser(pageBytes)
While token.NextToken()
tknType = token.TokenType()
tknValue = token.StringValue
Run Code Online (Sandbox Code Playgroud)
我可以确保内容的长度,但我无法获得实际的字符串内容.
我意识到这取决于pdf的字体.如果我使用Acrobat或带有Courier的PdfCreator创建一个pdf(顺便说一句,这是我的visual studio编辑器中的默认字体),我可以获得所有文本内容.如果使用不同的字体构建相同的pdf,我得到空的方框.
现在的问题是,无论字体设置如何,我如何提取文本?
谢谢
Ima*_*idi 44
Mark的答案补充了我很多帮助.iTextSharp实现命名空间和类与java版本有点不同
public static string GetTextFromAllPages(String pdfPath)
{
PdfReader reader = new PdfReader(pdfPath);
StringWriter output = new StringWriter();
for (int i = 1; i <= reader.NumberOfPages; i++)
output.WriteLine(PdfTextExtractor.GetTextFromPage(reader, i, new SimpleTextExtractionStrategy()));
return output.ToString();
}
Run Code Online (Sandbox Code Playgroud)
Mar*_*rer 14
String pageText =
PdfTextExtractor.getTextFromPage(myReader, pageNum);
Run Code Online (Sandbox Code Playgroud)
要么
String pageText =
PdfTextExtractor.getTextFromPage(myReader, pageNum, new LocationTextExtractionStrategy());
Run Code Online (Sandbox Code Playgroud)
两者都需要相当新版本的iText [夏普].实际上,自己解析内容流只是重新发明轮子.免除一些痛苦,让iText为您做好准备.
PdfTextExtractor将为您处理所有不同的字体/编码问题...所有可以处理的问题.如果您无法准确地从Reader复制/粘贴,则PDF中没有足够的信息来从内容流中获取字符信息.
| 归档时间: |
|
| 查看次数: |
47638 次 |
| 最近记录: |