@dariyd/react-native-pdf-page-image

中文文档
2.1.0发布于 2026/09/25MITTypeScriptCommonJS零依赖近 30 天下载 4185

在 React Industrial 中将 PDF 页面改为 JPEG 或 PNG 图像 。 为新建筑所建 (TurboModules + Codegen). 在iOS上使用PDFKit,在Android上使用Pdfrender.

中文使用文档
文档目录15 节
  1. 安装
  2. iOS系统
  3. 机器人
  4. 所需资源
  5. 2.1中有什么新鲜事
  6. 2.0中的变化
  7. API 密码
  8. PdfPageImage.open(uri)
  9. PdfPageImage.generate(uri, page, scale?, options?)
  10. PdfPageImage.generateAllPages(uri, scale?, options?)
  11. PdfPageImage.close(uri)
  12. 支持的 URI 格式
  13. 示例
  14. 页:1
  15. 许可证

@dariyd/ react-native-pdf-页面图像

在 React Industrial 中将 PDF 页面改为 JPEG 或 PNG 图像 。 修建于 新建筑 (土耳其语:Turbo Modules + Codegen).

  • iOS系统缩写:PDFKit
  • 机器人页:1

安装

npm install @dariyd/react-native-pdf-page-image
# or
yarn add @dariyd/react-native-pdf-page-image

iOS系统

cd ios && pod install

机器人

不需要额外的设置——通过Gradle自动连接.

所需资源

  • 原生反应 0.76+ (中文(简体) ) (新架构启用)
  • iOS系统 15.0+ (韩语)
  • Android API 软件 24岁以上

2.1中有什么新鲜事

  • PdfPageImage.compress(uri, options?) ——写一个PDF的更小的副本,每页重编码为JPEG(默认为150 dpi,质量为70). 页面大小保留;文本成为页面图像的一部分. 在一行背景线上逐行工作,长扫描不会突起内存. Android上的JPEG是直接嵌入的(系统) PdfDocument 将存储它们未压缩.
const result = await PdfPageImage.compress('file:///path/to/scan.pdf', { dpi: 150, quality: 70 });
if (result.bytes < result.originalBytes * 0.8) {
  // keep result.uri (a file:// in the temp/cache directory)
}

最好的扫描和照片。 用文字制作的PDF(电子邮件发票)可能更大,总是比较 bytes 与 originalBytes。 。 。 .

