Я использую Android Pdf Writer apw-library
для создания PDF-документа.
Библиотека работает хорошо, но я хочу небольшой размер PDF, поэтому я использую сжатый JPEG вместо растровых изображений.
Но apw-library
принимает только растровые изображения для ввода изображения.https://github.com/Turbo87/apwlibrary/blob/master/apwlibrary/src/main/java/crl/android/pdfwriter/XObjectImage.java
Глядя на исходный код, я пытался его изменить:
Оригинальный метод: использует фильтр [/ ASCII85Decode / FlateDecode]
private byte[] getBitmapData(Bitmap bitmap) {
byte[] data = null;
if (bitmap != null) {
data = new byte[mDataSize];
int intColor;
int offset = 0;
for (int y = 0; y < mHeight; y++) {
for (int x = 0; x < mWidth; x++) {
intColor = bitmap.getPixel(x, y);
data[offset++] = (byte) ((intColor >> 16) & 0xFF);
data[offset++] = (byte) ((intColor >> 8) & 0xFF);
data[offset++] = (byte) ((intColor >> 0) & 0xFF);
}
}
}
return data;
}
Моя новая реализация (в Android) использует Filter [/ DCTDecode / FlateDecode]
private byte[] getBitmapData(Bitmap bitmap) {
if (bitmap != null) {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 80, stream);
bitmap.recycle();
return stream.toByteArray();
}
return null;
}
Вот исходный код этого класса
https://github.com/Turbo87/apwlibrary/blob/master/apwlibrary/src/main/java/crl/android/pdfwriter/XObjectImage.java
Но мой подход терпит неудачу, и вывод pdf отображает пустую белую страницу.Поскольку я использую декодирование DCT, я совершенно не уверен, что toByteArray () возвращает данные, подходящие для DCTDecode.
Как извлечь данные из сжатого файла JPEG и добавить в PDF, чтобы быть позжедекодированный DCTDecode и показанный в pdf?
Я неопытный в pdf-генерации.Помощь приветствуется