从 xps 文档中提取文本到文本框 [英] Extract texts from xps document to textbox
问题描述
我在研究时不断遇到此代码,但是将其复制到我的表单中会在 documentViewerElement
部分出现错误,说 当前上下文中不存在名称documentViewerElement"
I keep running in to this code when researching, however copying this to my form gives me an error in the documentViewerElement
part saying The name 'documentViewerElement' does not exist in the current context
XpsDocument _xpsDocument=new XpsDocument("/path",System.IO.FileAccess.Read);
IXpsFixedDocumentSequenceReader fixedDocSeqReader
=_xpsDocument.FixedDocumentSequenceReader;
IXpsFixedDocumentReader _document = fixedDocSeqReader.FixedDocuments[0];
IXpsFixedPageReader _page
= _document.FixedPages[documentViewerElement.MasterPageNumber];
StringBuilder _currentText = new StringBuilder();
System.Xml.XmlReader _pageContentReader = _page.XmlReader;
if (_pageContentReader != null)
{
while (_pageContentReader.Read())
{
if (_pageContentReader.Name == "Glyphs")
{
if (_pageContentReader.HasAttributes)
{
if (_pageContentReader.GetAttribute("UnicodeString") != null )
{
_currentText.
Append(_pageContentReader.
GetAttribute("UnicodeString"));
}
}
}
}
}
string _fullPageText = _currentText.ToString();
我希望从 xps 文档中获取所有文本并将其放在富文本框中.
I'm hoping to get all the texts from an xps document and put it on a rich text box.
推荐答案
documentViewerElement 未定义因此您的错误.
documentViewerElement is not defined hence your error.
在以下行中:
IXpsFixedPageReader _page
= _document.FixedPages[documentViewerElement.MasterPageNumber];
documentViewerElement.MasterPageNumber只是页码,所以改成你想阅读的xps页面,例如
documentViewerElement.MasterPageNumber is just the page number, so change it to the xps page you want to read, e.g.
IXpsFixedPageReader _page
= _document.FixedPages[0];
要从整个 xps 文件中读取文本,您可以尝试以下操作(它与您的代码几乎相同,只是循环(取自 此处).
To read the text from the entire xps file you could try the following (it's pretty much the same as your code it's just looping (Taken from here).
private string ReadXpsFile(string fileName)
{
XpsDocument _xpsDocument = new XpsDocument(fileName, System.IO.FileAccess.Read);
IXpsFixedDocumentSequenceReader fixedDocSeqReader = _xpsDocument.FixedDocumentSequenceReader;
IXpsFixedDocumentReader _document = fixedDocSeqReader.FixedDocuments[0];
FixedDocumentSequence sequence = _xpsDocument.GetFixedDocumentSequence();
string _fullPageText="";
for (int pageCount = 0; pageCount < sequence.DocumentPaginator.PageCount; ++pageCount)
{
IXpsFixedPageReader _page = _document.FixedPages[pageCount];
StringBuilder _currentText = new StringBuilder();
System.Xml.XmlReader _pageContentReader = _page.XmlReader;
if (_pageContentReader != null)
{
while (_pageContentReader.Read())
{
if (_pageContentReader.Name == "Glyphs")
{
if (_pageContentReader.HasAttributes)
{
if (_pageContentReader.GetAttribute("UnicodeString") != null)
{
_currentText.
Append(_pageContentReader.
GetAttribute("UnicodeString"));
}
}
}
}
}
_fullPageText += _currentText.ToString();
}
return _fullPageText;
}
这篇关于从 xps 文档中提取文本到文本框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!