2.0中的变化

  • JPEG 默认输出 (单位:千美元)quality: 80——~10-20× 扫描/相片页比PNG小. 过 { format: 'png' } 对旧行为.
  • iOS 以真实的 1x 尺度制作 . 之前输出被设备屏幕尺度(现代iPhones上3×)默相乘以,所以 scale: 1.0 出产了3×像素——与Android大小不同. 现在 1 PDF 点= scale 两个平台上的像素.
  • 新设 maxDimension 选项 ——在不知页面大小的情况下将长边以像素标出. 喜欢缩略图.
  • 移动了 iOS 临时文件 从应用程序的文档目录到临时目录(如果 close() 页:1.

API 密码

PdfPageImage.open(uri)

打开 PDF 并返回页数.

const info = await PdfPageImage.open('file:///path/to/document.pdf');
console.log(info.pageCount); // 5

回返情况: Promise<{ uri: string, pageCount: number }>

PdfPageImage.generate(uri, page, scale?, options?)

将一页刻入图像.

// Full-quality render at 2x
const image = await PdfPageImage.generate('file:///path/to/document.pdf', 0, 2.0);

// Lightweight thumbnail: long edge capped at 640 px
const thumb = await PdfPageImage.generate(pdfUri, 0, 1.0, { maxDimension: 640 });
console.log(thumb.uri);    // file:///.../<uuid>.jpg
参数类型说明
uristringPDF 文件 URI
pagenumber页索引 (基于 0)
scalenumber?每个 PDF 点的像素( 默认 ): 1.0范围 : 0.1 – 说吧 – 10.0(中文(简体) )
optionsGenerateOptions?输出选项 (以下)

GenerateOptions数字 :

选项类型说明
format'jpeg' | 'png'输出编码( 默认 ): 'jpeg'(中文(简体) )
qualitynumber?JPEG 质量 1- 100( 默认 : 80; 忽略 PNG )
maxDimensionnumber?将长边以像素为单位; 需要时缩小有效尺度( 默认 : 0 = 无上限)

回返情况: Promise<{ uri: string, width: number, height: number }>

PdfPageImage.generateAllPages(uri, scale?, options?)

将所有页面渲染到图像中。 一样 options 作为 generate,每页应用.

const pages = await PdfPageImage.generateAllPages(pdfUri, 1.5, { quality: 90 });
pages.forEach((page, i) => {
  console.log(`Page ${i}: ${page.uri} (${page.width}x${page.height})`);
});

回返情况: Promise<Array<{ uri: string, width: number, height: number }>>

PdfPageImage.close(uri)

关闭 PDF 并删除临时图像文件。 解脱记忆后再打这个电话.

await PdfPageImage.close('file:///path/to/document.pdf');

回返情况: Promise<void>

支持的 URI 格式

格式示例
文件路径/path/to/file.pdf
文件 URIfile:///path/to/file.pdf
HTTP/HTTPS 软件https://example.com/doc.pdf
Base64 数据 URIdata:application/pdf;base64,JVBERi0...
内容 URI (Android)content://com.provider/doc.pdf

示例

import { PdfPageImage } from '@dariyd/react-native-pdf-page-image';

async function renderPdfThumbnails(pdfUri: string) {
  try {
    const { pageCount } = await PdfPageImage.open(pdfUri);
    console.log(`PDF has ${pageCount} pages`);

    // Render first page as a lightweight thumbnail
    const thumbnail = await PdfPageImage.generate(pdfUri, 0, 1.0, {
      maxDimension: 640,
    });
    // Use thumbnail.uri in an <Image /> component

    // Or render all pages at full quality
    const allPages = await PdfPageImage.generateAllPages(pdfUri, 2.0, {
      quality: 90,
    });

    // Clean up when done
    await PdfPageImage.close(pdfUri);
  } catch (error) {
    console.error('PDF rendering failed:', error);
  }
}

页:1

  • 页面按 URI + 页面索引 + 比例 + 选项进行缓存 – 重复调用立即返回缓存结果
  • 临时图像文件存储在临时目录(iOS)或缓存目录(Android)中
  • 总是打电话 close() 当解开内存并删除临时文件时
  • 页面绘制在白背景上, 因此 JPEG( 无 alpha 通道) 将一无所有
  • 在iOS上自动处理页面旋转( 90°, 180°, 270°)

许可证

麻省理工学院

版本与发布记录

@dariyd/react-native-pdf-page-image 共发布 3 个版本,首次发布于 2026/04/09;过去 12 个月发布了 3 个版本。

版本发布日期距今
2.1.0latest2026/09/251 个月前
2.0.02026/07/203 个月前
1.0.12026/04/097 个月前

关于 @dariyd/react-native-pdf-page-image 的常见问题

@dariyd/react-native-pdf-page-image 是什么?

在 React Industrial 中将 PDF 页面改为 JPEG 或 PNG 图像 。 为新建筑所建 (TurboModules + Codegen). 在iOS上使用PDFKit,在Android上使用Pdfrender.

如何安装 @dariyd/react-native-pdf-page-image?

在项目目录运行 npm install @dariyd/react-native-pdf-page-image,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(>=18.2.0)、react-native(>=0.76.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@dariyd/react-native-pdf-page-image 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@dariyd/react-native-pdf-page-image 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@dariyd/react-native-pdf-page-image 可以商用吗?

@dariyd/react-native-pdf-page-image 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@dariyd/react-native-pdf-page-image 的下载量有多少?

根据 npm 官方下载统计,@dariyd/react-native-pdf-page-image 在 2026/10/12 – 2026/11/10 这 30 天内被下载 4,185 次,日均约 140 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@dariyd/react-native-pdf-page-image 还在维护吗?

最新版本 2.1.0 发布于 2026/09/25(1 个月前);至今共发布 3 个版本,其中过去 12 个月发布了 3 个;首次发布于 2026/04/09。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。