برو API برای ایجاد و پردازش سند PDF
Open Source Go Library که به توسعهدهندگان توانایی ایجاد، ویرایش، دستکاری و تبدیل اسناد PDF را میدهد.
unipdf یک کتابخانه متن باز Go است که به راحتی می تواند تمام درخواست های شما را که مربوط به ایجاد و دستکاری سند PDF است، انجام دهد. این کتابخانه تحت مجوز دوگانه در دسترس است که در آن مجوز AGPL می تواند برای توسعه نرم افزار منبع باز استفاده شود. این کتابخانه پشتیبانی کاملی را برای تولید اسناد PDF با سطح بالایی از متن، طراحی و تصاویر ارائه می دهد.
کتابخانه منبع باز unipdf از چندین ویژگی رایج و پیشرفته برای پردازش و بهینه سازی اسناد PDF پشتیبانی می کند، مانند ایجاد گزارش های PDF، تولید گزارش های PDF، ایجاد فاکتورها، ایجاد و مدیریت پاراگراف، ادغام و تقسیم صفحات PDF، چرخش صفحات، استخراج متن از فایل های PDF، صادرات PDF به CSV، تبدیل تصاویر به PDF، فشرده سازی و بهینه سازی PDF، فایل های PDF واترمارک، پشتیبانی از فونت های ترکیبی (نویسه های یونیکد)، امضای دیجیتال و بسیاری موارد دیگر.
.
شروع کار با unipdf
برای نصب unipdf روی سیستم خود لطفا دستور زیر را اجرا کنید.
gofpdf را از طریق GitHub نصب کنید
go get github.com/unidoc/unipdf/v3
برای آخرین بهروزرسانی لطفاً از صفحه انتشارات محصول دیدن کنید.
گزارش PDF را از طریق Go API ایجاد کنید
API منبع باز unipdf به توسعه دهندگان این امکان را می دهد که گزارش های PDF را در داخل برنامه های Go خود ایجاد کنند. این کتابخانه به توسعه دهندگان اجازه می دهد تا به طور موثر با اسناد PDF کار کنند و شامل پشتیبانی برای افزودن تصاویر، جداول، سرصفحه ها، پاورقی ها و موارد دیگر به راحتی به گزارش های PDF شما می شود. شما همچنین می توانید محتوای پویا را تنها با چند خط کد در گزارش های PDF خود قرار دهید.
از طریق Go API فایل PDF را به CSV تبدیل کنید
کتابخانه unipdf توسعه دهندگان نرم افزار را قادر می سازد تا فایل های PDF را در داخل برنامه های Go خود به فرمت های فایل CSV تبدیل کنند. تبدیل پی دی اف به اکسل ابزار بسیار مفیدی برای موسسات تجاری و تحقیقاتی است. استفاده از آن بسیار آسان است و قابلیت استخراج 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
}