pdf

  
用于在应用内添加 PDF 查看功能的库。
最近更新时间 稳定版 候选版 Beta 版 Alpha 版
2025 年 7 月 16 日 - - - 1.0.0-alpha10

声明依赖项

如需添加 PDF 的依赖项,您必须将 Google Maven 制品库添加到项目中。如需了解详情,请参阅 Google 的 Maven 代码库

在应用或模块的 build.gradle 文件中添加所需工件的依赖项:

Groovy

dependencies {
    implementation "androidx.pdf:pdf-viewer-fragment:1.0.0-alpha10"
}

Kotlin

dependencies {
    implementation("androidx.pdf:pdf-viewer-fragment:1.0.0-alpha10")
}

如需详细了解依赖项,请参阅添加 build 依赖项

反馈

您的反馈将帮助我们改进 Jetpack。如果您发现了新问题,或对此库有任何改进建议,请告诉我们。创建新问题前,请先查看此库中的现有问题。您可以点击星标按钮,为现有问题投票。

创建新问题

如需了解详情,请参阅问题跟踪器文档

此工件没有版本说明。

版本 1.0

版本 1.0.0-alpha10

2025 年 7 月 16 日

发布了 androidx.pdf:pdf-*:1.0.0-alpha10。版本 1.0.0-alpha10 中包含这些提交内容

新功能

  • 增强型选择功能,可让用户通过将选择手柄拖动到页面边界之外来选择多个页面上的文本。
  • 应用现在可以拦截并自定义 PDF 文档中超链接点击的处理方式。

API 变更

  • 公开了用于呈现 PDF 内容的可组合项 (I8e7ee)
  • PdfPointPdfRect 移动到 androidx.pdf.models 软件包 (I26cf4)
  • 公开用于呈现 PDF 内容的 View 组件 (I9fe27)
  • 公开了用于提前初始化 PDF 资源并缩短冷启动延迟时间的 API (a18fa89)
  • 公开了用于替换 PDF 内容中的超链接点击处理的 API(6330a8b)
  • 公开了新的制品 pdf-document-service 和相应的 API - PdfLoaderPdfDocumentSandboxedPdfLoader。这些接口可用于实现 PDF 文档的解析和处理组件 (Ide70d)
  • 公开了一个 API,用于在 PdfView 上设置 PdfDocument 以初始化文档的渲染 (If8738)

版本 1.0.0-alpha09

2025 年 5 月 7 日

发布了 androidx.pdf:pdf-*:1.0.0-alpha09。版本 1.0.0-alpha09 中包含这些提交内容

重大变更

  • 代码库已进行重大重构,现在完全使用 Kotlin 编写,并利用协程和 ViewModel。这包括对 PdfViewerFragment 的重新实现。此版本不包含任何新 API 或功能。

已知问题

  • 快速滚动条和页面指示器缺少阴影效果。
  • 单页 PDF 文档可能无法始终居中并缩放到视图宽度。

API 变更

  • containerStyleResId 添加 @StyleRes 注解。(I88d85)

版本 1.0.0-alpha08

2025 年 3 月 12 日

发布了 androidx.pdf:pdf-document-service:1.0.0-alpha08androidx.pdf:pdf-viewer:1.0.0-alpha08androidx.pdf:pdf-viewer-fragment:1.0.0-alpha08。版本 1.0.0-alpha08 中包含这些提交内容

bug 修复

  • 解决了因缩放差异导致的不同 Android 设备之间选择菜单放置位置不一致的问题。选择菜单位置现在在各设备上保持一致。
  • 在配置更改等场景中,对齐了片段重新创建时的快速滚动条和页面指示器位置。

版本 1.0.0-alpha07

2025 年 2 月 26 日

发布了 androidx.pdf:pdf-document-service:1.0.0-alpha07androidx.pdf:pdf-viewer:1.0.0-alpha07androidx.pdf:pdf-viewer-fragment:1.0.0-alpha07。版本 1.0.0-alpha07 中包含这些提交内容

