java读取pdf(可分页读取)(二)

2014-11-24 02:43:03 · 作者: · 浏览: 2
System.out.println("getting filter string from array of names");
Iterator nameIter;
Vector nameVector;
if ((nameVector = ((PjArray) filter).getVector()) == null) {
//System.out.println("got null vector for list of names");
return "";
}
nameIter = nameVector.iterator();
while (nameIter.hasNext()) {
filterString += ((PjName) nameIter.next()).getString();
if (nameIter.hasNext())
filterString += " ";
}
}
//System.out.println("got filter string");
return filterString;
}
/**
* Performs a post-order traversal of the pages tree
* from the root node and gets all of the contents streams
* @returns a list of all the contents of all the pages
*/
public LinkedList getAllContentsStreams() throws
InvalidPdfObjectException {
return getContentsStreams(getAllPages());
}
/**
* Get contents streams from the list of PjPage objects
* @returns a list of all the contents of the pages
*/
public LinkedList getContentsStreams(LinkedList pages) throws
InvalidPdfObjectException {
LinkedList streams = new LinkedList();
Iterator pageIter = pages.iterator();
PjObject contents;
while(pageIter.hasNext()) {
contents = pdf.resolve(((PjPage)pageIter.next()).getContents());
// should only be a stream or an array of streams (or refs to
streams)
if (contents instanceof PjStream)
streams.add(contents);
else{
Iterator streamsIter = ((PjArray)contents).getVector().iterator();
while(streamsIter.hasNext())
streams.add(pdf.resolve((PjObject)streamsIter.next()));
}
}
return streams ;
}
/**
* Performs a post-order traversal of the pages tree
* from the root node.
* @returns a list of all the PjPage objects
*/
public LinkedList getAllPages() throws InvalidPdfObjectException {
LinkedList pages = new LinkedList();
getPages(rootPage, pages);
return pages;
}
/**
* Performs a post-order traversal of the pages tree
* from the node passed to it.
* @returns a list of all the PjPage objects under node
*/
public void getPages(PjObject node, LinkedList pages) throws
InvalidPdfObjectException {
PjPagesNode pageNode = null;
// let's hope pdf's don't have pointers to pointers
if (node instanceof PjReference)
pageNode = (PjPagesNode) pdf.resolve(node);
else
pageNode = (PjPagesNode) node;
if (pageNode instanceof PjPage) {
pages.add(pageNode);
return;
}
// kids better be an array and not a reference to one
Iterator kidIterator = ((PjArray) ((PjPages)
pageNode).getKids()).getVector().iterator();
while(kidIterator.hasNext()) {
getPages((PjObject) kidIterator.next(), pages);
}
}
public Pdf getPdf() {
return pdf;
}
}

作者“程明卫的博客”