calc = true; } else { tokens.seek(start + streamLength); String line = tokens.readString(20); if (!line.startsWith(endstream2) && !line.startsWith(endstream3) && tokens.seek(start); long pos; while (true) { break; } else if (line.startsWith(endobj)) { tokens.seek(pos - 16); String s = tokens.readString(16); int index = s.indexOf(endstream1); tokens.seek(pos - 2); if (tokens.read() == 13) { streamLength--; tokens.seek(pos - 1); if (tokens.read() == 10) { streamLength--;
/** * Check whether line starts with object declaration. * @param lineTokenizer tokenizer, built by single line. * @return object number and generation if check is successful, otherwise - null. */ public static int[] checkObjectStart(PdfTokenizer lineTokenizer) { try { lineTokenizer.seek(0); if (!lineTokenizer.nextToken() || lineTokenizer.getTokenType() != TokenType.Number) return null; int num = lineTokenizer.getIntValue(); if (!lineTokenizer.nextToken() || lineTokenizer.getTokenType() != TokenType.Number) return null; int gen = lineTokenizer.getIntValue(); if (!lineTokenizer.nextToken()) return null; if (!Arrays.equals(Obj, lineTokenizer.getByteContent())) return null; return new int[]{num, gen}; } catch (Exception ioe) { // empty on purpose } return null; }
/** * Check whether line starts with object declaration. * @param lineTokenizer tokenizer, built by single line. * @return object number and generation if check is successful, otherwise - null. */ public static int[] checkObjectStart(PdfTokenizer lineTokenizer) { try { lineTokenizer.seek(0); if (!lineTokenizer.nextToken() || lineTokenizer.getTokenType() != TokenType.Number) return null; int num = lineTokenizer.getIntValue(); if (!lineTokenizer.nextToken() || lineTokenizer.getTokenType() != TokenType.Number) return null; int gen = lineTokenizer.getIntValue(); if (!lineTokenizer.nextToken()) return null; if (!Arrays.equals(Obj, lineTokenizer.getByteContent())) return null; return new int[]{num, gen}; } catch (Exception ioe) { // empty on purpose } return null; }
protected void readXref() throws IOException { tokens.seek(tokens.getStartxref()); tokens.nextToken(); if (!tokens.tokenValueEqualsTo(PdfTokenizer.Startxref)) tokens.seek(startxref); trailer = readXrefSection(); throw new PdfException(PdfException.TrailerPrevEntryPointsToItsOwnCrossReferenceSection); startxref = prev.longValue(); tokens.seek(startxref); trailer2 = readXrefSection();
PdfXrefTable xref = pdfDocument.getXref(); xref.clear(); tokens.seek(0); trailer = null; ByteBuffer buffer = new ByteBuffer(24); if (!PdfTokenizer.checkTrailer(buffer)) continue; tokens.seek(pos); tokens.nextToken(); pos = tokens.getPosition(); trailer = dic; else tokens.seek(pos); } catch (Exception e) { tokens.seek(pos);
tokens.seek(signatureOffset); tokens.nextValidToken(); readObject(false, false);
tokens.seek(signatureOffset); tokens.nextValidToken(); readObject(false, false);
protected void fixXref() throws IOException { fixedXref = true; PdfXrefTable xref = pdfDocument.getXref(); tokens.seek(0); ByteBuffer buffer = new ByteBuffer(24); PdfTokenizer lineTokeniser = new PdfTokenizer(new RandomAccessFileOrArray(new ReusableRandomAccessSource(buffer))); for (; ; ) { long pos = tokens.getPosition(); buffer.reset(); if (!tokens.readLineSegment(buffer, true)) // added boolean because of mailing list issue (17 Feb. 2014) break; if (buffer.get(0) >= '0' && buffer.get(0) <= '9') { int[] obj = PdfTokenizer.checkObjectStart(lineTokeniser); if (obj == null) continue; int num = obj[0]; int gen = obj[1]; PdfIndirectReference reference = xref.get(num); if (reference != null && reference.getGenNumber() == gen) { reference.fixOffset(pos); } } } }
PdfObject object; try { tokens.seek(reference.getOffset()); tokens.nextValidToken(); if (tokens.getTokenType() != PdfTokenizer.TokenType.Obj
whiteSpacesCount++; } while (ch != -1 && PdfTokenizer.isWhitespace(ch)); tokens.seek(startPosition); obj = readObject(true, objStm); long endPosition = tokens.getPosition();
whiteSpacesCount++; } while (ch != -1 && PdfTokenizer.isWhitespace(ch)); tokens.seek(startPosition); obj = readObject(true, objStm); long endPosition = tokens.getPosition();
return new PdfStream(tokens.getPosition(), dict); } else { tokens.seek(pos); return dict;
protected boolean readXrefStream(long ptr) throws IOException { tokens.seek(ptr); if (!tokens.nextToken()) { return false;