【问题标题】:Multiple hyperlinks on a image in pdf androidpdf android中图像上的多个超链接
【发布时间】:2017-11-07 18:20:36
【问题描述】:

我创建了一个使用(电话电子邮件链接)生成名片的应用

以两种格式保存:PDF(使用 LIB itextpdf)和图像

我在 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. 您还有什么其他的建议吗?

【问题讨论】:

    标签: android pdf itext pdf-generation


    【解决方案1】:

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

    解决了我的矩形位置
    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();
    

    现在我可以点击图片上的每个链接

    【讨论】:

      猜你喜欢
      • 2018-03-23
      • 1970-01-01
      • 2016-09-04
      • 2016-03-03
      • 2011-02-06
      • 1970-01-01
      • 2012-05-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多