Báo cáo mà bạn có thể thấy ở trên dựa trên mảng tham số sau xác định loại dữ liệu sẽ được hiển thị trong các cột của bảng
$row = array[
'text' => ,
'weight' => ,
'date' => ,
'price' => ,
'grp_id' =>
];
Bạn có thể tìm thấy mã nguồn của ví dụ này trong các tệp gói XFPDFExample. php và XFPDFVí dụ. lớp. php
Cách sử dụng Lớp bảng PHP PDF để tạo báo cáo PDF
Để có thể sử dụng gói PHP này, trước tiên cần tạo lớp con của riêng bạn mở rộng lớp XPDF
Lớp của bạn nên xác định mọi thứ bạn cần để định cấu hình bản trình bày của báo cáo để chỉ định các giá trị cho các khía cạnh sau
- Đặt logo cho tiêu đề
- chân trang
- Phông chữ và màu sắc
- cột bảng
- tiêu đề cột
- Nguồn dữ liệu cho nội dung
- Chiều rộng
- căn chỉnh
- Định dạng
- Tạo tổng số và dòng kết chuyển
- Nhóm các dòng
Sau đó, báo cáo có thể được tạo bằng cách sử dụng lớp này để làm cho nó phù hợp để in
Tổng quan về các bước
- Triển khai lớp mẫu để xác định báo cáo
- Phông chữ/màu sắc, logo và chân trang
- Phông chữ và màu sắc
- Logo
- chân trang
- Định nghĩa cột của bảng ví dụ
- Sự miêu tả
- Và đây là mã cho nó
- Các dòng mã riêng lẻ được giải thích chi tiết hơn
- Tạo nội dung ô không được chứa trực tiếp trong dữ liệu hàng
- Nhóm các hàng với tiêu đề nhóm và tổng số nhóm
- Bắt đầu nhóm và xuất tổng phụ
- Đầu ra của tổng phụ cuối cùng ở cuối bảng
- Tiêu đề phụ, thao tác dữ liệu dòng trước khi xuất
- Phông chữ/màu sắc, logo và chân trang
- Sử dụng lớp ví dụ
- Bắt đầu bàn
- Chuyển dữ liệu
- Đóng bảng
Triển khai lớp mẫu để xác định báo cáo
Trong ví dụ này, lớp
public function __construct[string $orientation = 'P']
{
parent::__construct[$orientation];
...
7 được triển khai trong tệp XFPDFExample. lớp. php. Để tạo phần mở rộng của lớp ________ 18 , nó phải được gọi thông qua câu lệnh ________ 19use SKien\XFPDF\XPDF;
class ExampleXPDF extends XPDF
Chúng tôi thiết kế báo cáo trong hàm tạo của lớp. Trước hết, Constructor của lớp cha phải được gọi để khởi tạo
public function __construct[string $orientation = 'P']
{
parent::__construct[$orientation];
...
Phông chữ và màu sắc
Có thể đặt phông chữ và màu sắc bằng các phương pháp khác nhau
$this->initGrid['xfpdf-sample.json'];
0 và $this->initGrid['xfpdf-sample.json'];
1Tuy nhiên, sẽ nhanh hơn và dễ dàng hơn nếu tất cả các cài đặt được thực hiện trong tệp JSON. [Điều này cũng có thể được sử dụng nhiều lần cho các báo cáo chuẩn hóa]. Tệp này có thể được chuyển đến phương thức
$this->initGrid['xfpdf-sample.json'];
2 $this->initGrid['xfpdf-sample.json'];
Cấu trúc của tệp JSON này tự giải thích và có thể tìm thấy trong tệp ví dụ được sử dụng tại đây
Logo
public function __construct[string $orientation = 'P']
{
parent::__construct[$orientation];
...
0Logo được in căn phải trong tiêu đề. Theo mặc định, logo sẽ được thu nhỏ với chiều cao là 8 mm. Trong ví dụ, chúng tôi chọn chiều cao là 9mm cho Voi
chân trang
public function __construct[string $orientation = 'P']
{
parent::__construct[$orientation];
...
1Số trang được mở rộng bằng tiền tố 'Trang. ', căn giữa được đặt một tác giả và căn phải ngày tháng mà không có đầu ra thời gian
Trình giữ chỗ sau được sử dụng
- {PN}. Số trang
- {NP}. tổng số trang
- {D}. ngay hiện tại
- {T}. thời gian hiện tại [không được sử dụng trong ví dụ]
[cài đặt mặc định là. trang và tổng số trang ở bên trái và ngày giờ hiện tại ở bên phải]
Ngày và giờ ở chân trang sẽ được định dạng theo cài đặt
$this->initGrid['xfpdf-sample.json'];
3. Có thể thay đổi Cài đặt ngôn ngữ từ mặc định hệ thống bằng phương pháp
4$this->initGrid['xfpdf-sample.json'];
Định nghĩa cột của bảng ví dụ
mô tả cột
Bảng trong ví dụ có 8 cột
Một cột đánh số thuần túy
- tiêu đề "Hàng"
- chiều rộng 10mm
- đúng đắn
- đánh số tự động
- đối với các dòng tổng, văn bản tương ứng phải được đặt trong cột này
Một cột ngày
- tiêu đề "Ngày"
- chiều rộng 35mm
- làm trung tâm
- nội dung được chứa trực tiếp trong dữ liệu dòng
- Định dạng "Thứ bảy, 03. 12. 2020"
Cột văn bản 'bình thường'
- tiêu đề "Văn bản"
- chiều rộng động -> Cột trở nên rộng đến mức bảng lấp đầy toàn bộ chiều rộng của trang
- còn biện minh
- Nội dung được chứa trực tiếp trong dữ liệu dòng
Cột có nội dung động
- tiêu đề "Grp. "
- chiều rộng 12mm
- làm trung tâm
- nội dung phải được tạo từ dữ liệu dòng
Một cột có nội dung số
- tiêu đề "Trọng lượng"
- chiều rộng 20mm
- đúng đắn
- nội dung được chứa trực tiếp trong dữ liệu dòng
- Định dạng với một chữ số thập phân và thêm "kg"
- Tổng số phải được tính cho cột này
Cột ký hiệu
- Không có tiêu đề [tiêu đề cột được kết nối với cột trước đó]
- chiều rộng 8mm
- ký hiệu được chèn tùy thuộc vào giá trị của cột 'trọng lượng'
Cột tiền tệ
- tiêu đề "Giá"
- chiều rộng 25 mm
- đúng đắn
- nội dung được chứa trực tiếp trong dữ liệu dòng
- Định dạng bằng ký hiệu tiền tệ
- Tổng phải được tính cho cột
Một cột tính toán
- tiêu đề "Cost per Kg"
- chiều rộng 25 mm
- đúng đắn
- nội dung được tính từ dữ liệu dòng
- Định dạng dưới dạng tiền tệ với ký hiệu tiền tệ
và đây là mã cho nó
Các dòng mã riêng lẻ được giải thích chi tiết hơn
Cột 1 public function __construct[string $orientation = 'P']
{
parent::__construct[$orientation];
...
4- ID cột
5 xác định nội dung của cột dưới dạng số dòng tự động$this->initGrid['xfpdf-sample.json'];
6 xác định đầu ra của văn bản cho tổng số dòng trong cột này. Tất cả các cột tiếp theo được kết nối với cột này cho đến cột tổng tiếp theo$this->initGrid['xfpdf-sample.json'];
public function __construct[string $orientation = 'P']
{
parent::__construct[$orientation];
...
7- Nội dung của phần tử 'date' của dữ liệu dòng được hiểu là giá trị ngày tháng.
Các giá trị được chấp nhận.- một đối tượng DateTime
- một int dưới dạng dấu thời gian UNIX
- một chuỗi được cố gắng phân tích cú pháp bằng
7$this->initGrid['xfpdf-sample.json'];
- Với
8 cột được định dạng theo$this->initGrid['xfpdf-sample.json'];
9$this->initGrid['xfpdf-sample.json'];
public function __construct[string $orientation = 'P']
{
parent::__construct[$orientation];
...
1- Nội dung của phần tử 'văn bản' của dữ liệu dòng được sử dụng cho đầu ra
- Với chiều rộng -1, cột được xác định là cột động. Điều này cung cấp cho Cột không gian còn lại có sẵn để lưới lấp đầy hoàn toàn chiều rộng của trang
public function __construct[string $orientation = 'P']
{
parent::__construct[$orientation];
...
2- ID cột duy nhất tự xác định
00 đảm bảo rằng phương thứcpublic function __construct[string $orientation = 'P'] { parent::__construct[$orientation]; ...
01 được gọi, trong đó nội dung mong muốn của ô có thể được tạo bằng cách sử dụng dữ liệu hàng. Phương thứcpublic function __construct[string $orientation = 'P'] { parent::__construct[$orientation]; ...
01 phải được nạp chồng trong lớp dẫn xuấtpublic function __construct[string $orientation = 'P'] { parent::__construct[$orientation]; ...
use SKien\XFPDF\XPDF;
class ExampleXPDF extends XPDF
0- Nội dung của phần tử 'trọng lượng' của dữ liệu dòng được hiểu là một giá trị số
03 cho biết tổng số sẽ được tính cho cột nàypublic function __construct[string $orientation = 'P'] { parent::__construct[$orientation]; ...
- Với
04 cột được định dạng theopublic function __construct[string $orientation = 'P'] { parent::__construct[$orientation]; ...
05public function __construct[string $orientation = 'P'] { parent::__construct[$orientation]; ...
use SKien\XFPDF\XPDF;
class ExampleXPDF extends XPDF
1- Giá trị -1 làm tiêu đề cột cho biết tiêu đề cột được kết nối với tiêu đề của cột trước đó
- Với ID cột đã xác định
06 phương thứcpublic function __construct[string $orientation = 'P'] { parent::__construct[$orientation]; ...
07 được gọi, trong đó hình ảnh được hiển thị phải được đặtpublic function __construct[string $orientation = 'P'] { parent::__construct[$orientation]; ...
- Để một ô trống tương ứng được xuất ra trong một dòng tổng trong cột này,
08 phải được đặt cho cột này sau cột tổng đã xác định trước đó. Tất cả các cột tiếp theo sẽ được kết nối cho đến khi một cột tổng khác xuất hiện hoặc đến cuối lướipublic function __construct[string $orientation = 'P'] { parent::__construct[$orientation]; ...
- Chỉ mục cột được lưu trong
09 để sau đó có thể đặt vị trí và kích thước hình ảnh vớipublic function __construct[string $orientation = 'P'] { parent::__construct[$orientation]; ...
10public function __construct[string $orientation = 'P'] { parent::__construct[$orientation]; ...
use SKien\XFPDF\XPDF;
class ExampleXPDF extends XPDF
2- Nội dung của phần tử 'giá' của dữ liệu dòng được hiểu là một giá trị số
03 cho biết tổng số sẽ được tính cho cột nàypublic function __construct[string $orientation = 'P'] { parent::__construct[$orientation]; ...
- Với
12 cột được định dạng theopublic function __construct[string $orientation = 'P'] { parent::__construct[$orientation]; ...
13public function __construct[string $orientation = 'P'] { parent::__construct[$orientation]; ...
use SKien\XFPDF\XPDF;
class ExampleXPDF extends XPDF
3- Để tính giá trị từ dữ liệu hàng, cột được cung cấp ID cột [
14], ID này cũng gọi phương thứcpublic function __construct[string $orientation = 'P'] { parent::__construct[$orientation]; ...
07, trong đó nội dung mong muốn được tính toán và định dạngpublic function __construct[string $orientation = 'P'] { parent::__construct[$orientation]; ...
- Cần có
08 để xuất ra chính xác các dòng Tổng sốpublic function __construct[string $orientation = 'P'] { parent::__construct[$orientation]; ...
use SKien\XFPDF\XPDF;
class ExampleXPDF extends XPDF
4
17. Tổng số tiền ở cuối tài liệupublic function __construct[string $orientation = 'P'] { parent::__construct[$orientation]; ...
18. Tổng phụ ở cuối mỗi trangpublic function __construct[string $orientation = 'P'] { parent::__construct[$orientation]; ...
19. Chuyển sang ở đầu trang [bắt đầu từ trang thứ 2]public function __construct[string $orientation = 'P'] { parent::__construct[$orientation]; ...
use SKien\XFPDF\XPDF;
class ExampleXPDF extends XPDF
5Văn bản được in trong cột đầu tiên mà cờ
$this->initGrid['xfpdf-sample.json'];
6 đã đặt [thường là cột 1]. Văn bản có thể chứa phần giữ chỗ '{PN}' cho trang hiện tại và '{PN-1}' cho trang trướcĐặt định dạng đầu ra cho tất cả các cột Ngàyuse SKien\XFPDF\XPDF;
class ExampleXPDF extends XPDF
6Chuỗi định dạng phải tuân thủ nguyên tắc của hàm PHP 'strftime[]'.
Xem https. //www. php. net/thủ công/vi/chức năng. strftime. php
use SKien\XFPDF\XPDF;
class ExampleXPDF extends XPDF
7- Một chữ số thập phân
- Không có tiền tố
- Phần mở rộng * 'kg' *
Dấu thập phân và dấu phân cách hàng nghìn được đọc từ cài đặt
public function __construct[string $orientation = 'P']
{
parent::__construct[$orientation];
...
41 Đặt kích thước và vị trí của hình ảnh trong cột biểu tượngCó thể thay đổi Cài đặt ngôn ngữ từ mặc định hệ thống bằng phương pháp
4$this->initGrid['xfpdf-sample.json'];
use SKien\XFPDF\XPDF;
class ExampleXPDF extends XPDF
8- chỉ mục cột đã được lưu khi cột được tạo
- vị trí 1. 5 mm từ đầu dòng
- vị trí 2. cách mép trái ô 5mm
- chiều cao 3 mm
- Không có chiều rộng nào được chỉ định nên tỷ lệ khung hình của đồ họa gốc được giữ lại
Tạo nội dung ô không được chứa trực tiếp trong dữ liệu hàng
Nếu nội dung của một ô được in không tồn tại trực tiếp trong dữ liệu hàng, thì có thể đặt một ID duy nhất cho cột này thay vì trường dữ liệu. Đầu ra mong muốn phải được tạo trong phương thức
public function __construct[string $orientation = 'P']
{
parent::__construct[$orientation];
...
43. Đây là điện tử. g. trường hợp nếu- dữ liệu chứa ID số và văn bản tương ứng phải được in
- một kết quả tính toán dựa trên một số giá trị phải được in
- định dạng đặc biệt là bắt buộc
- giá trị được hiển thị phụ thuộc vào các yếu tố bên ngoài khác
Trong ví dụ này, cột 4, 5 và 8 được tạo nội bộ
ID duy nhất được xác định cho các cột này, được sử dụng khi các cột được tạo bằng
public function __construct[string $orientation = 'P']
{
parent::__construct[$orientation];
...
44Quá trình xử lý được triển khai theo phương thức
public function __construct[string $orientation = 'P']
{
parent::__construct[$orientation];
...
43
00public function __construct[string $orientation = 'P'] { parent::__construct[$orientation]; ...
Văn bản viết tắt tương ứng được gán ở đây thay vì giá trị dữ liệu số.
06public function __construct[string $orientation = 'P'] { parent::__construct[$orientation]; ...
Hình ảnh tương ứng được đặt tùy thuộc vào giá trị của trường dữ liệu hte 'trọng số'.- cờ đỏ nếu cân nặng > 35
- cờ vàng cho các giá trị từ 20 đến 35
- một lá cờ xanh cho tất cả những người còn lại
14public function __construct[string $orientation = 'P'] { parent::__construct[$orientation]; ...
Giá trị được tính từ dữ liệu hàng và được định dạng dưới dạng trường tiền tệ.
49public function __construct[string $orientation = 'P'] { parent::__construct[$orientation]; ...
Phương thức của lớp cha phải được gọi trong nhánh
public function __construct[string $orientation = 'P']
{
parent::__construct[$orientation];
...
49 Nhóm các hàng với tiêu đề nhóm và tổng số nhóm
Để minh họa chức năng nhóm với tổng phụ, trong ví dụ cho mỗi tháng, một tiêu đề phụ và tổng phụ được đưa ra. Để có thể phản ứng với sự thay đổi của tháng, lớp triển khai thuộc tính
public function __construct[string $orientation = 'P']
{
parent::__construct[$orientation];
...
71 để giữ tháng của hàng hiện tại, được khởi tạo bằng một chuỗi trốngCác bước sau đây là bắt buộc
- Bắt đầu nhóm và in tổng phụ
- Đầu ra của tổng phụ cuối cùng ở cuối bảng
Bắt đầu nhóm và xuất tổng phụ
Để xác định xem một tháng có thay đổi trước khi một dòng mới được in hay không, phương thức
public function __construct[string $orientation = 'P']
{
parent::__construct[$orientation];
...
72 được quá tải trong lớp ví dụ. Phương thức này luôn được gọi TRƯỚC KHI đầu ra của một dòng mớiSo sánh tháng của hàng hiện tại [
public function __construct[string $orientation = 'P']
{
parent::__construct[$orientation];
...
73] với tháng trước đó được lưu trữ trong public function __construct[string $orientation = 'P']
{
parent::__construct[$orientation];
...
74, có thể xác định liệu có sự thay đổi về tháng hay không. Nếu tháng trước không phải là chuỗi rỗng [trường hợp này xảy ra khi in hàng đầu tiên. ], lệnh gọi
public function __construct[string $orientation = 'P']
{
parent::__construct[$orientation];
...
75 in tổng phụ của tháng trước và đặt lại các giá trị đã tính cho tháng tiếp theo. Sau đó, nhóm cho tháng mới [hoặc tháng đầu tiên] được bắt đầu bằng
public function __construct[string $orientation = 'P']
{
parent::__construct[$orientation];
...
76. Nếu không có tham số public function __construct[string $orientation = 'P']
{
parent::__construct[$orientation];
...
77 được chuyển cho hàm này, thì chỉ tính toán nội bộ của các tổng phụ được bắt đầu lại, nhưng sẽ không có tiêu đề phụ nào được in. Cuối cùng, tháng mới được lưu trữ trong thuộc tính
public function __construct[string $orientation = 'P']
{
parent::__construct[$orientation];
...
71. Đầu ra của tổng phụ cuối cùng ở cuối bảng
Để in tổng phụ cho tháng cuối cùng của báo cáo, điều này phải được xuất ra SAU dòng dữ liệu cuối cùng nhưng TRƯỚC xuất ra của tổng số trên. Vì điều này có thể hiểu được là không thể bị chặn trong
public function __construct[string $orientation = 'P']
{
parent::__construct[$orientation];
...
79, nên phương thức public function __construct[string $orientation = 'P']
{
parent::__construct[$orientation];
...
10 bị quá tải cho mục đích này, phương thức này phải luôn được gọi sau khi tất cả dữ liệu đã được truyền điTại đây
public function __construct[string $orientation = 'P']
{
parent::__construct[$orientation];
...
11 được gọi lần cuối trước khi quá trình xử lý tiếp theo được chuyển sang lớp cha. [không được quên lời gọi của lớp cha trong bất kỳ trường hợp nào. ]Tiêu đề phụ, thao tác dữ liệu dòng trước khi xuất
Đôi khi, cần phải thay đổi dữ liệu cho một hàng do một tiêu chí cụ thể trước khi xuất hoặc để thêm thông tin bổ sung và/hoặc chèn tiêu đề phụ để nhận dạng tốt hơn. Đối với nhiệm vụ này, phương thức
public function __construct[string $orientation = 'P']
{
parent::__construct[$orientation];
...
72 cũng sẽ là nơi thích hợp để thực hiệnuse SKien\XFPDF\XPDF;
class ExampleXPDF extends XPDF
9Lưu ý rằng tham số $ row được truyền dưới dạng tham chiếu. Do đó, những thay đổi đối với dữ liệu cũng ảnh hưởng đến mã gọi.
Trong lớp ví dụ, một trường dữ liệu được thay đổi đơn giản cho một hàng có số hàng cố định [# 47] và dòng này được bắt đầu bằng một tiêu đề phụ tương ứng. Trong trường hợp hàng thứ hai cố định [#56], chỉ có trường dữ liệu được thay đổi và sau đó dòng được in mà không có tiêu đề phụ.
Sử dụng lớp ví dụ
Báo cáo được tạo trong tệp
public function __construct[string $orientation = 'P']
{
parent::__construct[$orientation];
...
13. Các tệp cần thiết của gói được tích hợp thông qua trình tải tự động và lớp ví dụ được bao gồm public function __construct[string $orientation = 'P']
{
parent::__construct[$orientation];
...
0Đầu tiên, một phiên bản của lớp ví dụ được tạo và một số thông tin và tiêu đề được đặt
Với
public function __construct[string $orientation = 'P']
{
parent::__construct[$orientation];
...
14, thông tin tệp được thiết lập sẽ hiển thị trong tài liệu đã tạo dưới thuộc tính tài liệu- 'XFPDF'. Tiêu đề
- 'Ví dụ'. Mô tả ngắn gọn
- 'Các lớp PHP'. Tác giả
- 'Từ khóa1, Từ khóa2,. '. từ khóa
public function __construct[string $orientation = 'P']
{
parent::__construct[$orientation];
...
15 đặt tiêu đề và mô tả ngắn tùy ý- Tiêu đề được căn trái trong phông chữ được chỉ định với
16public function __construct[string $orientation = 'P'] { parent::__construct[$orientation]; ...
- mô tả ngắn cũng được căn trái trong một dòng mới trong phông chữ
17public function __construct[string $orientation = 'P'] { parent::__construct[$orientation]; ...
Sau khi tất cả các cài đặt tài liệu đã được thực hiện, bảng có thể được tạo
public function __construct[string $orientation = 'P']
{
parent::__construct[$orientation];
...
1Bắt đầu bàn
public function __construct[string $orientation = 'P']
{
parent::__construct[$orientation];
...
2Cuộc gọi này bắt đầu tạo bảng
Chuyển dữ liệu
public function __construct[string $orientation = 'P']
{
parent::__construct[$orientation];
...
3Để đơn giản, dữ liệu dòng trong ví dụ được tạo trong một vòng lặp for với các giá trị ngẫu nhiên và được truyền bằng
public function __construct[string $orientation = 'P']
{
parent::__construct[$orientation];
...
18. Trong thực tế, trong hầu hết các trường hợp, dữ liệu sẽ đến từ truy vấn cơ sở dữ liệu hoặc một số nguồn dữ liệu khác. Điều này có thể trông như thế này public function __construct[string $orientation = 'P']
{
parent::__construct[$orientation];
...
4Beenden der Tabelle
public function __construct[string $orientation = 'P']
{
parent::__construct[$orientation];
...
5Ở cuối bảng, hàm này được gọi, nếu cần, sẽ tạo tổng cuối và đóng bảng
Tạo tệp PDF
public function __construct[string $orientation = 'P']
{
parent::__construct[$orientation];
...
6Tải xuống hoặc cài đặt Gói này bằng Trình soạn thảo
Lớp XPDF được trình bày trong bài viết này có thể được tải xuống trong trang này cũng chứa các hướng dẫn về cách cài đặt nó bằng công cụ soạn thảo PHP theo các hướng dẫn có sẵn tại đây