Android将位图签名缩放为pdf

时间:2016-04-22 11:05:50

标签: java android canvas bitmap

我找不到任何问题。

我的问题是这个。我必须创建一个带签名的pdf。我没有创建pdf或创建签名的问题,但是当我将它们放在一起时,我将签名的大小调整为更小但签名的质量已经降低。

在这里,我向您展示签名和缩放签名。

create signature

scaled signature

这就是我如何创建签名的位图。

   mSignaturePad = (SignaturePad) dialog.findViewById(R.id.signature_pad);

   Bitmap signaturePad = mSignaturePad.getSignatureBitmap();

   createPDF(signaturePad);

这就是我如何创建pdf页面的画布。

   PdfDocument.Page page = document.startPage(pageInfo);

   Canvas canvas = page.getCanvas();

最后我在获得缩放位图后绘制位图。

   int width = source.getWidth();
   int height = source.getHeight();

   float scaleWidth = ((float) 100) / width;
   float scaleHeight = ((float) 140) / height;
   Matrix matrix = new Matrix();
   matrix.postScale(scaleWidth, scaleHeight);
   matrix.postRotate(-90);

   Bitmap scaledBitmap = Bitmap.createBitmap(source, 0, 0, width, height, matrix, true);

   Paint paint = new Paint();
   paint.setAntiAlias(true);
   paint.setFilterBitmap(true);
   paint.setDither(true);

   canvas.drawBitmap(scaledBitmap, 387, 717, paint3);

这不是我测试缩放位图的唯一方法。我测试了许多方法但没有任何效果。我该如何缩放这个位图?

我希望你能帮助我。谢谢。

psd:抱歉我的英文。

1 个答案:

答案 0 :(得分:0)

下面介绍如何从资源文件夹添加图像。如果你已经有了位图,那么从位图进程开始就没有问题。您也可以关注Example

File myFile1 = new File("/sdcard/ourdata/" + pdfname + ".pdf");
myFile1.createNewFile();
Document pdfDoc = new Document();
PdfWriter docWriter = PdfWriter.getInstance(document,
        new FileOutputStream(myFile1));
document.open();
PdfContentByte cb = docWriter.getDirectContent();
InputStream inputStream = getAssets().open("signature.png");
Bitmap bmp = BitmapFactory.decodeStream(inputStream);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
Image signature = Image.getInstance(stream.toByteArray());
signature.setAbsolutePosition(400f, 150f);
signature.scalePercent(25f);
document.add(signature);