微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将android imageview坐标转换为PDFView坐标以在PDF框库中添加电子签名?

如何解决如何将android imageview坐标转换为PDFView坐标以在PDF框库中添加电子签名?

我想将电子签名添加到pdf。我正在使用签名板库来捕获签名和标签视图,以移动,缩放和旋转图像StickerView。 我正在使用PDFView库在android中渲染PDF。

我正在使用tomroush的PDFBox在android中操作pdf。我想将签名图像添加到pdf中。但在将android视图坐标映射到pdf框坐标时存在问题。我正在附上我尝试过的代码

            //loading pdf
        pdfView.fromUri(pdf_location).enableSwipe(true).defaultPage(0).onPageError(new OnPageErrorListener() {
            @Override
            public void onPageError(int page,Throwable t) {
                t.printstacktrace();
            }
        }).load();

以PDDOcumnet代码加载PDF

                            //loading document in PDF Box PDDocument object
                        PDDocument document = PDDocument.load(getContentResolver().openInputStream(pdf_location));
                        PDPage currentPage = document.getPage(pdfView.getCurrentPage());
                        PDImageXObject image = PDImageXObject.createFromFile(fName,document);
                        PDPageContentStream contentStream = new PDPageContentStream(document,currentPage,true,false);

计算图像的宽度和高度(缩放图像

                            float width = iv_sticker.getimageDrawable().getIntrinsicWidth() * (( 72.0f / getResources().getdisplayMetrics().densityDpi));
                        float height = iv_sticker.getimageDrawable().getIntrinsicHeight()  * ((72.0f / getResources().getdisplayMetrics().densityDpi));

在pdf上绘制图像

                            contentStream.drawImage(image,iv_sticker.getX() * (currentPage.getMediaBox().getWidth() / pdfView.getoptimalPageWidth()),(currentPage.getMediaBox().getWidth() - (iv_sticker.getY() * (currentPage.getMediaBox().getHeight() / pdfView.getoptimalPageHeight()))) - (height),width,height);

在最后一个代码片段中,我正在找到pdf视图宽度和PDPage宽度的比率,然后将其乘以图像X坐标,以找到pdf上相应的X坐标。与y坐标相同。与Y坐标映射的唯一区别是,我从PDF页面高度减去y坐标,因为PDF坐标从左下角开始,然后减去图像高度,以使图像不会超出页面范围。但是输出不完美,我正在附加屏幕截图。

Image Of My App

Image Of PDF after running the above code after adding signature

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。