我正在尝试在 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:绘图时:
保存后:
注意:在其他设备中保存前后的位图类似。