最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go使用github.com/pdfcpu/pdfcpu處理PDF的操作指南

 更新時(shí)間:2026年03月21日 13:44:08   作者:程序員愛釣魚  
在 Go 生態(tài)中,處理 PDF 文件一直是一個(gè)比較復(fù)雜的需求,pdfcpu 是一個(gè)功能強(qiáng)大的 Go 開源庫(kù),專門用于 PDF 的解析與處理,本文給大家介紹了Go使用github.com/pdfcpu/pdfcpu處理PDF的操作指南,需要的朋友可以參考下

在 Go 生態(tài)中,處理 PDF 文件一直是一個(gè)比較復(fù)雜的需求,例如:

PDF 合并與拆分 頁(yè)面裁剪與旋轉(zhuǎn) 添加水印 提取文本或圖片 壓縮優(yōu)化 PDF

pdfcpu 是一個(gè)功能強(qiáng)大的 Go 開源庫(kù),專門用于 PDF 的解析與處理。它不僅功能全面,而且是純 Go 實(shí)現(xiàn),無需依賴外部工具(如 Ghostscript),非常適合用于服務(wù)器程序或跨平臺(tái)工具開發(fā)。

一、pdfcpu 簡(jiǎn)介

pdfcpu 是一個(gè)完整的 PDF 處理解決方案,支持:

PDF 創(chuàng)建 PDF 修改 PDF 校驗(yàn) PDF 優(yōu)化 PDF 加密與解密

它既可以作為 Go 庫(kù)使用,也可以作為 CLI 工具直接使用。

安裝方式:

go get github.com/pdfcpu/pdfcpu

或者安裝命令行工具:

go install github.com/pdfcpu/pdfcpu/cmd/pdfcpu@latest

二、基礎(chǔ)使用:加載 PDF

在 Go 中使用 pdfcpu,通常從讀取配置開始:

package main

import (
	"github.com/pdfcpu/pdfcpu/pkg/api"
	"github.com/pdfcpu/pdfcpu/pkg/pdfcpu"
)

func main() {

	conf := pdfcpu.NewDefaultConfiguration()

	_ = conf
}

大部分 API 都需要傳入 conf 配置對(duì)象。

三、合并 PDF

合并多個(gè) PDF 是最常見需求之一。

package main

import (
	"github.com/pdfcpu/pdfcpu/pkg/api"
	"github.com/pdfcpu/pdfcpu/pkg/pdfcpu"
)

func main() {

	conf := pdfcpu.NewDefaultConfiguration()

	files := []string{"a.pdf", "b.pdf", "c.pdf"}

	api.MergeCreateFile(files, "output.pdf", conf)
}

效果:

多個(gè) PDF 合并為一個(gè)文件。

四、拆分 PDF

將一個(gè) PDF 按頁(yè)拆分:

api.SplitFile("input.pdf", "output_dir", 1, conf)

參數(shù)說明:

  • 每 1 頁(yè)拆分一次
  • 輸出到指定目錄

適用于:

發(fā)票拆分 合同分頁(yè) 批量處理

五、提取頁(yè)面

提取指定頁(yè)生成新 PDF:

api.ExtractPagesFile("input.pdf", "output.pdf", []string{"1-3", "5"}, conf)

表示提?。?/p>

第 1 到 3 頁(yè) 第 5 頁(yè)

六、添加水印

pdfcpu 支持文本和圖片水印。

添加文本水印:

wm, _ := pdfcpu.ParseTextWatermarkDetails("CONFIDENTIAL", "rot:45", true)

api.AddWatermarksFile("input.pdf", "output.pdf", nil, wm, conf)

效果:

PDF 頁(yè)面上出現(xiàn)斜著的水印文字。

七、壓縮 PDF

用于減小文件體積:

api.OptimizeFile("input.pdf", "output.pdf", conf)

適用于:

上傳優(yōu)化 存儲(chǔ)節(jié)省 網(wǎng)絡(luò)傳輸

八、加密與解密

加密 PDF:

conf.UserPW = "1234"
conf.OwnerPW = "admin"

