Go API para la creación y el procesamiento de documentos PDF
Biblioteca Go de código abierto que brinda a los desarrolladores la capacidad de crear, editar, manipular y convertir documentos PDF.
Unipdf es una biblioteca Go de código abierto que puede manejar fácilmente todas sus consultas relacionadas con la creación y manipulación de documentos PDF. La biblioteca está disponible bajo licencia dual donde la licencia AGPL se puede usar para el desarrollo de software de código abierto. La biblioteca brinda soporte completo para generar documentos PDF con un alto nivel de texto, dibujos e imágenes.
La biblioteca unipdf de código abierto admite varias funciones comunes y avanzadas para procesar y optimizar documentos PDF, como la creación de informes PDF, la generación de informes PDF, la creación de facturas, la creación y el manejo de párrafos, la combinación y división de páginas PDF, la rotación de páginas, la extracción de texto de Archivos PDF, exportar PDF a CSV, convertir imágenes a PDF, comprimir y optimizar PDF, archivos PDF con marca de agua, compatibilidad con fuentes compuestas (caracteres Unicode), firmas digitales y mucho más.
.
Primeros pasos con unipdf
Para instalar el unipdf en su sistema, ejecute el siguiente comando.
Instalar gofpdf a través de GitHub
go get github.com/unidoc/unipdf/v3
Para obtener la última actualización, visite la página de lanzamientos del producto.
Generar informe en PDF a través de Go API
La API unipdf de código abierto brinda a los desarrolladores la capacidad de crear informes en PDF dentro de sus propias aplicaciones Go. La biblioteca permite a los desarrolladores trabajar de manera eficiente con documentos PDF y ha incluido soporte para agregar imágenes, tablas, encabezados, pies de página y mucho más en sus informes PDF con facilidad. También puede colocar contenido dinámico en sus informes PDF con solo un par de líneas de código.
Convierta un archivo PDF a CSV a través de Go API
La biblioteca unipdf permite a los desarrolladores de software convertir archivos PDF a formatos de archivo CSV dentro de sus propias aplicaciones Go. Los convertidores de PDF a Excel son una herramienta muy útil para instituciones comerciales y de investigación. Es muy fácil de usar y brinda la capacidad de extraer TextMarks de PDF y agruparlos en palabras, filas y columnas para la extracción de datos CSV.
Insertar imágenes en PDF
La API unipdf de código abierto brinda a los programadores de software la capacidad de agregar imágenes de su propia elección en documentos PDF dentro de las aplicaciones GO. Facilita el trabajo de los desarrolladores al colocar imágenes en el documento PDF, sin tener que preocuparse por las coordenadas. Solo necesita proporcionar la ruta y el tamaño de la imagen sin preocuparse por las coordenadas. La biblioteca ha incluido soporte para formatos de imagen populares como JPEG, PNG, GIF, TIFF y más.
// 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
}
Agregar contraseña a documentos PDF
La API unipdf gratuita brinda a los desarrolladores el poder de proteger sus documentos PDF aplicándoles una contraseña mediante los comandos Go. Puede restringir que los usuarios abran y lean documentos PDF. También puede configurar la contraseña de propietario para otorgar acceso completo al archivo PDF. Además, también puede restringir que los usuarios realicen cualquier tipo de cambio en ciertas partes de los documentos 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
}