日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android 手写签批_Android手写签批功能实现(适配Android6

發(fā)布時間:2025/3/11 Android 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 手写签批_Android手写签批功能实现(适配Android6 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Android手寫簽批功能的實現(xiàn)在于三個點,mupdf,偏移量的計算,droidText0.5.jar

實際步驟:

使用muPdf將PDF加載出來

彈出透明的popwindow,popWindow使用畫板(一般簽批我們都會用有筆鋒的鋼筆或者毛筆)

將簽批好的圖片生成Bitmap

將該Bitmap通過droidText生成一份新的PDF(這一步放到異步中進行,因為耗時)

mupdf

我們使用MUPdf來加載PDF,這里不一定要用MUPDF,也可以按照自己的想法來使用其他的,mupdf在Android6.0以上的機型上會出現(xiàn)一個問題libmupdf.so: has text relocations,當我們將targetSdkVersion改成23以下即可,但是這不是我們真正的解決辦法,真正的解決辦法是重新編譯mupdf,這里我們可以參考如何在Android6.0及以上嵌入MuPdf

根據(jù)這篇文章編譯出自己想要的so文件,然后直接用就可以了,這里一定要注意:

在創(chuàng)建new MuPDFCore(path);對象的時候一定要去動態(tài)獲取權(quán)限,不然就會一直報打不開文件,或者找不到文件,這里不會提示權(quán)限問題(我是沒看見日志提示我是權(quán)限的問題)

因為按照文章來編譯的包名是com.artifex.mupdfdemo,所以我們要使用MuPDFCore的時候需要一樣的包名結(jié)構(gòu),這里我們在編譯so文件的時候可以去更改他的包名(不想改包名就直接按照他所說的將包名目錄全部拷過去)

偏移量的計算

在PDF簽批的時候我們經(jīng)常遇到一個問題,就是簽出的文字不在我們之前簽的位置(一般是出在放大或者縮小的時候再簽批時),這就是要計算一個偏移量了

//寬度偏移量

float widthScale=1.0f * readerView.scrollX / readerView.getDisplayedView().getWidth();

//高度偏移量

float heightScale=1.0f * readerView.scrollY / readerView.getDisplayedView().getHeight();

//縮放比

float widthPercent = bitmap.getWidth() / (float) readerView.getDisplayedView().getWidth();

float heightPercent = bitmap.getHeight() / (float) readerView.getDisplayedView().getHeight();

復制代碼

droidText0.5.jar

將簽出的圖片嵌入到PDF中,這里可以使用iText.jar,不一定要使用droidText0.5.jar

try {

PdfReader reader = new PdfReader(inPath, "PDF".getBytes());

FileOutputStream outputStream = new FileOutputStream(outPath);

PdfStamper stamp;

stamp = new PdfStamper(reader, outputStream);

PdfContentByte over = stamp.getOverContent(pageNum);

byte[] bytes = Bitmap2Bytes(bitmap);

Image img = Image.getInstance(bytes);

Rectangle rectangle = reader.getPageSize(pageNum);

img.setAlignment(1);

//設置ImageView的位置

img.scaleAbsolute(rectangle.getWidth() * mImgWidthPercent, rectangle.getHeight() * mImgHeightPercent);

//設置ImageView的偏移量

img.setAbsolutePosition(rectangle.getWidth() * widthScale, rectangle.getHeight() * heightScale);

over.addImage(img);

stamp.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (MalformedURLException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} catch (BadElementException e) {

e.printStackTrace();

} catch (DocumentException e) {

e.printStackTrace();

}

復制代碼

總結(jié)

以上是生活随笔為你收集整理的android 手写签批_Android手写签批功能实现(适配Android6的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。