/** * Copyright 2006 by Know-Center, Graz, Austria * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a * joint initiative of the Federal Chancellery Austria and Graz University of * Technology. * * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by * the European Commission - subsequent versions of the EUPL (the "Licence"); * You may not use this work except in compliance with the Licence. * You may obtain a copy of the Licence at: * http://www.osor.eu/eupl/ * * Unless required by applicable law or agreed to in writing, software * distributed under the Licence is distributed on an "AS IS" basis, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the Licence for the specific language governing permissions and * limitations under the Licence. * * This product combines work with different licenses. See the "NOTICE" text * file for details on the various modules and licenses. * The "NOTICE" text file is part of the distribution. Any derivative works * that you distribute must include a readable copy of the "NOTICE" text file. */ package at.gv.egiz.pdfas.impl.input.helper; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import at.gv.egiz.pdfas.performance.PerformanceCounters; import at.gv.egiz.pdfas.framework.input.DataSource; import at.gv.egiz.pdfas.framework.input.PdfDataSource; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * @author wprinz * */ public class DataSourceHelper { /** * The log. */ private static final Log log = LogFactory.getLog(DataSourceHelper.class); /** * Converts a PdfDataSource to a byte array. * *

* Note that this function is very memory intensive. Use the Streams whereever * possible. *

* * @deprecated * * @param pdfDataSource * @return * @throws IOException */ public static byte[] convertDataSourceToByteArray(DataSource pdfDataSource) { return pdfDataSource.getAsByteArray(); // try // { // PerformanceCounters.byteArrays.increment(); // // byte[] data = new byte[pdfDataSource.getLength()]; // // int bytes_written = 0; // // InputStream is = pdfDataSource.createInputStream(); // int n = 0; // while ((n = is.read(data, bytes_written, data.length - bytes_written)) > 0) // { // bytes_written += n; // } // is.close(); // // assert bytes_written == data.length; // // return data; // } // catch (IOException e) // { // log.error(e); // throw new RuntimeException(e); // } } public static byte [] convertInputStreamToByteArray(InputStream inputStream) { try { return convertInputStreamToByteArrayIOEx(inputStream); } catch (IOException e) { log.error(e); throw new RuntimeException(e); } } public static byte [] convertInputStreamToByteArrayIOEx(InputStream inputStream) throws IOException { PerformanceCounters.byteArrays.increment(); ByteArrayOutputStream baos = new ByteArrayOutputStream(4096); byte[] temp = new byte[4096]; int n = 0; while ((n = inputStream.read(temp)) > 0) { baos.write(temp, 0, n); } inputStream.close(); baos.close(); byte [] data = baos.toByteArray(); return data; } public static void debugDataSourceToFile(DataSource dataSource, File file) { try { InputStream is = dataSource.createInputStream(); FileOutputStream fos = new FileOutputStream(file); byte[] data = new byte[2048]; int n = -1; while ((n = is.read(data)) > 0) { fos.write(data, 0, n); } is.close(); fos.close(); } catch (IOException e) { log.error(e); } } }