@@ -42,9 +42,6 @@ This file is part of the iText (R) project.
4242 */
4343package com .itextpdf .rups .view .itext ;
4444
45- import com .itextpdf .io .source .PdfTokenizer ;
46- import com .itextpdf .io .source .RandomAccessFileOrArray ;
47- import com .itextpdf .io .source .RandomAccessSourceFactory ;
4845import com .itextpdf .kernel .pdf .*;
4946import com .itextpdf .rups .controller .PdfReaderController ;
5047import com .itextpdf .rups .event .RupsEvent ;
@@ -58,8 +55,6 @@ This file is part of the iText (R) project.
5855import javax .swing .JTable ;
5956import javax .swing .event .ListSelectionEvent ;
6057import javax .swing .table .TableColumn ;
61- import java .io .IOException ;
62- import java .util .Arrays ;
6358import java .util .Observable ;
6459import java .util .Observer ;
6560
@@ -182,28 +177,34 @@ private String getByteOffSetByRow(int rowIndex) {
182177 final PdfObject object = objects .getObjectByIndex (rowIndex );
183178 PdfIndirectReference indirectReference = object .getIndirectReference ();
184179 if ( indirectReference != null ) {
185- long offset = indirectReference .getOffset ();
186-
187- if ( offset == -1 ) {
188- int objStreamNumber = indirectReference .getObjStreamNumber ();
189- PdfObject refersTo = indirectReference .getRefersTo ();
190- int compressedObjectNumber = refersTo .getIndirectReference ().getObjNumber ();
191- PdfObject objectByIndex = objects .loadObjectByReference (objStreamNumber );
192-
193- PdfStream objStm = (PdfStream ) objectByIndex ;
194- int internalCompressedObjectOffset = new ObjectStreamParser ().parseObjectStream (objStm , compressedObjectNumber );
180+ if (isObjectStream (indirectReference )) {
181+ int compressedObjectNumber = indirectReference .getObjNumber ();
182+ PdfStream objStm = getObjectStream (indirectReference );
183+ int internalCompressedObjectOffset
184+ = ObjectStreamParser .parseObjectStream (objStm , compressedObjectNumber );
195185
196186 return String .format (
197187 Language .XREF_BYTE_OFFSET_OBJECT_STREAM .getString (),
198- objStreamNumber , internalCompressedObjectOffset
188+ objStm . getIndirectReference (). getObjNumber () , internalCompressedObjectOffset
199189 );
200190 }
201191
202- return String .valueOf (offset );
192+ return String .valueOf (indirectReference . getOffset () );
203193 }
204194 return Language .XREF_NOT_LOADED_YET .getString ();
205195 }
206196
197+ private PdfStream getObjectStream (PdfIndirectReference indirectReference ) {
198+ int objStreamNumber = indirectReference .getObjStreamNumber ();
199+ PdfObject objectByIndex = objects .loadObjectByReference (objStreamNumber );
200+
201+ return (PdfStream ) objectByIndex ;
202+ }
203+
204+ private boolean isObjectStream (PdfIndirectReference indirectReference ) {
205+ return indirectReference .getOffset () == -1 ;
206+ }
207+
207208
208209 /**
209210 * @see javax.swing.JTable#getColumnName(int)
0 commit comments