关于pdfname中指定的每个constans的描述,因为我需要能够同时检索图像和文本

时间:2013-07-15 02:16:42

标签: c# itextsharp

我在同一个pdf文件中检索图像和文本时遇到了麻烦,我能够在pdf文件中获取图像和文本但不能同时获取(这将导致是否渲染图像和文本的问题首先是图像或文本首先在我的面板控件中?),也许你们可以帮我定义pdfname中的每个常量是什么意思?我尝试使用pdfname.all但它返回null,但是当使用pdfname.resources时,它返回procset,font和xobject。我使用xobject作为图像,但什么是procset和font(这可能是文本的样式吗?它有pdfname.text用于检索文本)?

提前感谢。

1 个答案:

答案 0 :(得分:0)

首先,

  

我在同一个

中检索pdf文件中的图像和文字时遇到了麻烦

对于此任务,您应该使用iText(Sharp)解析器API。在iTextSharp中,您基本上实现了IRenderListener(一种接口,其中包含了解内容流中的(位图)图像和文本片段的方法)并使用它处理页面内容:

PdfReader reader = new PdfReader(...);
PdfReaderContentParser parser = new PdfReaderContentParser(reader);
int pageNumber = [... the number of the page you are interested in; may be a loop variable ...];

IRenderListener listener = new [... your IRenderListener implementation ...]
parser.ProcessContent(pageNumber, listener);

你问

  

是否首先渲染图像或首先渲染文本,例如在我的面板控件中

IRenderListener方法还会检索有关位图或文本片段位置的信息。

有关如何将文本片段组合到您的听众中的想法,您可能希望受到iTextSharp中存在的实现SimpleTextExtractionStrategyLocationTextExtractionStrategy的启发。

如果您坚持手动操作,不过......

  

也许你们可以帮我定一下pdfname中每个常量的含义吗?

您可以在PDF规范ISO 32000-1:2008中找到名称映射到的内容的定义Adobe提供的副本here.

  

使用pdfname.resources时,它返回procset,font和xobject。我使用xobject作为图像,但什么是procset和字体(这可能是文本的样式吗?

页面资源字典的内容在规范的第7.8.3节中解释。

  

是否有用于检索文本的pdfname.text?

您将在第9节中找到如何在页面内容流和xobjects中显示测试。