pdf с полями ввода из tcl/tk
Из программы на tcl/tk генерируется отчёт с текстом и картинками, затем экспортируется в pdf через библиотеку pdf4tcl (https://pdf4tcl.sourceforge.net/)
Облом когда понадобилось добавить поля ввода в pdf
pdf4tcl умеет добавлять такие поля (метод addForm), но система координат не совпадает
Хочется чтобы поля ввода были справа от Label1 и Label2
Кто виноват и что делать?
Минимальный тестовый фрагмент
#!/usr/bin/wish
lappend auto_path [file join lib pdf4tcl094]
package require pdf4tcl
set height 800
set width 800
canvas .canv -width $width -height $height
pack .canv
button .savePDF -text "save" -command savepdf
pack .savePDF
set font1 [font create -family Helvetica -size 10]
.canv create text 0 0 -text "__________________________________________________________________________________________" -anchor w -font $font1
.canv create text 31 32 -text "Label 1 :" -anchor w -tag addform -font $font1
.canv create text 90 450 -text "Label 2 :" -anchor w -tag addform -font $font1
proc savepdf {} {
set fname {output.pdf}
pdf4tcl::new mypdf -paper a4 -margin 15mm -compress 0
mypdf startPage
mypdf setFont 10 Helvetica
mypdf canvas .canv
foreach item [.canv find withtag addform] {
set x [lindex [.canv bbox $item] 2]
set y [lindex [.canv bbox $item] 3]
puts "debug (x,y): $x,$y"
mypdf addForm text [expr $x+20] $y 100 20 -init 0
}
mypdf write -file $fname
mypdf destroy
exit 0
}
Вот полученный pdf
%PDF-1.4
5 0 obj
<<
/Length 6 0 R
>>
stream
/Helvetica 10 Tf
0 Tr
10 TL
q
1 w
[] 0 d
0 0 0 rg
0 0 0 RG
0 J
0 j
10.433 M
0.706317 0 0 -0.706317 43.226 793.83 cm
-1 -8 m
-1 459 l
721 459 l
721 -8 l
W
n
q
0 0 0 rg
BT
/Helvetica 17 Tf
0 Tr
17 TL
/Helvetica 14.388 Tf
0 Tr
14.388 TL
1 0 0 -1 0 4.079 Tm
(__________________________________________________________________________________________) Tj
ET
Q
q
0 0 0 rg
BT
/Helvetica 17 Tf
0 Tr
17 TL
/Helvetica 14.338 Tf
0 Tr
14.338 TL
1 0 0 -1 31 36.061 Tm
(Label 1 :) Tj
ET
Q
q
0 0 0 rg
BT
/Helvetica 17 Tf
0 Tr
17 TL
/Helvetica 14.338 Tf
0 Tr
14.338 TL
1 0 0 -1 90 454.061 Tm
(Label 2 :) Tj
ET
Q
Q
endstream
endobj
6 0 obj
599
endobj
4 0 obj
<</Type /Page
/Parent 2 0 R
/Resources 3 0 R
/Group <</S /Transparency /CS /DeviceRGB /I false /K false>>
/MediaBox [0 0 595 842]
/Contents [5 0 R]
/Annots [9 0 R
11 0 R]
>>
endobj
7 0 obj
<<
/Type /Font
/Subtype /Type1
/Encoding /WinAnsiEncoding
/Name /Helvetica
/BaseFont /Helvetica
>>
endobj
8 0 obj
<< /BBox [ 0 0 100 20]
/Resources 3 0 R
/Subtype /Form
/Type /XObject
/Length 54
>>
stream
/Tx BMC BT /Helvetica 10 Tf 0 g 2 1.1 Td (0) Tj ET EMC
endstream
endobj
9 0 obj
<<
/Subtype /Widget
/P 4 0 R
/Rect [149.52 738.48 249.52 758.48]
/FT /Tx
/T (textform8)
/DA (/Helvetica 10 Tf 0 g)
/Q 0
/V (0)
/AP << /N 8 0 R >>
/F 4
>>
endobj
10 0 obj
<< /BBox [ 0 0 100 20]
/Resources 3 0 R
/Subtype /Form
/Type /XObject
/Length 54
>>
stream
/Tx BMC BT /Helvetica 10 Tf 0 g 2 1.1 Td (0) Tj ET EMC
endstream
endobj
11 0 obj
<<
/Subtype /Widget
/P 4 0 R
/Rect [208.52 320.48 308.52 340.48]
/FT /Tx
/T (textform10)
/DA (/Helvetica 10 Tf 0 g)
/Q 0
/V (0)
/AP << /N 10 0 R >>
/F 4
>>
endobj
1 0 obj
<<
/Type /Catalog
/Pages 2 0 R
/AcroForm 12 0 R
>>
endobj
2 0 obj
<<
/Type /Pages
/Count 1
/Kids [4 0 R ]
>>
endobj
3 0 obj
<<
/ProcSet[/PDF /Text /ImageC]
/Font <<
/Helvetica 7 0 R
>>
>>
endobj
12 0 obj
<<
/Fields [9 0 R
11 0 R]
/DR 3 0 R
>>
endobj
xref
0 13
0000000000 65535 f
0000001720 00000 n
0000001787 00000 n
0000001846 00000 n
0000000686 00000 n
0000000014 00000 n
0000000666 00000 n
0000000876 00000 n
0000000990 00000 n
0000001163 00000 n
0000001353 00000 n
0000001527 00000 n
0000001926 00000 n
trailer
<<
/Size 13
/Root 1 0 R
>>
startxref
1982
%%EOF