美好的一天。我正在使用本机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>