/**
*
*/
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.
*
* <p>
* Note that holding the data in a byte array is very memory consuming for large
* documents.
* </p>
*
* @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;
}
}