2

PDFにビットマップを描画してから、そのPDFをNote 3/Nexus 7(2013)やその他のMDPIデバイスなどのデバイスに保存しようとしています。

使用ライブラリ:VuDroid

ビットマップの描画に使用されるコード:

mBitmap = mGesture.toBitmap(
                            (int) (((mGesture.getBoundingBox().width() / 4.0f) + component
                                    .getSize() * 2.5f) * component.getZoom()),
                            (int) (((mGesture.getBoundingBox().height() / 4.0f) + component
                                    .getSize() * 2.5f) * component.getZoom()),
                            0, component.getColor());
            Log.e("Document Viewer", "Setting bitmap 1 else : "+mBitmap.getWidth() + " , " +mBitmap.getHeight());
        }
        if(mBitmap != null){
            mBitmap = Bitmap.createBitmap(mBitmap, 0, 0, mBitmap.getWidth(), mBitmap.getHeight(), matrix, true);
        Log.e("Document Viewer", "Setting bitmap 2");

        RectF regionRect = new RectF(component.getLeft() - (mBitmap.getWidth() / 2.0f), 
                    component.getTop() - (mBitmap.getHeight() / 2.0f), 
                    component.getLeft() + (mBitmap.getWidth() / 2.0f), 
                    component.getTop() + (mBitmap.getHeight() / 2.0f));



component.setRegion(regionRect);
component.setAspectSize(component.getSize());
canvas.drawBitmap(mBitmap, regionRect.left, regionRect.top, new Paint());
component.setFinalBitmap(mBitmap);

ビットマップを描画した後に PDF を保存するコード:

PdfImportedPage page;PdfCopy.PageStamp stamp;
                PdfContentByte content;Rectangle rectangle;
                ByteArrayOutputStream bos;Image img;

bos = new ByteArrayOutputStream(DEFAULT_BUFFER_SIZE);
                                    component.getValue().getFinalBitmap().compress(CompressFormat.PNG, 100 , bos);


img = Image.getInstance(bos.toByteArray());

img.scaleToFit(((img.getWidth() / component.getValue()
                                                    .getZoom()) * component
                                                    .getValue().getAspectRatio())
                                                    / rotatedRatio,
                                            ((img.getHeight() / component
                                                    .getValue().getZoom()) * component
                                                    .getValue().getAspectRatio())
                                                    / rotatedRatio);



    img.setAbsolutePosition(absX, absY);
    content.addImage(img);
    bos.flush();bos.close();

注 3 および MDPI エミュレーターのスクリーンショットを添付。

注 3/Nexus 7(2013) : 描画中 :

ここに画像の説明を入力

注 3/Nexus 7(2013) : 保存後:

ここに画像の説明を入力

MDPI : 描画中 :

ここに画像の説明を入力

保存後:

ここに画像の説明を入力

注: 他のデバイスで保存する前後のビットマップは似ています。

4

0 に答える 0