# fsys.pdfium 库模块帮助文档

<details>  <summary>项目主页</summary>  <p>
https://github.com/xuncv/PDFium-aardio

相关头文件：
https://pdfium.googlesource.com/pdfium/+/refs/heads/main/public/
https://pdfium.googlesource.com/pdfium/+/refs/heads/main/public/fpdf_edit.h
https://pdfium.googlesource.com/pdfium/+/refs/heads/main/public/fpdf_doc.h
https://pdfium.googlesource.com/pdfium/+/refs/heads/main/public/fpdfview.h
</p></details>

## fsys 成员列表 <a id="fsys" href="#fsys">&#x23;</a>

### fsys.pdfium() <a id="fsys.pdfium" href="#fsys.pdfium">&#x23;</a>
[返回对象:fsysPdfiumObject](#fsysPdfiumObject)

### fsys.pdfium(PDF路径或数据,PDF密码) <a id="fsys.pdfium" href="#fsys.pdfium">&#x23;</a>
创建或打开 PDF 解析文档对象。  
参数 @1 可指定 PDF 文件路径或数据。  
如果事先导入 inet.http，参数 @1 也可以指定 PDF 文件网址。  
指定网址且下载 PDF 时不卡界面

## fsys.pdfium 成员列表 <a id="fsys.pdfium" href="#fsys.pdfium">&#x23;</a>

基于 Google 开源组件 PDFium 封装的 PDF 解析库

### fsys.pdfium.init() <a id="fsys.pdfium.init" href="#fsys.pdfium.init">&#x23;</a>
可选调用此函数初始化 PDFium 组件，  
用法请参考函数源码与 PDFium 文档。  
一般不必主动调用此函数

### fsys.pdfium.lasterr() <a id="fsys.pdfium.lasterr" href="#fsys.pdfium.lasterr">&#x23;</a>
返回错误信息。  
如果最后一次操作成功则返回 null

## fsysPdfiumObject 成员列表 <a id="fsysPdfiumObject" href="#fsysPdfiumObject">&#x23;</a>

### fsysPdfiumObject. <a id="fsysPdfiumObject." href="#fsysPdfiumObject.">&#x23;</a>
`function(statIndex,endIndex)`

### fsysPdfiumObject.asBitmap() <a id="fsysPdfiumObject.asBitmap" href="#fsysPdfiumObject.asBitmap">&#x23;</a>
当前页转换为 gdip.bitmap 对象  

[返回对象:gdipbitmapObject](https://www.aardio.com/zh-cn/doc/library-reference/gdip/bitmap.html#gdipbitmapObject)

### fsysPdfiumObject.copyViewerPreferences(srcPdf) <a id="fsysPdfiumObject.copyViewerPreferences" href="#fsysPdfiumObject.copyViewerPreferences">&#x23;</a>
导入 PDF 设置。  
srcPdf 指定要导入的 fsys.pdfium 对象，也可指定 PDF 路径或数据

### fsysPdfiumObject.createPage(index,width,height) <a id="fsysPdfiumObject.createPage" href="#fsysPdfiumObject.createPage">&#x23;</a>
创建页面。  
@index 指定页码，@width 指定宽，@height 指定高

### fsysPdfiumObject.deletePage() <a id="fsysPdfiumObject.deletePage" href="#fsysPdfiumObject.deletePage">&#x23;</a>
删除参数 @1 指定页码的页面，起始页码为 1。  
如果删除 pageNum 指定的页码则关闭当前页，且 pageNum 设为 0

### fsysPdfiumObject.destroy() <a id="fsysPdfiumObject.destroy" href="#fsysPdfiumObject.destroy">&#x23;</a>
释放对象

### fsysPdfiumObject.drawLine(x1,y1,x2,y2,strokeWidth,strokeColor) <a id="fsysPdfiumObject.drawLine" href="#fsysPdfiumObject.drawLine">&#x23;</a>
在当前页绘制线条。  
(x1,y1) 为起点坐标，(x2,y2) 为终点坐标。  
strokeWidth 为线条宽度，strokeColor 为线条颜色。  
颜色支持 0xAARRGGBB 格式。

### fsysPdfiumObject.drawRect(x,y,width,height,strokeWidth,strokeColor,fillColor) <a id="fsysPdfiumObject.drawRect" href="#fsysPdfiumObject.drawRect">&#x23;</a>
在当前页绘制矩形。  
x, y 为左上角坐标。  
strokeWidth 为边框宽度，strokeColor 为边框颜色，fillColor 为填充颜色。  
颜色支持 0xAARRGGBB 格式。

### fsysPdfiumObject.eachPageText(startPageNum,endPageNum) <a id="fsysPdfiumObject.eachPageText" href="#fsysPdfiumObject.eachPageText">&#x23;</a>

```aardio
for pageNum,textContent in fsysPdfiumObject.eachPageText(){
	/*遍历所有页面文本。  
可选用 startPageNum,endPageNum 参数指定开始与结束页码。  
pageNum 为当前页码，textContent 为当前页文本内容。  
需要注意不是所有 PDF 页面都提供文本，有些只能转为图像。*/
}
```

### fsysPdfiumObject.eachTextRect() <a id="fsysPdfiumObject.eachTextRect" href="#fsysPdfiumObject.eachTextRect">&#x23;</a>

```aardio
for left,top,right,bottom,text in fsysPdfiumObject.eachTextRect(){
	/*遍历当前页文本区块。  
left,top,right,bottom 分别为左上右下位置。  
text 为文本*/
}
```

### fsysPdfiumObject.extractBookmarks() <a id="fsysPdfiumObject.extractBookmarks" href="#fsysPdfiumObject.extractBookmarks">&#x23;</a>
提取目录,返回 fsys.pdfium.bookmark 对象。  

[返回对象:fsysfsysPdfiumBookmarkObject](#fsysfsysPdfiumBookmarkObject)

### fsysPdfiumObject.extractText(bgcolor) <a id="fsysPdfiumObject.extractText" href="#fsysPdfiumObject.extractText">&#x23;</a>
提取并返回当前页文本。  
可选用参数 @bgcolor 指定背景色（ 8888 ARGB 格式，0xAARRGGBB）.默认为 0xFFFFFFFF。

### fsysPdfiumObject.getMeta() <a id="fsysPdfiumObject.getMeta" href="#fsysPdfiumObject.getMeta">&#x23;</a>
获取 PDF 元数据。  
返回包含 Title,Author,Subject,Keywords,Creator,Producer,CreationDate,ModDate 等字段的表对象。

### fsysPdfiumObject.importPages(srcPdf,index,pageIndicesOrRange) <a id="fsysPdfiumObject.importPages" href="#fsysPdfiumObject.importPages">&#x23;</a>
导入并合并 PDF。  
srcPdf 指定要导入的 fsys.pdfium 对象，也可指定 PDF 路径或数据。  
@index 指定要插入的页码，不指定则添加到尾部。  
@pageIndicesOrRange 可以指定页码数组，  
也可以用字符串指定区间，示例："1,3,5-7"。  
省略 @pageIndicesOrRange 则导入所有页面

### fsysPdfiumObject.insertBitmap(bitmap,left,top,width,height) <a id="fsysPdfiumObject.insertBitmap" href="#fsysPdfiumObject.insertBitmap">&#x23;</a>
插入图像到当前页面。  
bitmap 可指定图像文件数据或路径，也可指定 gdip.bitmap 对象。  
可选用参数 left, top, width, height 指定插入坐标与宽高。  
需要注意这里需要指定相对于页面左上角的坐标（PDFium 默认坐标原点为左下角）。

### fsysPdfiumObject.insertText(text,x,y,color,fontSize,font) <a id="fsysPdfiumObject.insertText" href="#fsysPdfiumObject.insertText">&#x23;</a>
在当前页插入文本。  
text 为要插入的字符串。  
x, y 为左上角坐标。  
fontSize 为字号，默认为 12。  
font 可以是 'Helvetica', 'Courier', 'Times-Roman' 等标准字体名，也可以是 loadFont 返回的字体句柄。  
color 为文本颜色，支持 0xAARRGGBB 格式。

### fsysPdfiumObject.loadFont(fontPath,fontType,isCid) <a id="fsysPdfiumObject.loadFont" href="#fsysPdfiumObject.loadFont">&#x23;</a>
加载嵌入字体文件（使用嵌入字体会增大 PDF 体积），建议指定 ttf 后缀的字体文件。  
fontPath 为字体文件路径。  
参数 fontType 默认为 `2/*_FPDF_FONT_TRUETYPE*/`，可指定为 `1/*_FPDF_FONT_TYPE1*/`。  
参数isCid 指定是否为 CID 字体（一般是中文字体），默认为 true 。  
成功返回字体句柄，失败返回 null。返回的句柄在 pdfium 对象销毁时自动释放。

### fsysPdfiumObject.pageCount <a id="fsysPdfiumObject.pageCount" href="#fsysPdfiumObject.pageCount">&#x23;</a>
获取页面总数，只读属性。

### fsysPdfiumObject.pageHeight <a id="fsysPdfiumObject.pageHeight" href="#fsysPdfiumObject.pageHeight">&#x23;</a>
获取页面高度，只读属性。

### fsysPdfiumObject.pageNum <a id="fsysPdfiumObject.pageNum" href="#fsysPdfiumObject.pageNum">&#x23;</a>
读取或设置当前活动页码，页码自 1 开始

### fsysPdfiumObject.pageWidth <a id="fsysPdfiumObject.pageWidth" href="#fsysPdfiumObject.pageWidth">&#x23;</a>
获取页面宽度，只读属性。

### fsysPdfiumObject.render <a id="fsysPdfiumObject.render" href="#fsysPdfiumObject.render">&#x23;</a>
窗口绘图

### fsysPdfiumObject.render(hdcOrGraphics,x,y,cx,cy,rotate,flags) <a id="fsysPdfiumObject.render" href="#fsysPdfiumObject.render">&#x23;</a>
参数 @hdcOrGraphics 可指定 hdc 或 graphics 对象，  
@x,@y 指定 x,y 坐标，@cx 指定宽，@cy 指定高。  
@rotate 为 1 顺时针转 90 度，设为 2 转 180 度，设为 3 为逆时针转 90 度  
@rotate 与 @flags 一般不必指定

### fsysPdfiumObject.save <a id="fsysPdfiumObject.save" href="#fsysPdfiumObject.save">&#x23;</a>
保存 PDF 文件

### fsysPdfiumObject.save(path,fileVersion,flags) <a id="fsysPdfiumObject.save" href="#fsysPdfiumObject.save">&#x23;</a>
保存 PDF 到文件，成功返回 true。  
@path 指定文件路径。  
可选用 @fileVersion 指定文件版本，15 表示版本 1.5。  
@flags 为可选参数，一般不用指定，用法请参考 PDFium 文档

### fsysPdfiumObject.saveAsCopy(callback,fileVersion,flags) <a id="fsysPdfiumObject.saveAsCopy" href="#fsysPdfiumObject.saveAsCopy">&#x23;</a>

```aardio
fsysPdfiumObject.saveAsCopy( function(pWriter,pData,size){  
	/*保存 PDF 回调函数，其他为可选调用参数（不用管）。  
回调参数 pData 为要写入的内存指针，回调参数 size 为待写入长度。  
保存成功请返回非零数值，出错返回 0*/  
})
```

## fsysfsysPdfiumBookmarkObject 成员列表 <a id="fsysfsysPdfiumBookmarkObject" href="#fsysfsysPdfiumBookmarkObject">&#x23;</a>

### fsysfsysPdfiumBookmarkObject.asTree() <a id="fsysfsysPdfiumBookmarkObject.asTree" href="#fsysfsysPdfiumBookmarkObject.asTree">&#x23;</a>
返回书签树状数据表，返回对象可以用作 treeview 控件 insertItem 方法的参数。

### fsysfsysPdfiumBookmarkObject.children() <a id="fsysfsysPdfiumBookmarkObject.children" href="#fsysfsysPdfiumBookmarkObject.children">&#x23;</a>
返回子节点数组，纯数组对象。

### fsysfsysPdfiumBookmarkObject.pageIndex <a id="fsysfsysPdfiumBookmarkObject.pageIndex" href="#fsysfsysPdfiumBookmarkObject.pageIndex">&#x23;</a>
书签对应的 PDF 页码，页码自 1 开始

### fsysfsysPdfiumBookmarkObject.title <a id="fsysfsysPdfiumBookmarkObject.title" href="#fsysfsysPdfiumBookmarkObject.title">&#x23;</a>
书签标题

### 全局常量

### ::PDFium <a id="::PDFium" href="#::PDFium">&#x23;</a>
fsys.pdfium 扩展库加载的 pdfium.dll 模块对象。  

[返回对象:dllModuleObject](https://www.aardio.com/zh-cn/doc/library-reference/raw/_.html#dllModuleObject)

### 自动完成常量
_FPDFBitmap_BGR=2  
_FPDFBitmap_BGRA=4  
_FPDFBitmap_BGRx=3  
_FPDFBitmap_Gray=1  
_FPDFBitmap_Unknown=0  
