@SuppressLint("DefaultLocale") private String improveHtml(final String html) { final Document document = Jsoup.parse(html); for (final Element e : document.getAllElements()) { if (e.hasAttr("style")) { for (final Attribute a : e.attributes()) { if (a.getKey().compareTo("style") == 0) { final String[] items = a.getValue().trim().split(";"); String newValue = ""; for (final String item : items) { if (!item.toLowerCase(Locale.ENGLISH).contains("font-family:") && !item.toLowerCase(Locale.ENGLISH).contains("font-size:")) { newValue = newValue.concat(item).concat(";"); } } a.setValue(newValue); } } } } return document.body().html(); }
private boolean testValidProtocol(Element el, Attribute attr, Set<Protocol> protocols) { // try to resolve relative urls to abs, and optionally update the attribute so output html has // abs. // rels without a baseuri get removed String value = el.absUrl(attr.getKey()); if (value.length() == 0) value = attr.getValue(); // if it could not be made abs, run as-is to allow custom unknown // protocols if (!preserveRelativeLinks) attr.setValue(value); for (Protocol protocol : protocols) { String prot = protocol.toString() + ":"; if (value.toLowerCase().startsWith(prot)) { return true; } } return false; }