心路歷程
為什么要做
在22年9月的某一天,在公司開需求評審時,接到了一個給PDF、圖片添加水印的需求。
做為一個剛工作的CURD程序員,在遇到這些問題時,第一反應是去github上找找有沒有類似的開源框架。
但是,出乎我意料的是竟然沒有一個統一的框架,都是各個文件有著各個文件添加水印的框架。并沒有一個大一統的框架。此時就萌生出一個想法了,我能不能寫一個呢?
于是EasyWatermark出現了,在一開始的想法中,框架的主要的作用就是傳入一個文件,并設置本次要添加的水印,即可在文件中添加水印內容。
但在開發的途中,卻意外連連。
自我懷疑以及堅持下去
從git提交記錄可以發現一點端倪,整個倉庫的提交時間可以大致的分為三個階段
- 2022年11月:框架初期搭建,自我懷疑期
框架剛搭建時,由于已經在工作上實現了PDF添加水印的功能了,所以能夠很快的搭建完初始框架。
但是問題也隨之而來了,那個時候我常常在想,這個框架真的有人用嘛,添加水印這么簡單的功能,為什么要寫一個框架出來呢?
這個時候陷入了深深的懷疑當中,于是乎,開發進度也就停止了下來。
- 2023年2月:確定框架入口類
在2月這個時間點,我也忘記了為什么自己又重新開始了框架的開發😂。
但是在這個月中,實際上是沒有開發任何框架的功能的,只是在想著框架該如何規劃好。
- 項目名稱變更:從
all-watermark
變為easy-watermark
- 增加框架入口類:參照
easy-excel
的使用方式進行了開發,創建了EasyWatermark入口類 - 毫無用處的水印位置計算策略類
寫著寫著代碼,問題又出現了,內部邏輯設計已經規劃好了,但是該如何設計簡單易用的API供其他人使用呢?開發進度又雙叒叕停滯了。
- 以及最近的4月5月
忘記是在4月的哪一天了,在床上刷抖音時看到一個視頻,視頻的大致內容是兩個人,其中一個人讓一個男生去做一件事情,一開始這個男生就說不會,做得不好,別讓他做。那個人又說,我本來就沒想著讓你做的多好,你先去試試。于是乎那個男生就去做了,做完之后覺得,自己做的蠻不錯的。那個人又說一開始肯定做的不好,但是你一直想著做得不好,就不去做,那永遠都不會好。
不要一開始就想要做的多好,重要的是得先開始做,哪怕做的再不好,也好過不去嘗試。
正是看了這個視頻之后,我又想起了我還有一個開源框架仍在開發中,并且開發這個框架的經歷跟視頻的差不多,于是乎我又開始完善的我水印框架了。
在最近的兩個月中,我重構了大部分代碼,定義好了四種水印渲染類型,定義了一個擴展接口用于用戶自定義頁面的水印。
說了這么多,簡單介紹一下我開發的水印框架吧。
Easy-Watermark
框架功能
抽象了各個文件類型對于添加水印的API,內部提供了多種預設水印類型以供使用,無需二次開發。
快速開始
pom文件中引入依賴
<dependency><groupId>org.easywatermark</groupId><artifactId>easy-watermark</artifactId><version>0.0.2</version>
</dependency>
使用水印框架
byte[] result = EasyWatermark.create().file(fileData).text("Easy-Watermark").execute();
支持文件類型
PDF、圖片類型、Office套件文件(仍在開發中)
內置水印類型
- CUSTOM:自定義水印,使用框架抽象的統一方法,對傳入文件的每個頁面進行特殊處理
- CENTER:居中,在頁面的各個居中位置上添加。
- OVERSPREAD:頁面鋪滿,可設置傾斜角度
- DIAGONAL:頁面對角水印
最后
更多的信息可以去到倉庫頁面查看:https://github.com/AzirZsk/easy-watermark,如果覺得我的框架寫的還不錯,請幫忙在GitHub點個??Star,你的支持是我開發的動力。