新功能

  • PdfViewerFragment 现在支持 StylingOptions(一组样式资源 ID),从而可以通过 newInstance 或 XML (FragmentContainerView) 实现自定义样式。子类可以利用受保护的构造函数来实现类似的功能。
  • StylingOptions 目前接受提供以下信息的 containerStyle
    • 为快速滚动条和页面指示器提供自定义可绘制对象支持。
    • 用于精确定位快速滚动手柄和页面指示器的 marginEnd 属性。

API 变更

  • 添加了来自 PdfView 的公共属性 (I30fc5)
  • 为 PDF 视图添加了新的 API StylingOptions。(Id2993)

bug 修复

  • 修复了快速滚动条控柄与页面指示器显示状态之间的同步差异。

版本 1.0.0-alpha06

2025 年 1 月 29 日

发布了 androidx.pdf:pdf-document-service:1.0.0-alpha06androidx.pdf:pdf-viewer:1.0.0-alpha06androidx.pdf:pdf-viewer-fragment:1.0.0-alpha06。版本 1.0.0-alpha06 中包含这些提交内容

bug 修复

  • 修复:取消绑定未注册的服务时,由 IllegalArgumentException 引起的崩溃 (eb4e85)
  • 修复:因 mMaxPagesnumPages 存在差异而导致的崩溃 IllegalArgumentException。(75d763)

版本 1.0.0-alpha05

2024 年 12 月 11 日

发布了 androidx.pdf:pdf-document-service:1.0.0-alpha05androidx.pdf:pdf-viewer:1.0.0-alpha05androidx.pdf:pdf-viewer-fragment:1.0.0-alpha05。版本 1.0.0-alpha05 中包含这些提交内容

