如何向PdfDocument页面画布添加超链接?

时间:2018-01-08 18:25:05

标签: java android canvas hyperlink href

美好的一天。我正在使用本机PrintedPdfDocument类构建一个简单的pdf报告,我需要将带有超链接的文本插入到文档中。这是我对pdf页面的简单实现。

PrintedPdfDocument document = new PrintedPdfDocument(context, attributes);
PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(595, 842, 1).create();
PdfDocument.Page page = document.startPage(pageInfo);
Canvas c = page.getCanvas();
TextPaint p = new TextPaint();

这里有几种方法我曾尝试但仍然没有运气。

使用Canvas drawText()方法的第一种方法。结果:“某些链接”没有超链接。

c.drawText("<a href='https://example.com'>some link</a>", 30, 30, p);

使用SpannableString的第二种方式。结果:“一些链接”。

String link = "https://example.com";  
SpannableString s = new SpannableString("some link");
s.setSpan(new URLSpan(link), 0, link.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
c.drawText(s.toString(), 30, 30, p);

使用StaticLayout的第三种方式。结果:空格。

Spanned spanned = Html.fromHtml("<a href='https://example.com'>some link</a>", null, null);
StaticLayout l = new StaticLayout(spanned, p, 30, Layout.Alignment.ALIGN_CENTER, 1.0f, 0.0f, false);
l.draw(c);

TextView不会向Canvas绘制任何内容。

TextView tv = new TextView(context);
tv.setLayoutParams(new ViewGroup.LayoutParams(100, 100));
tv.setText(Html.fromHtml("<a href='https://example.com'>some link</a>"));
tv.draw(c);

也许你最好知道如何处理它?<​​/ p>

0 个答案:

没有答案