api.EncryptFile("input.pdf", "output.pdf", conf)

解密 PDF:

conf.UserPW = "1234"

api.DecryptFile("input.pdf", "output.pdf", conf)

適用于:

文檔保護(hù) 權(quán)限控制

九、旋轉(zhuǎn)頁(yè)面

api.RotateFile("input.pdf", "output.pdf", 90, []string{"1-"}, conf)

表示:

從第 1 頁(yè)開始全部旋轉(zhuǎn) 90 度。

十、裁剪頁(yè)面

api.CropFile("input.pdf", "output.pdf", []string{"1-"}, "10 10 500 700", conf)

用于裁剪頁(yè)面區(qū)域。

十一、CLI 使用(非常實(shí)用)

pdfcpu 也提供命令行工具,非常適合日常使用。

合并 PDF:

pdfcpu merge out.pdf a.pdf b.pdf

拆分:

pdfcpu split in.pdf outdir

壓縮:

pdfcpu optimize in.pdf out.pdf

添加水?。?/p>

pdfcpu watermark add "CONFIDENTIAL" in.pdf out.pdf

非常適合做批處理工具。

十二、實(shí)際開發(fā)場(chǎng)景

在真實(shí)項(xiàng)目中,pdfcpu 常見應(yīng)用包括:

文檔管理系統(tǒng)(PDF 合并/拆分) 在線合同處理 發(fā)票系統(tǒng) 電子書處理 PDF 壓縮服務(wù) 自動(dòng)水印系統(tǒng)

例如一個(gè)簡(jiǎn)單的 PDF 合并服務(wù):

func mergePDF(files []string, output string) error {
	conf := pdfcpu.NewDefaultConfiguration()
	return api.MergeCreateFile(files, output, conf)
}

十三、優(yōu)缺點(diǎn)分析

優(yōu)點(diǎn):

純 Go 實(shí)現(xiàn),無依賴 功能全面(幾乎覆蓋 PDF 常見需求) 支持 CLI + API 跨平臺(tái)(Windows / macOS / Linux)

缺點(diǎn):

API 相對(duì)復(fù)雜 文檔不算特別友好 部分高級(jí)功能學(xué)習(xí)成本較高

十四、與其他庫(kù)對(duì)比

常見 PDF 庫(kù):

pdfcpu(純 Go,功能全) unidoc(商業(yè)庫(kù),功能更強(qiáng)) gofpdf(生成 PDF,不擅長(zhǎng)修改)

總結(jié):

  • 如果你需要 修改 PDF → pdfcpu
  • 如果你需要 生成 PDF → gofpdf
  • 如果你需要 企業(yè)級(jí)功能 → unidoc

總結(jié)

pdfcpu 是 Go 生態(tài)中最強(qiáng)大的 PDF 處理庫(kù)之一,適用于各種 PDF 操作場(chǎng)景。

核心能力包括:

PDF 合并與拆分 頁(yè)面提取與裁剪 水印添加 壓縮優(yōu)化 加密解密

它既可以用于后端服務(wù)開發(fā),也可以用于構(gòu)建 CLI 工具,是 Go 開發(fā)者處理 PDF 的首選方案之一。

如果你的項(xiàng)目涉及:

文件處理系統(tǒng) 文檔自動(dòng)化 批量辦公工具 PDF 在線服務(wù)

那么 pdfcpu 基本可以一站式解決需求。

