Go API для создания и обработки PDF-документов
Библиотека Go с открытым исходным кодом, которая дает разработчикам возможность создавать, редактировать, манипулировать и конвертировать PDF-документы.
unipdf — это библиотека Go с открытым исходным кодом, которая может легко обрабатывать все ваши запросы, связанные с созданием и обработкой PDF-документов. Библиотека доступна по двойной лицензии, где лицензия AGPL может использоваться для разработки программного обеспечения с открытым исходным кодом. Библиотека обеспечивает полную поддержку создания PDF-документов с большим количеством текста, рисунков и изображений.
Библиотека unipdf с открытым исходным кодом поддерживает несколько общих, а также расширенных функций для обработки и оптимизации PDF-документов, таких как создание отчетов в формате PDF, генерация отчетов в формате PDF, создание счетов-фактур, создание и обработка абзацев, объединение и разделение страниц PDF, поворот страниц, извлечение текста из PDF-файлы, экспорт PDF в CSV, преобразование изображений в PDF, сжатие и оптимизация PDF-файлов, водяные знаки в PDF-файлах, поддержка составных шрифтов (символов Unicode), цифровые подписи и многое другое.
.
Начало работы с unipdf
Чтобы установить unipdf в вашей системе, выполните следующую команду.
Установите gofpdf через GitHub
go get github.com/unidoc/unipdf/v3
Чтобы получить последние обновления, посетите страницу выпусков продукта .
Создание отчета в формате PDF через Go API
API unipdf с открытым исходным кодом предоставляет разработчикам возможность создавать отчеты в формате PDF внутри своих собственных приложений Go. Библиотека позволяет разработчикам эффективно работать с PDF-документами и включает поддержку простого добавления изображений, таблиц, верхних и нижних колонтитулов и многого другого в ваши отчеты в формате PDF. Вы также можете размещать динамический контент в своих отчетах в формате PDF, написав всего пару строк кода.
Преобразование PDF-файла в CSV через Go API
Библиотека unipdf позволяет разработчикам программного обеспечения преобразовывать файлы PDF в форматы файлов CSV в своих собственных приложениях Go. Преобразователи PDF в Excel — очень полезный инструмент для бизнеса и исследовательских учреждений. Он очень прост в использовании и предоставляет возможность извлекать TextMarks из PDF и группировать их вместе в слова, строки и столбцы для извлечения данных CSV.
Вставить изображения в PDF
API unipdf с открытым исходным кодом дает программистам возможность добавлять изображения по своему выбору в документы PDF внутри приложений GO. Это упрощает работу разработчика при размещении изображений в документе 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-документам
Бесплатный API unipdf дает разработчикам возможность защищать свои PDF-документы, применяя к ним пароль с помощью команд Go. Вы можете запретить пользователям открывать и читать 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
}