1. 产品
  2.   PDF格式
  3.   GO
  4.   unipdf  
 
  

用于 PDF 文档创建和处理的 Go API 

开源 Go 库,使开发人员能够创建、编辑、操作和转换 PDF 文档。

unipdf 是一个开源的 Go 库,可以轻松处理与 PDF 文档创建和操作相关的所有查询。该库在双重许可下可用,其中 AGPL 许可可用于开源软件开发。该库为生成具有高级文本、绘图和图像的 PDF 文档提供了完整的支持。

开源 unipdf 库支持处理和优化 PDF 文档的几种常见和高级功能,例如创建 PDF 报告、生成 PDF 报告、创建发票、段落创建和处理、合并和拆分 PDF 页面、旋转页面、从PDF 文件、将 PDF 导出为 CSV、将图像转换为 PDF、压缩和优化 PDF、水印 PDF 文件、复合字体(Unicode 字符)支持、数字签名等等。

.

Previous Next

unipdf 入门

要在您的系统上安装 unipdf,请运行以下命令。 

通过 GitHub 安装 gofpdf

go get github.com/unidoc/unipdf/v3

如需最新更新,请访问产品发布页面

通过 Go API 生成 PDF 报告

开源 unipdf API 为开发人员提供了在自己的 Go 应用程序中创建 PDF 报告的能力。该库允许开发人员有效地处理 PDF 文档,并支持轻松地将图像、表格、页眉、页脚等添加到 PDF 报告中。您还可以使用几行代码将动态内容放入 PDF 报告中。

通过 Go API 将 PDF 文件转换为 CSV

unipdf 库使软件开发人员能够在自己的 Go 应用程序中将 PDF 文件转换为 CSV 文件格式。 PDF 到 Excel 转换器对于商业和研究机构来说是一个非常有用的工具。它非常易于使用,并提供从 PDF 中提取 TextMarks 的功能,并将它们组合成单词、行和列以进行 CSV 数据提取。

将图像插入 PDF

开源 unipdf API 使软件程序员能够将自己选择的图像添加到 GO 应用程序内的 PDF 文档中。它使开发人员的工作更轻松,同时将图像放置在 PDF 文档中,而不必担心坐标。您只需要提供图像路径和大小,而不用担心坐标。该库支持流行的图像格式,例如 JPEG、PNG、GIF、TIFF 等。

 // Images to PDF.
func imagesToPdf(inputPaths []string, outputPath string) error {
	c := creator.New()
	for _, imgPath := range inputPaths {
		common.Log.Debug("Image: %s", imgPath)
		img, err := c.NewImageFromFile(imgPath)
		if err != nil {
			common.Log.Debug("Error loading image: %v", err)
			return err
		}
		img.ScaleToWidth(612.0)
		// Use page width of 612 points, and calculate the height proportionally based on the image.
		// Standard PPI is 72 points per inch, thus a width of 8.5"
		height := 612.0 * img.Height() / img.Width()
		c.SetPageSize(creator.PageSize{612, height})
		c.NewPage()
		img.SetPos(0, 0)
		_ = c.Draw(img)
	}
	err := c.WriteToFile(outputPath)
	return err
}
  

为 PDF 文档添加密码

免费的 unipdf API 使开发人员能够通过使用 Go 命令向其应用密码来保护他们的 PDF 文档。您可以限制用户打开和阅读 PDF 文档。您还可以设置所有者密码以授予对 PDF 文件的完全访问权限。此外,您还可以限制用户对 PDF 文档的某些部分进行任何类型的更改。

func protectPdf(inputPath string, outputPath string, userPassword, ownerPassword string) error {
	permissions := security.PermPrinting | // Allow printing with low quality
		security.PermFullPrintQuality |
		security.PermModify | // Allow modifications.
		security.PermAnnotate | // Allow annotations.
		security.PermFillForms |
		security.PermRotateInsert | // Allow modifying page order, rotating pages etc.
		security.PermExtractGraphics | // Allow extracting graphics.
		security.PermDisabilityExtract // Allow extracting graphics (accessibility)
	encryptOptions := &model.EncryptOptions{
		Permissions: permissions,
	}
	f, err := os.Open(inputPath)
	if err != nil {
		return err
	}
	defer f.Close()
	pdfReader, err := model.NewPdfReader(f)
	if err != nil {
		return err
	}
	isEncrypted, err := pdfReader.IsEncrypted()
	if err != nil {
		return err
	}
	if isEncrypted {
		return fmt.Errorf("The PDF is already locked (need to unlock first)")
	}
	// Generate a PdfWriter instance from existing PdfReader.
	pdfWriter, err := pdfReader.ToWriter(nil)
	if err != nil {
		return err
	}
	// Encrypt document before writing to file.
	err = pdfWriter.Encrypt([]byte(userPassword), []byte(ownerPassword), encryptOptions)
	if err != nil {
		return err
	}
	// Write to file.
	err = pdfWriter.WriteToFile(outputPath)
	return err
}
  
 中国人