table_demo
4.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#!/usr/bin/env php
<?php
/**
* FILENAME:
* pdflib_demo
*
* DESCRIPTION:
* Demonstration of the pdflib PHP Library for generating PDF files
*
*/
/**
Links:
- https://www.pdflib.com/developer/technical-documentation/manuals/
- https://www.pdflib.com/pdflib-cookbook/browse-all-topics/
- https://www.pdflib.com/pdflib-cookbook/tables/starter-table/
- https://www.pdflib.com/pdflib-cookbook/tables/vertical-text-alignment/
- https://www.pdflib.com/pdflib-cookbook/general-programming/starter-basic/php-general-progamming-issues/
*/
// set a default timezone
date_default_timezone_set("America/Los_Angeles");
//require_once('tcpdf_include.php');
$outfile = __DIR__ . '/pdflib_table_output.pdf';
// page placement defaults
$pageTopYPortrait = 750;
$pageTopYLandscape = 570;
// wrap PDFlib usage in a try{} block
try {
$pdf = new PDFlib();
// set up some PDFlib options
$pdf->set_option("errorpolicy=return");
$pdf->set_option("stringformat=utf8");
// all paths in 'searchpath' need to be inside curly braces
// multiple curly-braced paths in $searchpath need to be separated with
// space characters
$searchpath = '{/usr/share/fonts/dejavu/}{' . __DIR__ . '/fonts}';
$pdf->set_option("searchpath={" . $searchpath . "}");
if ($pdf->begin_document($outfile, "") == 0)
throw new Exception("Error: " . $pdf->get_errmsg());
// set up the document metadata info
$pdf->set_info('Creator', 'IODP Science Support Office');
$pdf->set_info('Author', 'IODP Science Support Office');
$pdf->set_info('Title', 'Demo of TCPDF for generating IODP Proposals');
$pdf->set_info('Subject', 'IODP Proposals');
$pdf->set_info('Keywords', 'IODP proposal ocean drilling core expedition');
$textOpts = "fontname={FreeSans} embedding fontsize=20 "
. "encoding=unicode ";
// START PAGE 1
$pdf->begin_page_ext(0, 0, 'width=letter.width, height=letter.height');
// create bookmarks first thing
$action = $pdf->create_action("GoTo", "destination={page=1}");
$pdf->create_bookmark("Page 1", " action={activate= " . $action . "}");
// action
$action = $pdf->create_action("GoTo", "destination={page=2}");
// bookmark
$pdf->create_bookmark("Page 2", " action={activate= " . $action . "}");
// text/image
$pdf->fit_textline("Jump to SSF for SHACK-10A", 20, 750,
$textOpts . " underline=true matchbox={name=to_second_page}");
// annotation; reuse the "page 2" action above
$optlist = "action={activate " . $action . "} linewidth=0 " .
"usematchbox={to_second_page}";
$pdf->create_annotation(0, 0, 0, 0, "Link", $optlist);
// the rest of the text on page 1
$pdf->fit_textline("This is some text on the first page; ", 20, 720,
$textOpts);
$pdf->fit_textline("Привет! Этот немного текста.", 20, 690, $textOpts);
// END PAGE 1
$pdf->end_page_ext('');
// START PAGE 2
//$pdf->begin_page_ext(612, 792, '');
$ssfPDF = $pdf->open_pdi_document(__DIR__ . "/site_summary_figure.pdf", '');
if ($ssfPDF == 0)
throw new Exception("Error: " . $p->get_errmsg());
$ssfPage = $pdf->open_pdi_page($ssfPDF, 1, '');
$ssfWidth = $pdf->pcos_get_number($ssfPDF, "pages[0]/width");
$ssfHeight = $pdf->pcos_get_number($ssfPDF, "pages[0]/height");
//print "Page width/height: $ssfWidth x $ssfHeight\n";
$pdf->begin_page_ext($ssfWidth, $ssfHeight, '');
$pdf->fit_pdi_page($ssfPage, 0, 0, '');
$pdf->close_pdi_page($ssfPage);
$pdf->close_pdi_document($ssfPDF);
// write some text on to the page
// for landscape mode...
//$pdf->fit_textline("Back to Top", 20, 570,
//$linkOpts = linkAttribs(1, 750);
$action = $pdf->create_action("GoTo", "destination={page=1}");
$pdf->fit_textline("Back to Top", 20, $ssfHeight - 30,
$textOpts . " underline=true matchbox={name=to_first_page}");
// call create_annotation here
$optlist = "action={activate " . $action . "} linewidth=0 " .
"usematchbox={to_first_page}";
$pdf->create_annotation(0, 0, 0, 0, "Link", $optlist);
// END PAGE 2
$pdf->end_page_ext('');
// START PAGE 3
$pdf->begin_page_ext(0, 0, 'width=letter.width, height=letter.height');
// END PAGE 3
$pdf->end_page_ext('');
// close the document
$pdf->end_document('');
}
catch (PDFlibException $e) {
die("PDFlib exception occurred in sample:\n" .
"[" . $e->get_errnum() . "] " . $e->get_apiname() . ": " .
$e->get_errmsg() . "\n");
}
catch (Exception $e) {
die($e);
}
// vim: expandtab filetype=php shiftwidth=3 tabstop=3