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