如何将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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...