1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 package org.apache.pdfbox.filter; 18 19 import java.io.IOException; 20 import java.io.InputStream; 21 import java.io.OutputStream; 22 23 import org.apache.pdfbox.io.ASCII85InputStream; 24 import org.apache.pdfbox.io.ASCII85OutputStream; 25 26 import org.apache.pdfbox.cos.COSDictionary; 27 28 /** 29 * This is the used for the ASCIIHexDecode filter. 30 * 31 * @author <a href="mailto:ben@benlitchfield.com">Ben Litchfield</a> 32 * @version $Revision: 1.8 $ 33 */ 34 public class ASCII85Filter implements Filter 35 { 36 /** 37 * {@inheritDoc} 38 */ 39 public void decode( InputStream compressedData, OutputStream result, COSDictionary options, int filterIndex ) 40 throws IOException 41 { 42 ASCII85InputStream is = null; 43 try 44 { 45 is = new ASCII85InputStream(compressedData); 46 byte[] buffer = new byte[1024]; 47 int amountRead = 0; 48 while( (amountRead = is.read( buffer, 0, 1024) ) != -1 ) 49 { 50 result.write(buffer, 0, amountRead); 51 } 52 result.flush(); 53 } 54 finally 55 { 56 if( is != null ) 57 { 58 is.close(); 59 } 60 } 61 } 62 63 /** 64 * {@inheritDoc} 65 */ 66 public void encode( InputStream rawData, OutputStream result, COSDictionary options, int filterIndex ) 67 throws IOException 68 { 69 ASCII85OutputStream os = new ASCII85OutputStream(result); 70 byte[] buffer = new byte[1024]; 71 int amountRead = 0; 72 while( (amountRead = rawData.read( buffer, 0, 1024 )) != -1 ) 73 { 74 os.write( buffer, 0, amountRead ); 75 } 76 os.close(); 77 result.flush(); 78 } 79 }