软件简介

x-easypdf基于pdfbox构建而来,极大降低使用门槛,以组件化的形式进行pdf的构建。简单、易用,3分钟即可上手,人人都是pdf的构建高手

特性
1. 快速上手
> 花费3分钟看示例,即可掌握使用方法
2. 自动换行分页
> 文本超出单行显示时,即可自动换行;内容超出单页显示时,即可自动分页
3. 模板填充
> 使用内置方法,即可轻松实现模板填充
4. 组件化
> 页面所有内容均采用组件化形式进行构建,使用不同的组件组合方式,即可构造出理想的文档
5. 扩展灵活
> 只需实现系统提供的接口,即可完成自定义的组件扩展

软件架构

![软件架构](https://images.gitee.com/uploads/images/2020/0331/134211_0652923a_1494292.png "xpdf整体架构.png")

1. document(文档):PDF文档
2. page(页面):若干个页面组成PDF文档
3. watermark(水印):每个页面可设置页面级别的独立水印,也可设置文档级别的全局水印,优先级为:页面级别>文档级别
4. component(组件):核心,每个页面由若干个组件构成
> text(文本组件):已提供,文本写入组件

> line(线条组件):已提供,线条写入组件

> image(图片组件):已提供,图片写入组件

> table(表格组件):未提供,将在下一个版本提供,表格写入组件,cell(单元格)->row(行)->table(表格)

> 后续将添加更多其他方便实用的组件。。。

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (5)

加载中
支持HTML吗
10/10 22:07
回复
举报
支持一下
2020/06/16 12:55
回复
举报
棒👍
2020/06/16 12:41
回复
举报
愣是看了半天源码,才知道是基于JAVA的……
2020/04/02 21:24
回复
举报
2020/03/31 18:36
回复
举报
更多评论
发表了资讯
11/25 16:28

x-easypdf v2.5.0 正式版发布,新增书签设置

本次更新内容如下: 新特性: 1. XEasyPdfDocument文档新增添加页面列表的方法 2. XEasyPdfDocument文档新增添加文档书签的方法 3. XEasyPdfPage页面新增添加组件列表的方法 4. XEasyPdfPage页面新增页面旋转设置的方法 5. XEasyPdfPage页面新增关闭旋转固有页面的方法 6. XEasyPdfText文本组件新增设置自动缩进的方法 7. XEasyPdfImage图片组件新增设置旋转弧度的方法 原有变更: 1. XEasyPdfPage页面移除开启页脚的方法 2. X...

2
10
发表了资讯
10/10 16:20

x-easypdf v2.4.0 正式版发布

本次更新内容如下: 新特性: 1. 生成pdf时,根据传入路径,自动创建不存在的目录 2. 新增页面组件XEasyPdfPage设置与获取页面背景图片方法 3. 新增pdf助手XEasyPdfHandler获取当前页码占位符方法 4. 内置细、粗、正常三种开源中文字体(思源字体) 5. 新增设置默认字体样式方法(粗、细、正常,默认为正常)(issue#I3SAUR) 6. 新增图片组件XEasyPdfImage开启图片垂直居中方法 7. 优化文本分行算法 8. 优化表单填充逻辑 原有变...

0
14
发表了资讯
05/18 11:14

x-easypdf v2.3.0 正式版发布

由于最近工作繁忙,导致更新比较缓慢,抱歉了各位,这将是2.X.X的最后一个版本,以后不做新功能更新,只做bug维护,下一版本将同步更新pdfbox3.X.X版本 本次更新内容如下: 新特性: 1. 新增XEasyPdfTable组件表格边框宽度设置(issue#I39497) 2. 新增简单表格(单行单列)组件XEasyPdfSimpleTable(issue#I2C4RD) 3. 新增设置XEasyPdfWatermark组件字体颜色方法 4. 新增XEasyPdfWatermark组件内水印与外水印模式 5. 新增XEasyPdfT...

0
14
发表于多媒体处理专区
01/04 10:05

x-easypdf v2.2.0 正式版发布,表格增强

x-easypdf v2.2.0 已经发布,x-easypdf基于pdfbox构建而来,极大降低使用门槛,以组件化的形式进行pdf的构建。简单易用,仅需一行代码,便可完成pdf的操作。 本次更新内容如下: 新特性: 1. 新增文档改变页面尺寸方法 2. 新增文档提取器简单表格的文本内容提取(单行单列) 3. 表格组件功能增强,已支持添加图片与文本,更灵活的表格定义 原有变更: 1. 移除XEasyPdfUtil工具类 2. 文档XEasyPdfDocument#image方法变更为imager,...

4
21
发表于开发技能专区
2020/12/10 09:40

x-easypdf v2.1.0 正式版发布

一个用搭积木的方式构建pdf的框架(基于pdfbox) 本次更新内容如下: 新特性: 1. 添加页面背景图片设置 2. 添加页眉背景图片设置 3. 添加页脚背景图片设置 4. 添加文档移除页面方法 5. 添加文档文本内容提取方法 6. 添加文档打印方法 7. 所有组件添加设置内容模式方法(覆盖、追加、前置,默认为追加) 原有变更: 1. 变更开源协议为木兰2.0 2. 线条组件XEasyPdfLine变更为接口,原有XEasyPdfLine类更名为XEasyPdfBaseLine 3. 文...

2
13
发表于开发技能专区
2020/06/16 09:13

x-easypdf v2.0.0 版本发布

一行代码搞定pdf的框架 本次更新如下: 1.新增表格组件 2.新增页眉组件 3.新增页脚组件 4.新增方形组件 5.文档组件支持权限设置,支持文档属性设置,支持背景色设置,支持全局字体设置,支持全局页眉页脚设置,支持文档拆分,支持文档合并,支持页面转图片 6.页面组件支持页面字体设置,支持页眉页脚设置,支持页眉背景色设置 7.新增XEasyPdfHandler,用于统一的组件构建 8.XEasyPdfUtil用于单一操作,例如创建,追加,插入,填...

1
37
发表于软件架构专区
2020/03/31 17:12

x-easypdf v1.1.0 发布

x-easypdf基于pdfbox构建而来,极大降低使用门槛,以组件化的形式进行pdf的构建。简单、易用,3分钟即可上手,人人都是pdf的构建高手 本次更新如下: 1. 由于与现在软件名重名,故变更项目名(原为xpdf) 2. 统一源文件前缀为XEasyPdf 3. 新增水印组件 4. 新增图片组件 5. 新增模板填充 由于表格组件遇到些许问题,本次更新暂不提供,将在下个版本进行更新,感谢大家支持,谢谢...

3
24
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
2020/09/18 15:28

x[:,:,None,:]-x[:,:,:,None]

x[:,:,None,:]-x[:,:,:,None] None相当于在数组中多加一个维度。 输入: x = np.arange(24).reshape((2,3,4)) 输出: array([[[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]], [[12, 13, 14, 15], [16, 17, 18, 19], [20, 21, 22, 23]]]) x[:,:,None,:] 输出,形状(2,3,1,4): array([[[[ 0, 1, 2, 3]], [[ 4, 5, 6, 7]], [[ 8, 9, 10, 11]]],...

0
0
发表了博客
2019/01/07 09:52

x == (x = y) 不等于 (x = y) == x ?

> 简评:不瞒你说,我现在数数都是从 0 开始数的,整数是 1024。 有这么一个 Java 程序: ``` class Quirky { public static void main(String[] args) { int x = 1; int y = 3; System.out.println(x == (x = y)); // false x = 1; // reset System.out.println((x = y) == x); // true } } ``` 学习数学时我们学会了操作符优先原则,按照这个原则,这里的两次输出应该都是 true 才对,可为什么两次的输出结果不同呢? 其实 Ja...

0
1
发表了博客
2019/07/18 10:31

x == (x = y) 不等于 (x = y) == x ?

**简评:**不瞒你说,我现在数数都是从 0 开始数的,整数是 1024。 **有这么一个 Java 程序:** class Quirky { public static void main(String[] args) { int x = 1; int y = 3; System.out.println(x == (x = y)); // false x = 1; // reset System.out.println((x = y) == x); // true }} 学习数学时我们学会了操作符优先原则,按照这个原则,这里的两次输出应该都是 true 才对,可为什么两次的输出结果不同呢? 其实 Java...

0
0
发表了博客
2015/06/05 10:11

9999二进制 及 x=x&(x-1)问题

题目:以下代码结果是多少? # include <iostream> using namespace std; int func(int x) { int count = 0; while(x) { count ++; x=x&(x-1); } return count; } int main(int argc, char **args) { cout << func(9999) <<endl; return 0; } A. 8 B. 9 C. 10 D. 11 看到这道题,结合后面的选项,我想,题目考察的肯定不是简单的计算问题,选项上面只有8,9,10和11 这几种情况,于是,我就想,先把9999化成二进制的形式:1001 ...

0
5
发表于DevOps专区
2020/05/05 22:18

使用 if x is not None 还是if not x is None

前几天在写if判断时,突然很纠结是用if x is not None 还是if not x is None,哪个更加合理,性能有没差异,有没有坑,故意到网上详细查了一下,整理如下 代码中经常会有变量是否为None的判断,如: 第一种: if x is not None: 第二种: if not x is None: 它们之间是否存在某种轻微的性能差异呢?通过测试发现没有差异,因为它们编译后生成了相同的字节码: import disdef a(x): return x is not None def b(x): return not x is ...

0
0
发表了博客
2013/02/12 00:00

x & (x - 1)==0

判断一个整数x是否是2的N次方。   方法之一是判断x & (x - 1)==0。若为True,则x是2的N次方;若为False,则x不是2的N次方。   有人质疑,他证明了“2的n次方一定符合这个条件”, 却并没有证明“符合这个条件的一定是2的n次方”呀!更没有证明“不符合条件的一定不是2的n次方”呀。      现在,从两个方面来证明这个方法的正确性   证明之前,先给出一些定义   &运算的定义:A & B 表示将A和B转化为二进制,然后按照...

0
0
发表于DevOps专区
2020/05/08 20:47

使用 if x is not None 还是if not x is None

前几天在写if判断时,突然很纠结是用if x is not None 还是if not x is None,哪个更加合理,性能有没差异,有没有坑,故意到网上详细查了一下,整理如下 代码中经常会有变量是否为None的判断,如: 第一种: if x is not None: 第二种: if not x is None: 它们之间是否存在某种轻微的性能差异呢?通过测试发现没有差异,因为它们编译后生成了相同的字节码: import disdef a(x): return x is not None def b(x): return not x is ...

0
0
发表了博客
2019/04/30 10:32

np.random.shuffle(x)与np.random.permutation(x)

来自:https://blog.csdn.net/brucewong0516/article/details/79012233 将数组打乱随机排列 两种方法: np.random.shuffle(x):在原数组上进行,改变自身序列,无返回值。 np.random.permutation(x):不在原数组上进行,返回新的数组,不改变自身数组。 1. np.random.shuffle(x) (1)、一维数组 import numpy as np arr = np.arange(10) print(arr) np.random.shuffle(arr) print(arr) (2)、对多维数组进行打乱排列时,默...

0
0
发表了博客
2012/11/28 15:43

x:Key和x:Name的区别

x:Key用在xaml Resources,ResourceDictionary需要key来访问 x:Name用在ResourceDictionary以外任何地方,可以使用x:Name在code-behind访问对象 x:Key唯一地标识作为资源创建和引用且存在于 ResourceDictionary 中的元素。 x:Name 唯一标识对象元素,以便于从代码隐藏或通用代码中访问实例化的元素。 x:key和x:name的区别,前者是为xaml中定义的资源文件提供唯一的标识,后者是为xaml中定义的控件元素提供唯一标识。 原文链接:...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
5 评论
168 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部