protected PdfName readPdfName(boolean readAsDirect) { if (readAsDirect) { PdfName cachedName = PdfName.staticNames.get(tokens.getStringValue()); if (cachedName != null) return cachedName; } // an indirect name (how odd...), or a non-standard one return new PdfName(tokens.getByteContent()); }
return; ptr = file.getPosition(); n1 = getByteContent(); ++level; break; return; n2 = getByteContent(); ++level; break;
return; ptr = file.getPosition(); n1 = getByteContent(); ++level; break; return; n2 = getByteContent(); ++level; break;
/** * Reads a pdf object. * @return the pdf object * @throws IOException on error */ public PdfObject readObject() throws IOException { if (!nextValidToken()) return null; final PdfTokenizer.TokenType type = tokeniser.getTokenType(); switch (type) { case StartDic: { PdfDictionary dic = readDictionary(); return dic; } case StartArray: return readArray(); case String: PdfString str = new PdfString(tokeniser.getDecodedStringContent()).setHexWriting(tokeniser.isHexString()); return str; case Name: return new PdfName(tokeniser.getByteContent()); case Number: //use PdfNumber(byte[]) here, as in this case number parsing won't happen until it's needed. return new PdfNumber(tokeniser.getByteContent()); default: return new PdfLiteral(tokeniser.getByteContent()); } }
/** * 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; }
CMapObject obj; if (tokeniser.isHexString()) { obj = new CMapObject(CMapObject.HEX_STRING, PdfTokenizer.decodeStringContent(tokeniser.getByteContent(), true)); } else { obj = new CMapObject(CMapObject.STRING, PdfTokenizer.decodeStringContent(tokeniser.getByteContent(), false)); return new CMapObject(CMapObject.NAME, decodeName(tokeniser.getByteContent())); case Number: CMapObject numObject = new CMapObject(CMapObject.NUMBER, null);
CMapObject obj; if (tokeniser.isHexString()) { obj = new CMapObject(CMapObject.HEX_STRING, PdfTokenizer.decodeStringContent(tokeniser.getByteContent(), true)); } else { obj = new CMapObject(CMapObject.STRING, PdfTokenizer.decodeStringContent(tokeniser.getByteContent(), false)); return new CMapObject(CMapObject.NAME, decodeName(tokeniser.getByteContent())); case Number: CMapObject numObject = new CMapObject(CMapObject.NUMBER, null);
return readArray(objStm); case Number: return new PdfNumber(tokens.getByteContent()); case String: { PdfString pdfString = new PdfString(tokens.getByteContent(), tokens.isHexString()); if (isEncrypted() && !decrypt.isEmbeddedFilesOnly() && !objStm) { pdfString.setDecryption(currentIndirectReference.getObjNumber(), currentIndirectReference.getGenNumber(), decrypt);
PdfObject obj; if (tokens.getTokenType() == PdfTokenizer.TokenType.Number) { obj = new PdfNumber(tokens.getByteContent()); } else { tokens.seek(address[k]);