YStudio Y++

PDF类

Y++ / YStudio 开发文档 · 一点滴

类对象支持库。路径:支持库 → 扩展类库 → PDF类。

类型名写「PDF类」。声明时自动创建。

基于 PDFium 二次开发(推荐 bblanchon 无 V8 预编译,单架构约 7MB;勿用带 V8 的胖包)。

运行依赖

部分 说明
桥接代码 编进用户程序
pdfium.dll 与 exe 同级,或 plugins/supportlib.pdf/bin/<arch>/

查找顺序:置库路径(若调用)→ 程序目录 pdfium.dll → plugins/supportlib.pdf/bin/<arch>/pdfium.dll。

预览请用 图片框:渲染为图片 → PNG/JPEG 字节集 → 图片框.图片(不要浏览器控件)。

快速开始

生成

PDF类 p
如果 (!p.新建()) {
    输出(p.取错误())
    返回()
}
整数 页 = p.加页()
p.画文本(页, 72, 750, "你好,Y++ PDF", 18, "#C41E3A")
p.画线(页, 72, 730, 520, 730, 1.5, "#C41E3A")
如果 (!p.保存(合并路径(取程序目录(), "out.pdf"))) {
    输出(p.取错误())
}
p.关闭()

打开 / 渲染 / 抽文本

PDF类 p
如果 (!p.打开(合并路径(取程序目录(), "out.pdf"))) {
    输出(p.取错误())
    返回()
}
输出("页数=" + 到文本(p.取页数()))
输出("尺寸=" + 到文本(p.取页宽(1)) + "x" + 到文本(p.取页高(1)))
输出(p.取页文本(1, 200))
字节集 png = p.渲染为图片(1, 96)
图片预览.图片 = png
图片预览.置图片显示(1, 100)
p.关闭()

加密 PDF:打开(路径, "密码")。密码错或缺失时打开失败,看 取错误()。

打开后继续编辑

打开后可加页、画文本/线/矩形、嵌图、删页/移页、合并,再保存:

PDF类 p
p.打开("a.pdf")
p.画文本(1, 72, 100, "批注", 12, "#C41E3A")
p.加页()
p.保存("a_edited.pdf")
p.关闭()

说明:是在页面上叠加内容或增删页,不是 Word 式改原有段落文字。当前引擎不能写出加密 PDF(可读加密文档)。

合并

PDF类 p
p.新建()
p.加页()
p.合并文件("b.pdf", "", "1-2", 0)   ' 页范围空=全部;插入页号 0=末尾
p.保存("merged.pdf")

方法摘要

页号对用户均为 从 1 起。颜色格式:#RRGGBB 或 #AARRGGBB;空=黑(或背景默认白)。

方法 说明
新建 空白可写文档
打开(路径, [密码]) 打开已有 PDF;可继续编辑
关闭 / 是否已打开 / 重置 / 取错误 / 取页数
加页([宽点=595],[高点=842],[插入页号=0]) 默认 A4;插入页号 0=末尾,≥1=插到该页前。返回页号,失败 -1
删页(页号) / 移页(源,目标)
取页宽 / 取页高 单位点
画文本(页号, X, Y, 文本, [字号=12],[颜色],[字体路径]) 原点左下(点)。字体路径空=系统中文。部分符号会归一化,减少 □
画线(页号, X1,Y1,X2,Y2, [线宽=1],[颜色])
画矩形(页号, X,Y,宽,高, [填充=0],[线宽=1],[填充色],[描边色]) 填充非 0 时填充
嵌图片(页号, 路径, X, Y, 宽, 高, [保持比例=0],[不透明度=100]) WIC 读 PNG/JPEG 等
渲染为图片(页号, [DPI=96],[格式=0],[质量=90],[背景色]) 格式 0=PNG、1=JPEG
取页文本(页号, [最大字符数=0]) 0=不限制
合并文件(路径, [密码],[页范围],[插入页号=0]) 页范围如 "1,3,5-7"
保存(路径, [标志=0]) 标志 1=尽量增量

示例

仓库:examples/PDF演示(生成多页演示、图片框翻页、删当前页)。