Thường xuyên hỏi câu hỏi

Thường xuyên hỏi câu hỏi

Giấy phép và Open Source

Giấy phép nào cho Aspose.PDF FOSS for Go?

Aspose.PDF FOSS for Go is released under the Giấy phép MIT.- Văn bản giấy phép đầy đủ là được bao gồm trong kho lưu trữ tại github.com/aspose-pdf-foss/sởi PDF-Foss-for-go. Không cần đăng ký, tệp kích hoạt hoặc khóa runtime.

Tôi có thể sử dụng Aspose.PDF FOSS để đi trong một sản phẩm thương mại không?

Có. Giấy phép MIT cho phép sử dụng thương mại không giới hạn, sửa đổi, phân phối và sử dùng riêng tư. Bạn phải bao gồm thông báo bản quyền và văn bản giấy phép của MIT trong tất cả các bản sao hoặc phần đáng kể của phần mềm.

Có phiên bản doanh nghiệp không?

Aspose.PDF FOSS is the open-source, MIT-licensed edition. A separate commercial Aspose.PDF product is available as the Aspose.PDF — Enterprise Product Family với hỗ trợ doanh nghiệp, bao gồm định dạng mở rộng và tích hợp đám mây.


Cài đặt và yêu cầu

Làm thế nào để tôi cài đặt Aspose.PDF FOSS for Go?

Thêm module vào dự án Go của bạn:

go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-go

Nhập nó với một alias trong các tệp nguồn của bạn:

import pdf "github.com/aspose-pdf-foss/aspose-pdf-foss-for-go"

Phiên bản Go nào cần thiết?

Go 1.24 hoặc sau đó là cần thiết. kiểm tra phiên bản của bạn với go version.

Có các thư viện bản địa hay hệ thống phụ thuộc?

FOSS for Go là một thực hiện hoàn toàn với không có sự phụ thuộc C, C++ hoặc CGo. Nó không yêu cầu bất kỳ thư viện hệ thống nào, xem PDF hay các công cụ bên ngoài.


Sử dụng API

Làm thế nào để mở một PDF hiện có?

Sử dụng pdf.Open Đối với PDF tiêu chuẩn và pdf.OpenWithPassword Đối với các tập tin được bảo vệ bằng mật khẩu:

doc, err := pdf.Open("document.pdf")
if err != nil {
    panic(err)
}
fmt.Println(doc.PageCount())

Làm thế nào để chia PDF thành các trang riêng biệt?

Document.Split Trở lại a []*Document,1 trên mỗi trang:

doc, _ := pdf.Open("report.pdf")
pages, _ := doc.Split()
for i, p := range pages {
    p.Save(fmt.Sprintf("page_%03d.pdf", i+1))
}

Làm thế nào để kết hợp nhiều PDF?

Document.Append Kết hợp tài liệu nguồn trong chỗ:

base, _ := pdf.Open("part1.pdf")
part2, _ := pdf.Open("part2.pdf")
base.Append(part2)
base.Save("combined.pdf")

Làm thế nào để tôi điền vào một trường AcroForm?

Sử dụng Document.Form().Field(name) Và khẳng định loại cụ thể:

doc, _ := pdf.Open("form.pdf")
text := doc.Form().Field("customer_name").(*pdf.TextBoxField)
text.SetValue("Jane Doe")

check := doc.Form().Field("agree").(*pdf.CheckboxField)
check.SetChecked(true)

doc.Save("form_filled.pdf")

Các loại lĩnh vực được hỗ trợ: TextBoxField, CheckboxField, RadioButtonField, ComboBoxField, ListBoxField, ButtonField.

Làm thế nào để thêm bookmarks?

tạo một OutlineItemCollection và đặt a Destination:

doc, _ := pdf.Open("manual.pdf")
page, _ := doc.Page(1)

bm := pdf.NewOutlineItemCollection(doc)
bm.SetTitle("Chapter 1")
bm.SetDestination(pdf.NewDestinationXYZ(page, 0, 800, 1.0))
doc.Outlines().Add(bm)
doc.Save("manual_with_bookmarks.pdf")

An ninh và mã hóa

Làm thế nào để tôi bảo vệ mật khẩu một PDF?

Sử dụng Document.SetEncryption Với một EncryptionOptions - Strut để áp dụng bảo vệ mật khẩu và lá cờ quyền. cung cấp một mật mã người dùng để mở tệp và một password chủ sở hữu cho các quyền sửa đổi:

doc, _ := pdf.Open("doc.pdf")
doc.SetEncryption(pdf.EncryptionOptions{
    UserPassword:  "userpass",
    OwnerPassword: "ownerpass",
    Permissions:   &pdf.Permissions{AllowPrint: true, AllowCopy: false},
})
doc.Save("doc_protected.pdf")

Các thuật toán mã hóa nào được hỗ trợ?

Có 3 thuật toán có sẵn qua EncryptionOptions.Algorithm:

AlgorithmConstantStandard
AES-128EncryptionAlgAES128 (được mặc định)ISO 32000-1
AES-256EncryptionAlgAES256ISO 32000-2 (PDF 2.0 phát hành)
RC4-128EncryptionAlgRC4_128Legacy

Làm thế nào để mở một tệp được bảo vệ bằng mật khẩu?

Sử dụng pdf.OpenWithPassword khi tệp cần xác thực. nhập mật khẩu người dùng như là câu trả lời thứ hai; nó trở lại bình thường *Document Khi decryption thành công:

doc, err := pdf.OpenWithPassword("protected.pdf", "userpass")
if err != nil {
    panic(err)
}
fmt.Println(doc.PageCount())

Làm thế nào để tôi xóa mã hóa từ PDF?

Call Document.RemoveEncryption sau khi mở tệp với mật khẩu chính xác. lưu kết quả để viết một bản sao không mã hóa:

doc, _ := pdf.OpenWithPassword("protected.pdf", "userpass")
doc.RemoveEncryption()
doc.Save("decrypted.pdf")

Rendering và Text

Làm thế nào để tôi chuyển đổi một trang PDF cho một hình ảnh?

Sử dụng một trong những loại thiết bị: BmpDevice, PngDevice, JpegDevice, TiffDevice,hoặc GifDevice.Thiết kế thiết bị với A Resolution giá trị và gọi tương ứng Render* Phương pháp với một io.WriterRenderOptions:

doc, _ := pdf.Open("report.pdf")
page, _ := doc.Page(1)
f, _ := os.Create("page1.png")
defer f.Close()
page.RenderPNG(f, pdf.RenderOptions{DPI: 150})

Làm thế nào để tìm kiếm văn bản trong PDF?

Call Document.SearchText Với một câu hỏi string và SearchOptions.Kết quả là một Slice của TextMatch giá trị – mỗi người mang theo văn bản phù hợp, chỉ số trang của nó và hộp biên giới.

doc, _ := pdf.Open("doc.pdf")
matches, _ := doc.SearchText("total", pdf.SearchOptions{CaseInsensitive: true})
for _, m := range matches {
    fmt.Printf("page %d: %q\n", m.PageNumber, m.Text)
}

Làm thế nào để tôi làm một hình dạng?

Call Document.Flatten sau khi điền hoặc xem xét một biểu mẫu. phương pháp đánh dấu tất cả các trường giá trị vào đồ họa trang và loại bỏ các trường biểu mẫu tương tác:

doc, _ := pdf.Open("filled.pdf")
doc.Flatten()
doc.Save("flat.pdf")

Các hạn chế đã biết

Tất cả các tính năng PDF đều được hỗ trợ?

Thư viện bao gồm các hoạt động quản lý tài liệu phổ biến nhất: mở, tạo, lưu, chia sẻ, kết hợp, trang thu, mã hóa, AcroForms, bảng, dấu sách, ghi chú, rendering đến hình ảnh, tìm kiếm văn bản và làm sáng hình. Các tính năng tiên tiến như chữ ký kỹ thuật số, nội dung 3D và chuyển đổi PDF/A có thể không được thực hiện đầy đủ trong phiên bản hiện tại. Kiểm tra hồ sơ README cho trạng thái tính chất hiện nay.

Điều gì sẽ xảy ra nếu tôi sử dụng một tuyên bố loại trường không phù hợp?

Một loại tuyên bố trên Field Điều này không phù hợp với loại thực tế của trường sẽ hoảng loạn. Sử dụng pdf.FieldType(f) để kiểm tra loại trước khi tuyên bố, hoặc sử dụng một kiểu chuyển đổi:

doc, _ := pdf.Open("form.pdf")
for _, f := range doc.Form().Fields() {
    switch v := f.(type) {
    case *pdf.TextBoxField:
        fmt.Println("text:", v.Value())
    case *pdf.CheckboxField:
        fmt.Println("checked:", v.Checked())
    }
}
 Tiếng Việt