bug 修复

  • 此库现在使用类型使用的 JSpecify nullness 注释。Kotlin 开发者应使用以下编译器实参来强制执行正确用法:-Xjspecify-annotations=strict(这是 Kotlin 编译器从 2.1.0 版开始的默认实参)。(I38301b/326456246
  • 修复了在 Android 13 中旋转屏幕后显示之前打开的页面的问题。(Ib03dd)
  • 修复了旋转时工具箱消失的问题。(01148f)

版本 1.0.0-alpha04

2024 年 11 月 13 日

发布了 androidx.pdf:pdf-viewer:1.0.0-alpha04androidx.pdf:pdf-viewer-fragment:1.0.0-alpha04。版本 1.0.0-alpha04 中包含这些提交内容

扩大了兼容性

  • PDFViewer 库现在支持 Android 版本 S、T、U 和 V。这种增强的兼容性与 SDK 扩展程序 13 更新相关。

API 变更

  • PdfViewerFragment 添加了最小 SdkExtension 约束条件。(I922af)
  • 为 PDF 查看器库公开了新的 API。(I0af57)

bug 修复

  • 修复了进程终止问题导致的崩溃。
  • 与密码对话框相关的界面修复。
  • 针对 findInFileViewFastscrollView 进行了无障碍功能修复。

正在开发

  • 我们正在积极努力将 Jetpack Compose 纳入该库中。

版本 1.0.0-alpha03

2024 年 9 月 18 日

发布了 androidx.pdf:pdf-viewer:1.0.0-alpha03androidx.pdf:pdf-viewer-fragment:1.0.0-alpha03。版本 1.0.0-alpha03 中包含这些提交内容

bug 修复

  • 解决了首次打开搜索时键盘未显示的问题
  • 与 FindInFile 视图的字体相关的界面修复。
  • 修复了文本选择和拖动手柄的界面问题。

已知问题

  • PDF 文档中的 3D 图像不会在查看器中呈现。
  • PdfViewerFragment 在处理非常大的 PDF 文档(超过 250 MB)时存在一些性能问题

版本 1.0.0-alpha02

2024 年 9 月 4 日

发布了 androidx.pdf:pdf-viewer:1.0.0-alpha02androidx.pdf:pdf-viewer-fragment:1.0.0-alpha02。版本 1.0.0-alpha02 中包含这些提交内容

bug 修复

  • 解决了从竖屏旋转为横屏时 PDF 图像模糊的问题,以及应用进入休眠状态的问题。
  • “在文件中查找”菜单现在即使在配置更改时也能保持结果计数。
  • 现在,单页 PDF 文件可以使用 FloatingActionButton 图标。
  • 修复了“在文件中查找”栏与 FloatingActionButton 之间的重叠问题。
  • 现在可以在查看器中呈现文字和突出显示注释。
  • 对“在文件中查找”栏进行了无障碍功能改进。
  • 我们已针对旋转实现界面修复,包括保留查找次数、解决文本选择菜单消失问题,以及解决 FAB 重叠问题。
  • 修复了横屏模式下“在文件中查找”菜单隐藏在键盘后面的问题。

已知问题

  • PDF 文档中的 3D 图像不会在查看器中呈现。
  • PdfViewerFragment 在处理非常大的 PDF 文档(超过 250 MB)时存在一些性能问题

版本 1.0.0-alpha01

2024 年 8 月 7 日

发布了 androidx.pdf:pdf-viewer:1.0.0-alpha01androidx.pdf:pdf-viewer-fragment:1.0.0-alpha01。版本 1.0.0-alpha01 中包含这些提交内容

新功能

PDFViewer 的初始 Alpha 版包含可实现核心 PDF 阅读场景的早期预览版实现。请注意,PdfViewerFragment 目前仅在 Android V (SDK 35) 版本上受支持。我们将在即将发布的版本中添加对旧版 Android 的支持。

  • 引入了 PdfViewerFragment,应用可以使用它来呈现 PDF 文档。PdfViewerFragment 可简化在 activity 中集成 PDF 查看器的过程,并允许用户通过以下方式进行互动:
    • 缩放:双指张合可调整缩放级别,以便获得舒适的阅读体验;点按两次可快速放大/缩小到默认状态。
    • 导航:在默认状态/放大状态下滚动。PdfViewerFragment 提供快速滚动条,可在页面之间快速滚动。
    • 文字操作:长按文字可选中文字,让用户能够使用“复制”和“全选”等选项。
    • 受密码保护的文档:PdfViewerFragment 提供一个对话框,供用户输入密码并打开文档。
    • 可导航的超链接:用户可以通过点按 PDF 中的超链接导航到网页网址或书签。
    • 注释模式的快捷方式:PdfViewerFragment 尚不支持编辑模式。相反,PdfViewerFragment 会显示一个 FloatingActionButton,该 FloatingActionButton 会使用文档 URI 触发隐式 android.intent.action.ANNOTATE intent。

API 变更

  • 添加了 PdfViewerFragment.documentUri 属性,用于为文档设置文件或内容 URI 并启动文档加载。设置 URI 时,PdfViewerFragment 会显示一个加载旋转图标,表示文档正在进行后台处理。
  • 添加了 PdfViewerFragment.isTextSearchActive 以切换“在文件中查找”菜单的显示状态。PdfViewerFragment 处理整个流程 - 允许输入、显示匹配总数、支持在结果之间导航并退出。
  • 添加了 onDocumentLoadSuccessonDocumentLoadError 回调,它们会在成功渲染文档后或在渲染之前抛出错误后调用。

已知问题

  • 在某些情况下,“在文件中查找”栏会与 FloatingActionButton 重叠。
  • 对于单页 PDF,FloatingActionButton 图标不可见。
  • 在“在文件中查找”菜单中,结果数量不会在配置更改时保留。
  • 关闭“在文件中查找”菜单时出现闪烁
  • PDF 文档中的 3D 图像不会在查看器中呈现。
  • 我们将在后续版本中启用无障碍功能。
  • 从竖屏旋转为横屏时,PDF 图片变得模糊。
  • 不支持文字/突出显示注释。
  • PdfViewerFragment 在处理非常大的 PDF 文档(超过 250 MB)时存在一些性能问题

备注

  • compileSdk 更新为 35 5dc41be