pdf 格式图像上的多个超链接 android
Multiple hyperlinks on a image in pdf android
我创建了一个生成名片的应用程序 (Phone, Email, Link)
以两种格式保存 PDF(使用 LIB itextpdf)和 Image
我在 PDF
中插入了相同的 Image
图像看起来像这样
现在的问题是
Number
、email
和 website
应该可以点击
到目前为止我尝试了什么
我尝试使用 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 输出
我的问题是
- 是否可以破解此功能?
- 如何制作位置正确的可点击矩形?
- 您还有其他建议吗?
我解决了我的问题并回答了我自己的问题
用解决了我的矩形位置
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
我创建了一个生成名片的应用程序 (Phone, Email, Link)
以两种格式保存 PDF(使用 LIB itextpdf)和 Image
我在 PDF
中插入了相同的 Image图像看起来像这样
现在的问题是
Number
、email
和 website
应该可以点击
到目前为止我尝试了什么
我尝试使用 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 输出
我的问题是
- 是否可以破解此功能?
- 如何制作位置正确的可点击矩形?
- 您还有其他建议吗?
我解决了我的问题并回答了我自己的问题
用解决了我的矩形位置
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