Khi nói đến các nhà phát triển, chúng ta có thể gặp các trường hợp cần tạo tài liệu PDF theo chương trình dựa trên dữ liệu đầu vào. Ví dụ: bạn có thể có một ứng dụng web tạo hóa đơn PDF dựa trên thông tin mua hàng từ cơ sở dữ liệu.
May mắn thay, hệ sinh thái Go rất lớn và có các công cụ cũng như tính năng để thực hiện việc tạo PDF một cách dễ dàng mà không cần phải xây dựng từ đầu.
Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách sử dụng gói “fpdf” cung cấp các tính năng mạnh mẽ để tạo tài liệu PDF dựa trên dữ liệu đầu vào.
Thiết lập môi trường
Trước khi chúng tôi tiến hành, hãy đảm bảo rằng bạn đã cài đặt các công cụ sau:
- Đảm bảo rằng bạn đã cài đặt trình biên dịch Go mới nhất trên hệ thống của mình
- Trình soạn thảo mã
Cài đặt Gofpdf
Khi bạn đã thiết lập dự án của mình, hãy sử dụng lệnh “go get” để cài đặt gói “fpdf”.
$ đi lấy github . với / đi - pdf / fpdf
Sau khi cài đặt, chúng tôi có thể tiếp tục và sử dụng các tính năng do gói cung cấp để tạo PDF.
Tạo một tài liệu PDF cơ bản
Hãy xem xét mã ví dụ sau đây minh họa cách sử dụng gói này để tạo một tệp PDF cơ bản với văn bản đầu vào cơ bản.
bưu kiện chủ yếu
nhập khẩu (
'github.com/go-pdf/fpdf'
)
vui vẻ chủ yếu () {
pdf := fpdf . Mới ( 'P' , 'mm' , 'A4' , '' )
pdf . Thêm trang ()
pdf . Đặt phông chữ ( 'Arial' , 'B' , 16 )
pdf . Tế bào ( 40 , 10 , 'Thật là đau mông...' )
pdf . Đầu raTập tinVàĐóng ( 'lorem.pdf' )
}
Trong ví dụ đã cho, chúng tôi bắt đầu bằng cách nhập các gói mà chúng tôi cần. Trong trường hợp của chúng tôi, chúng tôi chỉ cần gói “fpdf”.
Tiếp theo, chúng tôi tạo một tài liệu PDF mới bằng hàm fpdf.New() và chỉ định các thuộc tính PDF như hướng trang, đơn vị đo và kích thước.
Tiếp theo, chúng ta thêm một trang mới bằng hàm AddPage().
Sau đó chúng ta tiến hành thiết lập phông chữ và kích thước cho tài liệu bằng hàm SetFont(). Chúng ta cũng thêm một vùng hình chữ nhật hay còn gọi là ô với hàm Cell() để hiển thị văn bản.
Cuối cùng, chúng tôi tạo tệp PDF và lưu nó bằng phương thức OutputFileAndClose().
Thêm hình ảnh
Chúng tôi cũng có thể thêm hỗ trợ cho hình ảnh như trong mã ví dụ sau:
bưu kiện chủ yếunhập khẩu (
'github.com/go-pdf/fpdf'
)
vui vẻ chủ yếu () {
pdf := fpdf . Mới ( 'P' , 'mm' , 'A4' , '' )
pdf . Thêm trang ()
pdf . Tùy chọn hình ảnh ( 'linux-tux.png' , 10 , 10 , 40 , 0 , SAI , fpdf . Tùy chọn hình ảnh { Lọai hình ảnh : 'PNG' , ĐọcDpi : ĐÚNG VẬY }, 0 , '' )
lỗi := pdf . Đầu raTập tinVàĐóng ( 'example.pdf' )
nếu như lỗi != không {
hoảng loạn ( lỗi )
}
}
Điều này sẽ bao gồm hình ảnh được chỉ định vào tài liệu.
Tài liệu nhiều trang có đầu trang và chân trang
Gói này cũng hỗ trợ nhiều trang bao gồm các tính năng như đầu trang và chân trang như trong ví dụ sau:
bưu kiện chủ yếunhập khẩu (
'strconv' // Nhập gói strconv
'github.com/go-pdf/fpdf'
)
vui vẻ tiêu đề ( pdf * fpdf . Fpdf ) {
pdf . Đặt phông chữ ( 'Arial' , 'B' , 12 )
pdf . Tế bào ( 0 , 10 , 'Tiêu đề trang' )
pdf . Ln ( hai mươi )
}
vui vẻ chân trang ( pdf * fpdf . Fpdf ) {
pdf . SetY ( - mười lăm )
pdf . Đặt phông chữ ( 'Arial' , 'TÔI' , số 8 )
pdf . Tế bào ( 0 , 10 , 'Trang ' + strconv . chết đuối ( pdf . Không có trang ()))
}
vui vẻ chủ yếu () {
pdf := fpdf . Mới ( 'P' , 'mm' , 'A4' , '' )
pdf . SetHeaderFunc ( vui vẻ () { tiêu đề ( pdf ) })
pdf . SetFooterFunc ( vui vẻ () { chân trang ( pdf ) })
pdf . Thêm trang ()
pdf . Đặt phông chữ ( 'Arial' , '' , 12 )
vì Tôi := 0 ; Tôi < 40 ; Tôi ++ {
pdf . Tế bào ( 0 , 10 , 'In số dòng' + strconv . chết đuối ( Tôi ))
pdf . Ln ( 12 )
}
pdf . Đầu raTập tinVàĐóng ( 'nhiều trang.pdf' )
}
Trong trường hợp này, chúng tôi xác định các hàm đầu trang và chân trang để đặt nội dung cho các phần này của tệp PDF.
Sau đó, chúng tôi sử dụng SetHeaderFunc và SetFooterFunc để chỉ định các hàm làm đầu trang và chân trang cho tài liệu.
Cuối cùng, chúng tôi sử dụng vòng lặp để tạo nhiều dòng văn bản dẫn đến nhiều trang. Kết quả PDF như sau:
Ở đó bạn có nó!
Phần kết luận
Trong hướng dẫn này, chúng ta đã học được rất nhiều điều về cách tạo PDF trong Go bằng cách sử dụng gói “fpdf”. Gói này đi kèm rất nhiều công cụ và tính năng để tạo tệp PDF. Kiểm tra các tài liệu để tìm hiểu thêm.