/** * */ package at.gv.egiz.pdfas.impl.input; import java.io.ByteArrayInputStream; import java.io.InputStream; import at.gv.egiz.pdfas.performance.PerformanceCounters; import at.gv.egiz.pdfas.framework.input.PdfDataSource; /** * Implements a PdfDataSource that holds the whole PDF document in a byte array. * *
* Note that holding the data in a byte array is very memory consuming for large * documents. *
* * @author wprinz */ public class ByteArrayPdfDataSourceImpl implements PdfDataSource { protected byte[] pdf = null; public ByteArrayPdfDataSourceImpl(byte[] pdf) { PerformanceCounters.byteArrays.increment(); this.pdf = pdf; } public ByteArrayPdfDataSourceImpl(byte[] pdf, int length) { PerformanceCounters.byteArrays.increment(); if (pdf.length == length) { this.pdf = pdf; } else { this.pdf = new byte [length]; System.arraycopy(pdf, 0, this.pdf, 0, length); } } public InputStream createInputStream() { ByteArrayInputStream bais = new ByteArrayInputStream(this.pdf); return bais; } public int getLength() { return this.pdf.length; } public byte[] getAsByteArray() { return this.pdf; } }