1#!/bin/sh
2# $Id: quickreference.tcl 14574 2005-10-29 16:27:43Z bonefish $
3#
4# PDFlib/PDI client: mini imposition demo
5#
6
7# Hide the exec to Tcl but not to the shell by appending a backslash\
8exec tclsh "$0" ${1+"$@"}
9
10# The lappend line is unnecessary if PDFlib has been installed
11# in the Tcl package directory
12set auto_path [linsert $auto_path 0 .libs .]
13
14package require pdflib 5.0
15
16set maxrow	2
17set maxcol	2
18set startpage	1
19set endpage	4
20set width	500.0
21set height	770.0
22set infile	"reference.pdf"
23# This is where font/image/PDF input files live. Adjust as necessary.
24set searchpath	"../data"
25
26set p [PDF_new]
27
28if {[PDF_open_file $p "quickreference.pdf"] == -1} {
29    puts stderr "Error: [PDF_get_errmsg $p]"
30    exit
31}
32
33PDF_set_parameter $p "SearchPath" $searchpath
34
35PDF_set_info $p "Creator" "quickreference.tcl"
36PDF_set_info $p "Author" "Thomas Merz"
37PDF_set_info $p "Title" "Mini Imposition Demo (Tcl)"
38
39set manual [PDF_open_pdi $p $infile "" 0]
40if {$manual == -1} {
41    puts stderr "Error: [PDF_get_errmsg $p]"
42    exit
43}
44
45set row 0
46set col 0
47
48PDF_set_parameter $p "topdown" "true"
49
50for {set pageno $startpage} {$pageno <= $endpage} \
51					{set pageno [expr $pageno + 1]} {
52    if {$row == 0 && $col == 0} {
53	PDF_begin_page $p $width $height
54	set font [PDF_load_font $p "Helvetica-Bold" "winansi" ""]
55	PDF_setfont $p $font 18
56	PDF_set_text_pos $p 24 [expr 24]
57	PDF_show $p "PDFlib Quick Reference"
58    }
59
60    set page [PDF_open_pdi_page $p $manual $pageno ""]
61
62    if {$page == -1} {
63	puts stderr "Error: [PDF_get_errmsg $p]"
64	exit
65    }
66
67    set scale [expr {1.0/$maxrow}]
68    PDF_fit_pdi_page $p $page [expr $width/$maxcol*$col] \
69	[expr ($row + 1) * $height/$maxrow] "scale $scale"
70    PDF_close_pdi_page $p $page
71
72    set col [expr $col + 1]
73    if {$col == $maxcol} {
74	set col 0
75	set row [expr $row + 1]
76    }
77    if {$row == $maxrow} {
78	set row 0
79	PDF_end_page $p
80    }
81}
82
83# finish the last partial page
84if {$row != 0 || $col != 0} {
85    PDF_end_page $p
86}
87PDF_close $p
88PDF_close_pdi $p $manual
89PDF_delete $p
90