Search in sources :

Example 6 with RandomAccessInputStream

use of com.tom_roush.pdfbox.io.RandomAccessInputStream in project PdfBox-Android by TomRoush.

the class COSOutputStream method close.

@Override
public void close() throws IOException {
    try {
        if (buffer != null) {
            try {
                // apply filters in reverse order
                for (int i = filters.size() - 1; i >= 0; i--) {
                    InputStream unfilteredIn = new RandomAccessInputStream(buffer);
                    try {
                        if (i == 0) {
                            /*
                                 * The last filter to run can encode directly to the enclosed output
                                 * stream.
                                 */
                            filters.get(i).encode(unfilteredIn, out, parameters, i);
                        } else {
                            RandomAccess filteredBuffer = scratchFile.createBuffer();
                            try {
                                OutputStream filteredOut = new RandomAccessOutputStream(filteredBuffer);
                                try {
                                    filters.get(i).encode(unfilteredIn, filteredOut, parameters, i);
                                } finally {
                                    filteredOut.close();
                                }
                                RandomAccess tmpSwap = filteredBuffer;
                                filteredBuffer = buffer;
                                buffer = tmpSwap;
                            } finally {
                                filteredBuffer.close();
                            }
                        }
                    } finally {
                        unfilteredIn.close();
                    }
                }
            } finally {
                buffer.close();
                buffer = null;
            }
        }
    } finally {
        super.close();
    }
}
Also used : RandomAccessInputStream(com.tom_roush.pdfbox.io.RandomAccessInputStream) InputStream(java.io.InputStream) OutputStream(java.io.OutputStream) RandomAccessOutputStream(com.tom_roush.pdfbox.io.RandomAccessOutputStream) FilterOutputStream(java.io.FilterOutputStream) RandomAccess(com.tom_roush.pdfbox.io.RandomAccess) RandomAccessOutputStream(com.tom_roush.pdfbox.io.RandomAccessOutputStream) RandomAccessInputStream(com.tom_roush.pdfbox.io.RandomAccessInputStream)

Aggregations

RandomAccessInputStream (com.tom_roush.pdfbox.io.RandomAccessInputStream)6 InputStream (java.io.InputStream)3 RandomAccess (com.tom_roush.pdfbox.io.RandomAccess)2 RandomAccessOutputStream (com.tom_roush.pdfbox.io.RandomAccessOutputStream)2 IOException (java.io.IOException)2 DecodeResult (com.tom_roush.pdfbox.filter.DecodeResult)1 Filter (com.tom_roush.pdfbox.filter.Filter)1 COSFilterInputStream (com.tom_roush.pdfbox.pdmodel.interactive.digitalsignature.COSFilterInputStream)1 ByteArrayInputStream (java.io.ByteArrayInputStream)1 ByteArrayOutputStream (java.io.ByteArrayOutputStream)1 FilterInputStream (java.io.FilterInputStream)1 FilterOutputStream (java.io.FilterOutputStream)1 OutputStream (java.io.OutputStream)1 SequenceInputStream (java.io.SequenceInputStream)1 ArrayList (java.util.ArrayList)1 HashSet (java.util.HashSet)1