# changetopdf
**Repository Path**: gdty/changetopdf
## Basic Information
- **Project Name**: changetopdf
- **Description**: 基于itext7+freemarker模板导出pdf,先生成html字符串再转成pdf,已解决中文问题,图片能正常显示
- **Primary Language**: Unknown
- **License**: MulanPSL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 2
- **Created**: 2025-09-26
- **Last Updated**: 2026-05-06
## Categories & Tags
**Categories**: Uncategorized
**Tags**: Gitea
## README
# changetopdf
## 📜介绍
基于iText7和Freemarker模板实现PDF导出功能。通过先生成HTML字符串再转换为PDF的方式,已解决中文显示问题,支持正常显示图片。
## 📦安装指南
```
gdteyu-maven
public
https://maven.cnb.cool/gdteyu/maven/-/packages/
true
true
com.gdty
changetopdf
xxx
```
## 🔧 使用示例
### HTML转PDF
```
FtlToPDFUtil pdfUtil = FtlToPDFUtil.getInstance("templates/");
pdfUtil.change("template.ftl", dataMap, "output.pdf");
```
### 直接生成PDF字节流
```
FtlToPDFUtil pdfUtil = FtlToPDFUtil.getInstance("templates/");
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
pdfUtil.change("template.ftl", dataMap, outputStream);
```
## 📁模板配置
支持多种模板加载方式:
- 本地目录加载
- 类路径加载
- 多路径加载
## 🖨️ 打印功能
提供直接打印PDF的功能:
```
ByteArrayOutputStream pdfStream = ...; // PDF内容流
Printer.printToDefaultPrinter(pdfStream); // 使用默认打印机
```
## 📝Graalvm
```
//分析采集,生成配置文件,config文件夹已有相关配置(该操作需要运行起来)
java -agentlib:native-image-agent=config-output-dir=config -cp "changetopdf-tests.jar;lib/*" com.itextpdf.html2pdf.test.Test
//生成可执行文件
native-image -cp "changetopdf-tests.jar;lib/*" com.itextpdf.html2pdf.test.Test -H:+ReportExceptionStackTraces --no-fallback --link-at-build-time -H:ConfigurationFileDirectories=config -H:+AddAllCharsets --report-unsupported-elements-at-runtime --enable-url-protocols=https,http
```
## 🔥更新日志
### v1.1.0
- 正式版本上线
- 完善中文支持
- 稳定性优化
## 📄字体支持
内置以下字体支持:
- 微软雅黑系列(常规/加粗/轻量)
- 宋体系列(常规/加粗)
> **注意**:使用自定义字体时,FTL 模板中必须通过 CSS `font-family` 声明对应的字体名称,否则字体不会生效。例如:
> ```html
>
> ```
> `font-family` 的值需与字体文件内部名称一致:
> - 使用 `simsun.ttc` 时:`font-family: SimSun;`
> - 使用 `msyh.ttc` 时:`font-family: Microsoft YaHei;`
## 🧪测试示例
包含完整测试用例:
- `ChangeToPDFTest` - PDF转换测试
- `FreemarkPrintTest` - 模板打印测试
- `test1.ftl` - 测试模板文件
## 📄许可证
请查看项目根目录的LICENSE文件