1 31 package org.pdfbox.encoding; 32 33 import java.io.IOException ; 34 35 import org.pdfbox.cos.COSArray; 36 import org.pdfbox.cos.COSBase; 37 import org.pdfbox.cos.COSDictionary; 38 import org.pdfbox.cos.COSName; 39 import org.pdfbox.cos.COSNumber; 40 41 47 public class DictionaryEncoding extends Encoding 48 { 49 private COSDictionary encoding = null; 50 51 58 public DictionaryEncoding( COSDictionary fontEncoding ) throws IOException 59 { 60 encoding = fontEncoding; 61 62 72 Encoding baseEncoding = new StandardEncoding(); 74 COSName baseEncodingName = (COSName)encoding.getDictionaryObject( COSName.BASE_ENCODING ); 75 76 if( baseEncodingName != null ) 77 { 78 EncodingManager manager = new EncodingManager(); 79 baseEncoding = manager.getEncoding( baseEncodingName ); 80 } 81 nameToCode.putAll( baseEncoding.nameToCode ); 82 codeToName.putAll( baseEncoding.codeToName ); 83 84 85 COSArray differences = (COSArray)encoding.getDictionaryObject( COSName.DIFFERENCES ); 87 int currentIndex = -1; 88 for( int i=0; differences != null && i<differences.size(); i++ ) 89 { 90 COSBase next = differences.getObject( i ); 91 if( next instanceof COSNumber ) 92 { 93 currentIndex = ((COSNumber)next).intValue(); 94 } 95 else if( next instanceof COSName ) 96 { 97 COSName name = (COSName)next; 98 addCharacterEncoding( currentIndex++, name ); 99 } 100 } 101 } 102 103 108 public COSBase getCOSObject() 109 { 110 return encoding; 111 } 112 } 113 | Popular Tags |