Skip to content

Latest commit

 

History

History
188 lines (139 loc) · 3.92 KB

README_zh.md

File metadata and controls

188 lines (139 loc) · 3.92 KB

HtmlAnnotator

badge-androidbadge-iosbadge-jvmbadge-linux API License

翻译:English

HtmlAnnotator 是基于Kotlin Multiplatform和Compose Multiplatform上的一个HTML渲染库,而且支持解析CSS样式。也支持Android的View系统。

特点

  • 支持自定义标签和CSS解析器
  • 可自由替换默认解析器
  • 支持多种CSS样式来源:内联、内部样式表、甚至是外部样式表
  • 支持转换结果缓存
  • 支持 Jetpack Compose
  • 基于 Kotlin Multiplatform 及 Kotlin 协程编写

默认解析器

Jetpack Compose

Html Tag

  • i
  • em
  • cite
  • dfn
  • b
  • strong
  • blockquote
  • ul
  • ol
  • li
  • br
  • p
  • div
  • h1
  • h2
  • h3
  • h4
  • h5
  • h6
  • tt
  • pre
  • big
  • small
  • sub
  • sup
  • center
  • a
  • img
  • span

CSS Rule

  • text-align

  • font-size

  • font-weight

  • font-style

  • color

  • background-color

  • text-indent

  • text-decoration

View

Html Tag

  • i
  • em
  • cite
  • dfn
  • b
  • strong
  • blockquote
  • ul
  • ol
  • li
  • br
  • p
  • div
  • h1
  • h2
  • h3
  • h4
  • h5
  • h6
  • tt
  • pre
  • big
  • small
  • sub
  • sup
  • center
  • a
  • span

CSS Rule

  • text-align
  • font-size
  • font-style
  • color
  • background-color
  • text-indent
  • text-decoration

导入

已发布到 mavenCentral

${LAST_VERSION}: Download (不包含 'v')

dependencies {
    //Jetpack Compose 扩展支持, 提供开箱即用的显示组件与缓存机制
    implementation("io.github.ravenliao.htmlannotator:htmlAnnotator-compose-ext:${LAST_VERSION}")
    // Jetpack Compose 基础支持
    implementation("io.github.ravenliao.htmlannotator:htmlAnnotator-compose:${LAST_VERSION}")
    
    // View
    implementation("io.github.ravenliao.htmlannotator:htmlAnnotator-view:${LAST_VERSION}")

}

R8 / Proguard

该库不需要配置任何混淆规则,但你可能需要为间接依赖的 Kotlin Coroutinesksoup添加混淆配置

快速上手

引入htmlAnnotator-compose-extsketch

//实现对带图片的HTML文档的解析
BasicHtmlImageText(
    html = srcHtml,
    imageContent = { imgUrl ->
        AsyncImage(
            uri = it,
            contentDescription = "photo",
            Modifier
                .fillMaxWidth()
                .wrapContentHeight(),
            contentScale = ContentScale.FillWidth
        )
    }
)

更多请查看DemoScreen

Android的View部分请查看MainActivity

特别感谢

  • NightWhistler/HtmlSpanner: HtmlAnnotator参考了来自HtmlSpanner的部分代码,包括解析转换、解析器部分
  • ksoup: HtmlAnnotator借助ksoup解析HTML,以及选出最终的CSS
  • panpf/sketch: 参考了该项目的构建发布部分配置

License

Apache 2.0. 有关详细信息,请参阅 LICENSE 文件.