用于DCTDecode的PDF jpeg图像压缩

时间:2019-02-11 17:51:01

标签: java android pdf-generation

我正在使用android pdf编写器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中)使用过滤器[/ 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 Decode时,我不太确定toByteArray()是否返回适合DCTDecode的数据。

  

如何从压缩的jpeg文件中提取数据并添加到pdf中,   后来由DCTDecode解码并显示为pdf?

我没有pdf生成经验。 感谢帮助

0 个答案:

没有答案