以上就是Go使用github.com/pdfcpu/pdfcpu處理PDF的操作指南的詳細(xì)內(nèi)容,更多關(guān)于Go github.com/pdfcpu/pdfcpu處理PDF的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Golang與其他語言不同的九個(gè)特性

    Golang與其他語言不同的九個(gè)特性

    近來關(guān)于對(duì)Golang的討論有很多,七牛的幾個(gè)大牛們也斷定Go語言在未來將會(huì)快速發(fā)展,并且很可能會(huì)取代Java成為互聯(lián)網(wǎng)時(shí)代最受歡迎的編程語言。本文將帶你了解它不同于其他語言的九個(gè)特性
    2021-09-09
  • Go語言單元測(cè)試模擬服務(wù)請(qǐng)求和接口返回

    Go語言單元測(cè)試模擬服務(wù)請(qǐng)求和接口返回

    這篇文章主要為大家介紹了Go語言單元測(cè)試模擬服務(wù)請(qǐng)求和接口返回示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 詳解golang中bufio包的實(shí)現(xiàn)原理

    詳解golang中bufio包的實(shí)現(xiàn)原理

    這篇文章主要介紹了詳解golang中bufio包的實(shí)現(xiàn)原理,通過分析golang中bufio包的源碼,來了解為什么bufio能夠提高文件讀寫的效率和速度
    2018-01-01
  • Golang算法問題之?dāng)?shù)組按指定規(guī)則排序的方法分析

    Golang算法問題之?dāng)?shù)組按指定規(guī)則排序的方法分析

    這篇文章主要介紹了Golang算法問題之?dāng)?shù)組按指定規(guī)則排序的方法,結(jié)合實(shí)例形式分析了Go語言數(shù)組排序相關(guān)算法原理與操作技巧,需要的朋友可以參考下
    2017-02-02
  • Go語言庫(kù)系列之dotsql詳解

    Go語言庫(kù)系列之dotsql詳解

    這篇文章主要介紹了Go語言庫(kù)系列之dotsql的相關(guān)知識(shí),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 利用Golang解析json數(shù)據(jù)的方法示例

    利用Golang解析json數(shù)據(jù)的方法示例

    Go提供了原生的JSON庫(kù),并且與語言本身有效的集成在了一起。下面這篇文章將給大家介紹關(guān)于利用Golang解析json數(shù)據(jù)的方法,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí),需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-07-07
  • Go語言刪除文本文件中的指定行操作代碼

    Go語言刪除文本文件中的指定行操作代碼

    假設(shè)現(xiàn)在有一個(gè)文本文件,我們需要?jiǎng)h除文件中亂碼的行。我們可以使用go的os庫(kù)來處理文件,遍歷整個(gè)文件然后將除過亂碼的行寫入一個(gè)新文件,以此來實(shí)現(xiàn)我們的需求,這篇文章主要介紹了Go語言刪除文本文件中的指定行,需要的朋友可以參考下
    2023-12-12
  • golang panic 函數(shù)用法示例詳解

    golang panic 函數(shù)用法示例詳解

    在Go語言中,panic用于觸發(fā)不可恢復(fù)的錯(cuò)誤,終止函數(shù)執(zhí)行并逐層向上觸發(fā)defer,最終若未被recover捕獲,程序會(huì)崩潰,recover用于在defer函數(shù)中捕獲panic,恢復(fù)程序流程,建議優(yōu)先返回error,僅在嚴(yán)重錯(cuò)誤或不可恢復(fù)場(chǎng)景下使用panic,并在關(guān)鍵位置recover,感興趣的朋友一起看看吧
    2025-03-03
  • go語言使用io和bufio包進(jìn)行流操作示例詳解

    go語言使用io和bufio包進(jìn)行流操作示例詳解

    這篇文章主要為大家介紹了go語言使用io和bufio包進(jìn)行流操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • 使用Go實(shí)現(xiàn)TLS服務(wù)器和客戶端的示例

    使用Go實(shí)現(xiàn)TLS服務(wù)器和客戶端的示例

    本文主要介紹了Go實(shí)現(xiàn)TLS服務(wù)器和客戶端的示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12

最新評(píng)論

阿拉尔市| 昌平区| 临沂市| 保康县| 云霄县| 荥经县| 全南县| 双江| 武胜县| 盐山县| 永兴县| 涞源县| 宜州市| 册亨县| 平凉市| 吉林省| 九江县| 绵阳市| 岗巴县| 年辖:市辖区| 阳春市| 凯里市| 临朐县| 闽清县| 大兴区| 永顺县| 酒泉市| 信丰县| 手游| 喜德县| 永吉县| 望谟县| 延吉市| 化隆| 瑞安市| 皋兰县| 天长市| 巴东县| 凤翔县| 延边| 兴宁市|