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

Java 如何将android imageview坐标转换为PDFView坐标,以便在PDF box库中添加电子签名?,java,android,pdf,math,coordinates,Java,Android,Pdf,Math,Coordinates,我想在pdf中添加电子签名。我使用签名板库捕获签名和标签视图,以便移动、缩放和旋转图像。 我正在android中使用库渲染PDF 我使用tomroush的PDFbox在android中操作pdf。我想将签名图像添加到pdf中。但将android视图坐标映射到pdf框坐标存在问题。我正在为我尝试的内容附加代码 //loading pdf pdfView.fromUri(pdf_location).enableSwipe(true).defaultPage(0

我想在pdf中添加电子签名。我使用签名板库捕获签名和标签视图,以便移动、缩放和旋转图像。 我正在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);
计算图像的宽度和高度(缩放图像)

在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坐标映射的唯一区别是,我从PDF页面高度减去y坐标,因为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);