# @dariyd/react-native-pdf-page-image 中文文档

规范地址：https://npmcn.com/package/%40dariyd/react-native-pdf-page-image/

版本：2\.1\.0
npm 元数据更新时间：2026-09-25T08:18:45.178Z
中文译文更新时间：2026-11-11T11:49:37.009Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40dariyd/react-native-pdf-page-image
原文对照：https://npmcn.com/package/%40dariyd/react-native-pdf-page-image/?lang=original
项目主页：https://github.com/dariyd/react-native-pdf-page-image#readme
源码仓库：https://github.com/dariyd/react-native-pdf-page-image

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：47.5 kB，14 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：0 个
- peer 依赖：react \>=18\.2\.0，react-native \>=0\.76\.0
- 首次发布：2026-04-09T11:01:01.774Z
- 最新版本发布：2026-09-25T08:18:45.015Z
- 近 30 天下载量：4185（2026-10-12 至 2026-11-10，npm 官方下载统计）
- 已发布版本数：3（近 12 个月 3 个）

## 中文简介

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

## 安装

```sh
npm install @dariyd/react-native-pdf-page-image
```

也可以使用：`pnpm add @dariyd/react-native-pdf-page-image`、`yarn add @dariyd/react-native-pdf-page-image`、`bun add @dariyd/react-native-pdf-page-image`

## README

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

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

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

## 安装

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

### iOS系统

```bash
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` 将存储它们未压缩.

```typescript
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 并返回页数.

```typescript
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?)`

将一页刻入图像.

```typescript
// 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
```

| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `uri` | `string` | PDF 文件 URI |
| `page` | `number` | 页索引 (基于 0) |
| `scale` | `number?` | 每个 PDF 点的像素( 默认 ): `1.0`范围 : `0.1` – 说吧 – `10.0`(中文(简体) ) |
| `options` | `GenerateOptions?` | 输出选项 (以下) |

**`GenerateOptions`数字 :**

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

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

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

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

```typescript
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 并删除临时图像文件。 解脱记忆后再打这个电话.

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

**回返情况:** `Promise<void>`

## 支持的 URI 格式

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

## 示例

```typescript
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 是什么？

在 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 和提交记录判断。

