【问题标题】:ITextSharp PdfReader not reading new text in different PDFsITextSharp PdfReader 不阅读不同 PDF 中的新文本
【发布时间】:2016-05-02 05:07:12
【问题描述】:

我有一个使用 ITextSharp 读取 PDF 文本的 Windows 服务应用程序。我正在使用文本框来显示 PDF 的文本。 它在读取第一个 PDF 时工作正常,但是当它读取第二个 PDF 时,文本不会改变,文本仍然是第一个 PDF。这是我的代码:

dim vFileName as string
dim vFileEntries as string()
dim vPath as string = "C:\PDF"

if directory.exists(vPath) then
   vFileEntries = directory.getfiles(vPath)

  for each vFileName in vFileEntries
   dim PR as PdfReader = new PdfReader(vFileName)

    for CurrentPage as integer = 1 to PR.NumberOfPages
     RichTextBox1.text = ""
     dim ltestrategy as LocationTextExtractionStrategy = New LocationTextExtractionStrategy
     dim currentext as string = PdfTextExtractor.GetTextFromPage(PR, CurrentPage,  ltestrategy)

     RichTextBox1.Text = RichTextBox1.Text + currentext
     next
    PR.close()
  next vFileName
end if

感谢任何帮助

【问题讨论】:

  • 如果您删除 RichTextBox1.text = ""(或至少将其移出循环)会发生什么?
  • 我想清除上一个pdf中的文本,这样我就可以读取每个pdf的文本了
  • 我对您的要求感到困惑。你想要在 RichTextBox1 中的最终结果是程序运行,从头到尾?运行我发布的代码后,文本框中的内容是什么?
  • 我很抱歉让您感到困惑并且我的英语不好...但我希望最终结果是 RichTextBox1 可以显示所有 PDF 文件的所有文本。文本框内的内容只是循环来自第一个文件 PDF 的文本。实际上,我有很多包含不同文本的 PDF 文件。
  • 您是否尝试过记录当前文本而不是在某些表单元素中显示它?这样,您可以尝试确定它确实是 iTextSharp 行为问题还是其他组件的行为问题。

标签: vb.net pdf itextsharp


【解决方案1】:

您的代码现在设置的方式看起来像 RichTextBox1.text 将包含已处理的最后一个 pdf 的最后一页的文本。以下更改将从您的文件夹中处理的所有 pdf 的所有页面中引入文本。

要实现这一点,您需要更改以下内容:

for CurrentPage as integer = 1 to PR.NumberOfPages
     RichTextBox1.text = ""
     dim ltestrategy as LocationTextExtractionStrategy = New LocationTextExtractionStrategy
     dim currentext as string = PdfTextExtractor.GetTextFromPage(PR, CurrentPage,  ltestrategy)

     RichTextBox1.Text = RichTextBox1.Text + currentext
next

到:

for CurrentPage as integer = 1 to PR.NumberOfPages
     currenttext = ""
     dim ltestrategy as LocationTextExtractionStrategy = New LocationTextExtractionStrategy
     dim currentext as string = PdfTextExtractor.GetTextFromPage(PR, CurrentPage,  ltestrategy)

     RichTextBox1.Text = RichTextBox1.Text + currentext
next

您正在重新初始化 currentext 而不是 RichTextBox1.text。这将为您提供所有 pdf 及其所有页面的文本到文本框。

【讨论】:

  • 我已经尝试了您建议的方式,并且在阅读下一个 PDF 时文本仍然没有更改... PdfReader 仍在阅读上一个 pdf 中的文本.. 我一直在使用 PdfReader。 close() 在循环外关闭文件并读取新文件,但它不起作用..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多