pdf 格式图像上的多个超链接 android

Multiple hyperlinks on a image in pdf android

我创建了一个生成名片的应用程序 (Phone, Email, Link)

以两种格式保存 PDF(使用 LIB itextpdf)和 Image

我在 PDF

中插入了相同的 Image

图像看起来像这样

现在的问题是

Numberemailwebsite 应该可以点击

到目前为止我尝试了什么

我尝试使用 Hyperlink Rectangle

破解此功能

但是当我使用以下代码添加 Rectangle 时

PdfContentByte canvas = writer.getDirectContent();
                Rectangle rect = new Rectangle(36, 636, 559, 10);
                rect.setBorder(Rectangle.BOX);
                rect.setBorderWidth(2);
                canvas.rectangle(rect);

但是我无法将矩形放在正确的位置

X、Y、宽度和高度没问题,但给出了这个输出

PDF 输出

我的问题是

  1. 是否可以破解此功能?
  2. 如何制作位置正确的可点击矩形?
  3. 您还有其他建议吗?

我解决了我的问题并回答了我自己的问题

解决了我的矩形位置

Rectangle phone = new Rectangle(36, 640,540,676);
Rectangle email = new Rectangle(36,604,540, 640);
Rectangle website = new Rectangle(36,568,540, 604);

用以下代码链接矩形

                PdfReader reader = new PdfReader(file.getAbsolutePath() + File.separator + "card1_" + name.getText().toString() + ".pdf");
                PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(file.getAbsolutePath() + File.separator + "card1_Clickable_" + name.getText().toString() + ".pdf"));
                Rectangle phone = new Rectangle(36, 640,540,676);
                Rectangle email = new Rectangle(36,604,540, 640);
                Rectangle website = new Rectangle(36,568,540, 604);
                phone.setBorder(0);
                email.setBorder(0);
                website.setBorder(0);

                PdfAnnotation link = PdfAnnotation.createLink(stamper.getWriter(),
                        phone, PdfAnnotation.HIGHLIGHT_INVERT,new PdfAction("tel://"+phone_edit.getText().toString()));
                link.setBorder(new PdfBorderArray(0, 0, 0));

                PdfAnnotation link1 = PdfAnnotation.createLink(stamper.getWriter(),
                        email, PdfAnnotation.HIGHLIGHT_INVERT,new PdfAction("mailto:"+email_edit.getText().toString()));
                link1.setBorder(new PdfBorderArray(0, 0, 0));

                PdfAnnotation link2 = PdfAnnotation.createLink(stamper.getWriter(),
                        website, PdfAnnotation.HIGHLIGHT_INVERT,new PdfAction(website_edit.getText().toString()));
                link2.setBorder(new PdfBorderArray(0, 0, 0));

                stamper.addAnnotation(link,1);
                stamper.addAnnotation(link1,1);
                stamper.addAnnotation(link2,1);
                stamper.close();

现在我可以点击图像

上的每个 link