首页
/ LibHaru 开源PDF库教程

LibHaru 开源PDF库教程

2026-01-16 10:16:03作者:董斯意

1. 项目介绍

LibHaru 是一个跨平台的开源库,用于生成PDF文件。它支持创建线条、文本、图像、大纲文本注解、链接注解等基本功能。此外,LibHaru还允许压缩文档、嵌入PNG和JPEG图片、添加Type1字体和TrueType字体以及创建加密的PDF文件。值得注意的是,此库目前不支持读取或编辑已存在的PDF文件。

2. 项目快速启动

环境准备

确保你的系统中安装了以下组件:

  • C编译器(如GCC)
  • Make工具

安装步骤

  1. 克隆仓库到本地:

    git clone https://github.com/libharu/libharu.git
    
  2. 进入项目目录:

    cd libharu
    
  3. 配置并编译项目(这一步可能因操作系统不同而略有差异):

    ./configure
    make
    
  4. 安装到系统路径(需要管理员权限):

    sudo make install
    

编写简单示例

以下是一个使用C语言的基本示例,创建一个简单的PDF文件:

#include <hpdf.h>

int main() {
    HPDF_Doc pdf = HPDF_New(NULL, NULL);
    HPDF_Page page = HPDF_AddPage(pdf);

    HPDF_Page_SetWidth(page, 210 * HPDF_MM);
    HPDF_Page_SetHeight(page, 297 * HPDF_MM);

    HPDF_Font font = HPDF_GetFont(pdf, "Helvetica", NULL);
    HPDF_Page_SetFontAndSize(page, font, 12);

    HPDF_Page_BeginText(page);
    HPDF_Page_ShowText(page, "Hello World!");
    HPDF_Page_EndText(page);

    const char* filename = "hello.pdf";
    HPDF_SaveAsToFile(pdf, filename);
    HPDF_Free(pdf);

    return 0;
}

编译此示例:

gcc example.c -lharu -o hello_pdf

运行生成PDF:

./hello_pdf

3. 应用案例和最佳实践

  1. 嵌入图像: 使用HPDF_LoadPngImageFromFile()函数加载PNG图像,然后使用HPDF_Page_DrawImage()在页面上绘制。
  2. 加密PDF: 在创建文档时调用HPDF_SetEncryptionMode()设置密码保护。
  3. 多语言支持: 利用LibHaru支持多种编码,可以轻松创建包含非ASCII字符的PDF。

最佳实践:

  • 总是在使用资源(如PDF对象)后释放它们,以避免内存泄漏。
  • 根据需求选择合适的安全模式,防止未经授权的复制或编辑PDF。

4. 典型生态项目

  • PHP绑定: libharu-php 提供PHP接口与LibHaru交互。
  • Python绑定: pyharu 是一个Python封装库,使Python程序员能够利用LibHaru的功能。
  • Ruby绑定: ruby-haru 将LibHaru的功能暴露给Ruby程序员。

通过这些生态系统中的绑定,开发者可以在各自熟悉的编程环境中轻松地利用LibHaru的功能来生成PDF文件。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
docsdocs
暂无描述
Markdown
827
5.48 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
494
515
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
783
1.57 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
800
1.14 K
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
970
2.28 K
kernelkernel
deepin linux kernel
C
32
16
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
480
312
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.01 K
766
cannbot-skillscannbot-skills
CANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体,本仓库为其提供可复用的 Skills 模块。
Markdown
1.26 K
808
cann-learning-hubcann-learning-hub
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
647
284