org.jpedal.io.types.NumberValue Maven / Gradle / Ivy
/*
* ===========================================
* Java Pdf Extraction Decoding Access Library
* ===========================================
*
* Project Info: http://www.idrsolutions.com
* Help section for developers at http://www.idrsolutions.com/support/
*
* (C) Copyright 1997-2016 IDRsolutions and Contributors.
*
* This file is part of JPedal/JPDF2HTML5
*
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* ---------------
* NumberValue.java
* ---------------
*/
package org.jpedal.io.types;
import static org.jpedal.io.ObjectDecoder.debugFastCode;
import static org.jpedal.io.ObjectDecoder.padding;
import org.jpedal.io.PdfFileReader;
import org.jpedal.objects.raw.PdfObject;
import org.jpedal.utils.LogWriter;
import org.jpedal.utils.NumberUtils;
/**
*
*/
public class NumberValue {
public static int setNumberValue(final PdfObject pdfObject, int i, final byte[] raw, final int PDFkeyInt, final PdfFileReader objectReader) {
int keyStart=i;
final int rawLength=raw.length;
//move cursor to end of text
while(raw[i]!=10 && raw[i]!=13 && raw[i]!=32 && raw[i]!=47 && raw[i]!=60 && raw[i]!=62 && raw[i]!='(' && raw[i]!='.'){
i++;
}
//actual value or first part of ref
int number= NumberUtils.parseInt(keyStart, i, raw);
int jj=i;
jj = StreamReaderUtils.skipSpaces(raw, jj);
boolean isRef=false;
//check its not a ref (assumes it XX 0 R)
if(raw[jj]>= 48 && raw[jj]<=57){ //if next char is number 0-9 it may be a ref
int aa=jj;
//move cursor to end of number
aa = StreamReaderUtils.skipToEndOfRef(raw, aa);
//move cursor to start of text
aa = StreamReaderUtils.skipSpacesOrOtherCharacter(raw, aa, 47);
isRef=aa1 && data[0]=='<' && data[1]=='<'){
}else if(len<=3){ //fix for short indirect value /K 30 0 R where 30 0R is -1 ie (11dec/Real Estate Tax Bill 2011.pdf)
}else{
j=3;
if(len>3){ //allow for small values (ie Rotate object pointing to value 0)
while(data[j-1]!=106 && data[j-2]!=98 && data[j-3]!=111){
j++;
if(j==len){
j=0;
break;
}
}
}
}
//skip any spaces after
if(len>1){//allow for small values (ie Rotate object pointing to value 0)
j = StreamReaderUtils.skipSpaces(data, j);
}
int count=j;
//skip any spaces at end
while(count