best pdf library c# : Extract data from pdf form to excel software application system azure wpf .net console PDFlib-manual9-part1886

4.5  Unicode Support 91
4.5 Unicode Support
PDFlib supports the Unicode standard
1
, almost identical to ISO 
10646, for a variety of features related to page content and hy-
pertext elements.
4.5.1 Unicode for Page Descriptions
Unicode strings can be supplied directly in page descriptions for 
use with the following kinds of fonts:
>PostScript fonts with unicode encoding. Up to 255 distinct Unicode values can be 
used. If more are requested they will be replaced with the space character. Since PFM 
metrics files support only winansi or builtin encoding, unicode encoding will always 
be mapped to winansi if a font with a PFM metrics file is used.
>TrueType and OpenType fonts with unicode encoding. For TrueType and OpenType 
fonts this will force font embedding.
>Standard CJK fonts with a Unicode-based CMap. Unicode-compatible CMaps are easi-
ly identified by the Uni prefix in their name (see Table 4.6). 
>Custom CJK fonts with unicode encoding.
In addition to unicode encoding PDFlib supports several other methods for selecting 
Unicode characters.
Unicode code pages for PostScript and TrueType fonts. PDFlib supports Unicode ad-
dressing for characters within the Adobe Glyph List (AGL). This kind of Unicode support 
is available for Unicode-based TrueType fonts and PostScript fonts with glyph names in 
the AGL.
This feature can be activating by using any of PDFlib’s internal code pages, or supply-
ing a suitable custom encoding or code page file (see Section 4.4.1, »8-Bit Encodings«, 
page 85).
8-Bit strings for addressing Unicode segments. PDFlib supports an abbreviated format 
which can be used to address up to 256 consecutive Unicode characters starting at an ar-
bitrary offset between U+0000 and U+FFFF. This can be used to easily access a small 
range of Unicode characters while still working with 8-bit characters.
This feature can be activated by using the string U+XXXX as the encoding parameter 
for PDF_load_font( ), where XXXX denotes a hexadecimal offset. The 8-bit character value 
will be added to the supplied offset. For example, using the encoding
U+0400
will select the Cyrillic Unicode section, and 8-bit strings supplied to the text functions 
will select the Unicode characters U+0400, U+0401, etc.
Proper Unicode values for cut-and-paste and find operations. PDFlib will include addi-
tional information (a ToUnicode CMap) in the PDF output which helps Acrobat in assign-
ing proper Unicode values for exporting text (e.g., via the clipboard) and searching for 
text. By default ToUnicode CMaps will be generated for all supported font types, but 
they can only be included if Unicode information is available for a given font/encoding 
1. See http://www.unicode.org 
Extract data from pdf form to excel - extract form data from PDF in C#.net, ASP.NET, MVC, Ajax, WPF
Help to Read and Extract Field Data from PDF with a Convenient C# Solution
extract data from pdf c#; exporting pdf data to excel
Extract data from pdf form to excel - VB.NET PDF Form Data Read library: extract form data from PDF in vb.net, ASP.NET, MVC, Ajax, WPF
Convenient VB.NET Solution to Read and Extract Field Data from PDF
how to make pdf editable form reader; extract data from pdf
92
Chapter 4:  Text Handling
combination. While this is case for most font/encoding combinations, user-defined 
Type 3 fonts, for example, may be missing Unicode information. In this case PDFlib will 
not be able to generate a ToUnicode CMap, and text export or searching will not work in 
Acrobat.
Generation of a ToUnicode CMap can be globally disabled with the unicodemap pa-
rameter, or on a per-font basis with the PDF_load_font( ) option of the same name. The 
default of this parameter/option is true. Setting it to false will decrease the output file 
size while potentially disabling proper cut-and-paste support in Acrobat.
4.5.2 Unicode Text Formats
The Unicode standard supports several transformation formats for storing the actual 
byte values which comprise a Unicode string. These vary in the number of bytes per 
character and the ordering of bytes within a character. Unicode strings in PDFlib can be 
supplied in UTF-8 or UTF-16 formats with any byte ordering. This can be controlled with 
the textformat parameter for all text on page descriptions, and the hypertextformat pa-
rameter for all hypertext elements. The following values are supported for both of these 
parameters:
>bytes: one byte in the string corresponds to one character. This is mainly useful for 8-
bit encodings.
>utf8: strings are expected in UTF-8 format.
>utf16: strings are expected in UTF-16 format. A Unicode Byte Order Mark (BOM) at the 
start of the string will be evaluated and then removed. If no BOM is present the 
string is expected in the machine’s native byte ordering (on Intel x86 architectures, 
for example, the native byte order is little-endian, while on Sparc and PowerPC sys-
tems it is big-endian).
>utf16be: Strings are expected in UTF-16 format in big-endian byte ordering. There is 
no special treatment for Byte Order Marks.
>utf16le: Strings are expected in UTF-16 format in little-endian byte ordering. There is 
no special treatment for Byte Order Marks.
>auto: equivalent to bytes for 8-bit encodings, and utf16 for wide-character addressing 
(unicode, glyphid, or a UCS2 CMap). This setting will provide proper text interpreta-
tion in most environments which do not use Unicode natively.
The default setting for the textformat parameter is utf16 for Unicode-capable language 
bindings, and auto otherwise.
Although the textformat setting is in effect for all encodings, it will be most useful for 
unicode encoding. Table 4.3 details the interpretation of text strings for various combi-
nations of font encodings and textformat settings.
Table 4.3 Relationship of font encodings and text format
font encoding
textformat = bytes
textformat = utf8, utf16, utf16be, or utf16le
8-bit, or builtin en-
coding for TTF/OTF
8-bit codes
convert Unicode values to 8-bit codes according to 
the chosen encoding
1
builtin encoding for 
PostScript
8-bit codes
only in Unicode-capable language bindings. PDFlib 
will throw an exception otherwise
U+XXXX
8-bit codes will be added to the off-
set XXXX to address Unicode values
convert Unicode values to 8-bit codes according to 
the chosen Unicode offset
glyphid
8-bit codes address glyph ids from 0 
to 255
Unicode values will be interpreted as glyph ids
2
VB.NET PDF Form Data fill-in library: auto fill-in PDF form data
Image: Insert Image to PDF. Image: Remove Image from PDF Page. Image: Copy, Paste, Cut Image in Page. Data: Read, Extract Field Data. Data: Auto Fill-in Field
pdf form data extraction; how to save editable pdf form in reader
C# PDF Form Data fill-in Library: auto fill-in PDF form data in C#
Able to fill out all PDF form field in C#.NET. RasterEdge XDoc.PDF SDK package provides PDF field processing features for learn how to fill-in field data to PDF
saving pdf forms in acrobat reader; make pdf form editable in reader
4.5  Unicode Support 93
4.5.3 Unicode for Hypertext Elements
Unicode can be supplied for various hypertext elements, such as bookmarks, contents 
and title of note annotations (see Figure 4.1), standard and user-defined document in-
formation field contents, description and author of file attachments. For details on Uni-
code-enable hypertext items please review the respective function descriptions in Sec-
tion 7.9, »Hypertext Functions«, page 204.
Note The usability of Unicode in hypertext elements heavily depends on the Unicode support avail-
able on the target system. Unfortunately, most systems today are far from being fully Unicode-
enabled in their default configurations. Although Windows NT/2000/XP and Mac OS support 
Unicode internally, availability of appropriate Unicode fonts is still an issue.
Hypertext encoding. PDF supports only two encoding schemes for hypertext ele-
ments:
>Unicode in big-ending UTF-16 format.
>PDFDocEncoding, (see Figure 4.2), which is a superset of ISO 8859-1 (Latin 1). Although 
PDFDocEncoding and the Windows code page 1252 are quite similar, they differ sub-
stantially in the character range 128-160 (0x80–0xA0).
unicode and
UCS2-based CMaps
8-bit codes address Unicode values 
from U+0000 to U+00FF
any Unicode value, encoded according to the 
chosen text format
1
any other CMap
(not UCS2-based)
any single- or multibyte codes 
according to the chosen CMap
only in Unicode-capable language bindings. PDFlib 
will throw an exception otherwise
1.  If the Unicode character is not available in the font PDFlib will issue a warning and replace it with the space character. (this
can be controlled via the glyphwarning parameter).
2.  If the glyph id is not available in the font PDFlib will issue a warning and replace it with glyph id 0.
Table 4.3 Relationship of font encodings and text format
font encoding
textformat = bytes
textformat = utf8, utf16, utf16be, or utf16le
Fig. 4.1
Unicode bookmarks (left) and Unicode 
text annotations (right)
VB.NET PDF Text Extract Library: extract text content from PDF
Extract highlighted text out of PDF document. Enable extracting PDF text to another PDF file, and other formats such as TXT and SVG form.
pdf form field recognition; how to fill out a pdf form with reader
C# PDF Image Extract Library: Select, copy, paste PDF images in C#
Studio .NET. Extract various types of image from PDF file, like XObject Image, XObject Form, Inline Image, etc. Support .NET WinForms
extracting data from pdf forms to excel; pdf data extraction open source
94
Chapter 4:  Text Handling
While PDF allows only Unicode and PDFDocEncoding, PDFlib supports all 8-Bit and Uni-
code-based encodings which are allowed for PDF_load_font( ), and will automatically ap-
ply any required conversions.
The hypertextencoding parameter works analogous to the encoding parameter of PDF_
load_font( ), and controls the 8-bit encoding of hypertext strings. It can attain any name 
of an 8-bit encoding known to PDFlib, including auto (see Section 4.4, »Encoding De-
tails«, page 85). Note that glyphid, builtin, and CMap names are not allowed for this pa-
rameter. The default is auto.
Hypertext format. Similar to the textformat parameter, the format of hypertext 
strings can be controlled with the hypertextformat parameter. However, interpretation 
of the allowed values is somewhat different for the hypertextformat parameter. While 
utf8, utf16, utf16be, and utf16le have the same meaning as for the textformat parameter, 
the behavior of bytes and auto is slightly different:
>auto: UTF-16 strings with big-endian BOM will be detected (in C such strings must be 
terminated with a double-null), and Unicode output will be generated. If the string 
does not start with a big-endian BOM it will be interpreted as an 8-bit encoded string 
according to the hypertextencoding parameter (see above). If it contains at least one 
character which is not contained in PDFDocEncoding, the complete string will be 
converted to a big-endian UTF-16 string, and written to the PDF output as Unicode. 
Otherwise it will be written to the PDF output as 8-bit encoded PDFDocEncoding text.
000
001
002
003
004
005
006
007
010
011
012
013
014
015
016
017
020
021
022
023
024
025
026
027
030
031
032
033
034
035
036
037
040
041
042
043
044
045
046
047
050
051
052
053
054
055
056
057
060
061
062
063
064
065
066
067
070
071
072
073
074
075
076
077
100
101
102
103
104
105
106
107
110
111
112
113
114
115
116
117
120
121
122
123
124
125
126
127
130
131
132
133
134
135
136
137
140
141
142
143
144
145
146
147
150
151
152
153
154
155
156
157
160
161
162
163
164
165
166
167
170
171
172
173
174
175
176
177
200
201
202
203
204
205
206
207
210
211
212
213
214
215
216
217
220
221
222
223
224
225
226
227
230
231
232
233
234
235
236
237
240
241
242
243
244
245
246
247
250
251
252
253
254
255
256
257
260
261
262
263
264
265
266
267
270
271
272
273
274
275
276
277
300
301
302
303
304
305
306
307
310
311
312
313
314
315
316
317
320
321
322
323
324
325
326
327
330
331
332
333
334
335
336
337
340
341
342
343
344
345
346
347
350
351
352
353
354
355
356
357
360
361
362
363
364
365
366
367
370
371
372
373
374
375
376
377
0 1 2 3 4 5 6 7 8 9 A B C D E F
0
1
H I J K L M N O
2
! " # $ % &  ( ) * + , - . /
3 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4 @ A B C D E F G H I J K L M N O
5 P Q R S T U V W X Y Z [ \ ] ^ _
6  a b c d e f g h i j k l m n o
7 p q r s t u v w x y z { | } ~
8                
9               
A
 
          
 
B                
C                
D                
E                
F                
Fig. 4.2
The PDFDocEncoding 
character set with hexa-
decimal and octal codes.
VB.NET PDF Image Extract Library: Select, copy, paste PDF images
VB.NET. Extract multiple types of image from PDF file in VB.NET, like XObject Image, XObject Form, Inline Image, etc. Support .NET
extracting data from pdf to excel; pdf data extraction
VB.NET Create PDF from Excel Library to convert xlsx, xls to PDF
Image: Insert Image to PDF. Image: Remove Image from PDF Page. Image: Copy, Paste, Cut Image in Page. Data: Read, Extract Field Data. Data: Auto Fill-in Field
make pdf form editable in reader; extract data from pdf form to excel
4.5  Unicode Support 95
>bytes: one byte in the string corresponds to one character, and the string will be out-
put without any interpretation. This is mainly useful for 8-bit encodings. In addi-
tion, UTF-16 strings with big-endian BOM will automatically be detected. In C, such 
strings must be terminated with a double-null unless the length in bytes is explicitly 
supplied in the respective function call.
The default setting for the hypertextformat parameter is auto.
4.5.4 Unicode Support in PDFlib Language Bindings
Unicode in the C language binding. Clients of the C language binding must take care 
not to use the standard text (PDF_show( ), PDF_show_xy( ), and PDF_continue_text( )) or hy-
pertext functions (PDF_add_bookmark( ), etc.) when the text may contain embedded null 
characters. In such cases the alternate functions PDF_show2( ) etc. must be used, and the 
length of the string must be supplied separately. This is not a concern for all other lan-
guage bindings since the PDFlib language wrappers internally call PDF_show2( ) etc. in 
the first place.
Unicode in the C++ language binding. C++ users must be aware of a pitfall related to 
the compiler automatically converting literal strings to the C++ string type which is ex-
pected by the PDFlib API functions: this conversion supports embedded null characters 
only if an explicit length parameter is supplied. For example, the following will not 
work since the string will be truncated at the first null character:
p.show("\x00\x41\x96\x7B\x8C\xEA");
// Wrong!
To fix this problem apply the string constructor with an explicit length parameter:
p.show(string("\x00\x41\x96\x7B\x8C\xEA", 6));
// Correct
Unicode-aware language bindings. The following PDFlib language bindings are Uni-
code-capable:
>COM
>.NET
>Java
>Tcl (requires Tcl 8.2 or above)
These language wrappers will correctly deal with Unicode strings provided by the client, 
and automatically set certain PDFlib parameters. This has the following consequences:
>Since the language wrapper automatically sets the textformat and hypertextformat 
parameters to utf16, these are no longer accessible by the client, and must not be 
used.
>Using unicode encoding for page descriptions is the easiest way to deal with encod-
ings.
>Non-Unicode CMaps for standard CJK fonts on page descriptions must be avoided 
since the wrapper will always supply Unicode to the PDFlib core; only UCS2 CMaps 
can be used.
The overall effect is basically that clients can provide plain Unicode strings to PDFlib 
functions without any additional configuration or parameter settings required.
C# PDF Text Extract Library: extract text content from PDF file in
XDoc.PDF ›› C# PDF: Extract PDF Text. C# PDF - Extract Text from PDF in C#.NET. Feel Free to Extract Text from PDF Page, Page Region or the Whole PDF File.
pdf data extraction to excel; extracting data from pdf files
C# Create PDF from Excel Library to convert xlsx, xls to PDF in C#
Create PDF from Excel. |. Home ›› XDoc.PDF ›› C# PDF: Create PDF from Excel. Export PDF from Excel with cell border or no border.
export pdf form data to excel spreadsheet; save data in pdf form reader
96
Chapter 4:  Text Handling
4.6 Text Metrics, Text Variations, and Box Formatting
4.6.1 Font and Character Metrics
Text position. PDFlib maintains the text position independently from the current 
point for drawing graphics. While the former can be queried via the textx/texty parame-
ters, the latter can be queried via currentx/currenty.
Character metrics. PDFlib uses the character and font metrics system used by Post-
Script and PDF which shall be briefly discussed here.
The font size which must be specified by PDFlib users is the minimum distance be-
tween adjacent text lines which is required to avoid overlapping character parts. The 
font size is generally larger than individual characters in a font, since it spans ascender 
and descender, plus possibly additional space between lines.
The leading (line spacing) specifies the vertical distance between the baselines of ad-
jacent lines of text. By default it is set to the value of the font size. The capheight is the 
height of capital letters such as T or H in most Latin fonts. The ascender is the height of 
lowercase letters such as f or d in most Latin fonts. The descender is the distance from the 
baseline to the bottom of lowercase letters such as j or p in most Latin fonts. The de-
scender is usually negative. The values of capheight, ascender, and descender are mea-
sured as a fraction of the font size, and must be multiplied with the required font size 
before being used.
The values of capheight, ascender, and descender for a specific font can be queried 
from PDFlib as follows:
float capheight, ascender, descender, fontsize;
...
font = PDF_load_font(p, "Times-Roman", 0, "winansi", "");
PDF_setfont(p, font, fontsize);
capheight = PDF_get_value(p, "capheight", font) * fontsize;
ascender = PDF_get_value(p, "ascender", font) * fontsize;
descender = PDF_get_value(p, "descender", font) * fontsize;
Note The position and size of superscript and subscript cannot be queried from PDFlib.
CPI calculations. While most fonts have varying character widths, so-called mono-
spaced fonts use the same widths for all characters. In order to relate PDF font metrics to 
the characters per inch (CPI) measurements often used in high-speed print environ-





Fig. 4.3 Font and character metrics
4.6  Text Metrics, Text Variations, and Box Formatting 97
ments, some calculation examples for the mono-spaced Courier font may be helpful. In 
Courier, all characters have a width of 600 units with respect to the full character cell of 
1000 units per point (this value can be retrieved from the corresponding AFM metrics 
file). For example, with 12 point text all characters will have an absolute width of
12 points * 600/1000 = 7.2 points
with an optimal line spacing of 12 points. Since there are 72 points to an inch, exactly 10 
characters of Courier 12 point will fit in an inch. In other words, 12 point Courier is a 10 
cpi font. For 10 point text, the character width is 6 points, resulting in a 72/6 = 12 cpi 
font. Similarly, 8 point Courier results in 15 cpi.
4.6.2 Kerning
Some character combinations can lead to unpleasant appearance. For example, two Vs 
next to each other can look like a W, and the distance between T and e must be reduced 
in order to avoid ugly white space. This compensation is referred to as kerning. Many 
fonts contain comprehensive kerning tables which contain spacing adjustment values 
for certain critical letter pairs.
PDFlib supports kerning for PostScript, TrueType and OpenType fonts, but not for 
PostScript host fonts on the Mac (fonts fetched from the operating system). There are 
two PDFlib controls for the kerning behavior:
>By default, kerning information in a font is not read when loading a font. If kerning 
is desired the kerning option must be set in the respective call to PDF_load_font( ). This 
instructs PDFlib to read the font’s kerning data (if available).
>When a font for which kerning data has been read is used with any text output func-
tion, the positional corrections provided by the kerning data will be applied. How-
ever, kerning can also be disabled by setting the kerning parameter to false:
PDF_set_parameter(p, "kerning", "false"); /* disable kerning */
No kerning
Kerning applied
Character movement caused by kerning
Fig. 4.4 Kerning
98
Chapter 4:  Text Handling
Temporarily disabling kerning may be useful, for example, for tabular figures when 
the kerning data contains pairs of figures, since kerned figures wouldn’t line up in a 
table.
Kerning is applied in addition to any character spacing, word spacing, and horizontal 
scaling which may be activated. Note, however, that the combination of horizontal 
spacing and kerning only works correctly in Acrobat 4.05 and above, but not any older 
versions.
PDFlib does not have any limit for the number of kerning pairs in a font.
4.6.3 Text Variations
Artificial font styles. Bold and italic variations of a font should normally be created by 
choosing an appropriate font. In addition, PDFlib also supports artificial font styles: 
based on a regular font Acrobat will simulate bold, italic, or bolditalic styles by embold-
ening or slanting the base font. The aestethic quality of artificial font styles does not 
match those of real bold or italic fonts which have been fine-tuned by the font designer. 
However, in situations where a particular font style is not available directly, artificial 
styles can be used as a workaround. In particular, artificial font styles are useful for the 
standard CJK fonts which support only normal fonts, but not any bold or italic variants.
Note Using the fontstyle feature for fonts other than the standard CJK fonts is not recommended.
Due to restrictions in Adobe Acrobat, artificial font styles work only if all of the follow-
ing conditions are met:
>The base font is a TrueType or OpenType font, including standard and custom CJK 
fonts. The base font must not be one of the PDF core fonts (see Section 4.3.2, »Font 
Embedding«, page 81).
>The encoding is winansi, macroman, or one of the predefined CJK CMaps listed in Ta-
ble 4.6 (since otherwise PDFlib will force font embedding).
>The embedding option must be set to false.
>The base font must be installed on the target system where the PDF will be viewed.
While PDFlib will check the first three conditions, it is the user’s responsibility to ensure 
the last one.
Artificial font styles can be requested by using one of the normal (no change of the 
base font), bold, italic, or bolditalic keywords for the fontstyle option of PDF_load_font( ):
PDF_load_font(p, "HeiseiKakuGo-W5", 0, "UniJIS-UCS2-H", "fontstyle bold");
Underline, overline, and strikeout text. PDFlib can be instructed to put lines below, 
above, or in the middle of text. The stroke width of the bar and its distance from the 
baseline are calculated based on the font’s metrics information. In addition, the current 
values of the horizontal scaling factor and the text matrix are taken into account when 
calculating the width of the bar. PDF_set_parameter( ) can be used to switch the under-
line, overline, and strikeout feature on or off as follows:
PDF_set_parameter(p, "underline", "true");
/* enable underlines */
The current stroke color is used for drawing the bars. The current linecap and dash pa-
rameters are ignored, however. Aesthetics alert: in most fonts underlining will touch 
descenders, and overlining will touch diacritical marks atop ascenders.
4.6  Text Metrics, Text Variations, and Box Formatting 99
Note The underline, overline, and strikeout features are not supported for standard CJK fonts unless 
a UCS2 CMap is used.
Text rendering modes. PDFlib supports several rendering modes which affect the ap-
pearance of text. This includes outline text and the ability to use text as a clipping path. 
Text can also be rendered invisibly which may be useful for placing text on scanned im-
ages in order to make the text accessible to searching and indexing, while at the same 
time assuring it will not be visible directly. The rendering modes are described in Table 
4.4. They can be set with PDF_set_value( ) and the textrendering parameter.
PDF_set_value(p, "textrendering", 1);
/* set stroked text rendering (outline text) */
When stroking text, graphics state parameters such as linewidth and color will be ap-
plied to the glyph outline. The rendering mode has no effect on text displayed using a 
Type 3 font.
Text color. Text will usually be display in the current fill color, which can be set using 
PDF_setcolor( ). However, if a rendering mode other than 0 has been selected, both stroke 
and fill color may affect the text depending on the selected rendering mode.
4.6.4 Box Formatting
While PDFlib offers the PDF_stringwidth( ) function for performing text width calcula-
tions, many clients need easy access to text box formatting and justifying, e.g. to fit a 
certain amount of text into a given column. Although PDFlib offers such features, you 
shouldn’t think of PDFlib as a full-featured text and graphics layout engine. The PDF_
show_boxed( ) function is an easy-to-use method for text box formatting with a number 
of formatting options. Text may be laid out in a rectangular box either left-aligned, 
right-aligned, centered, or fully justified. The first line of text starts at a baseline with a 
vertical position which equals the top edge of the supplied box minus the leading. The 
bottom edge of the box serves as the last baseline used. For this reason, descenders of 
the last text line may appear outside the specified box (see Figure 4.5).
This function justifies by adjusting the inter-word spacing (the last line will be left-
aligned only). Obviously, this requires that the text contains spaces (PDFlib will not in-
sert spaces if the text doesn’t contain any). Advanced text processing features such as 
hyphenation are not available – PDFlib simply breaks text lines at existing whitespace 
characters. Text is never clipped at the boundaries of the box. 
Supplying a feature parameter of blind can be useful to determine whether a string 
fits in a given box, without actually producing any output.
Table 4.4 Values for the text rendering mode
value
explanation
value
explanation
0
fill text
4
fill text and add it to the clipping path
1
stroke text (outline)
5
stroke text and add it to the clipping path
2
fill and stroke text
6
fill and stroke text and add it to the clipping path
3
invisible text
7
add text to the clipping path
100
Chapter 4:  Text Handling
ASCII newline characters (in C: ox0A) in the supplied text are recognized, and force a 
new paragraph. CR/NL combinations are treated like a single newline character. Other 
formatting characters (especially tab characters) are not supported.
The following is a small example of using PDF_show_boxed( ). It uses PDF_rect( ) to 
draw an additional border around the box which may be helpful in debugging:
text = "In an attempt to reproduce sounds more accurately, pinyin spellings often ... ";
fontsize = 13;
font = PDF_load_font(p, "Helvetica", 0, "auto", "");
PDF_setfont(p, font, fontsize);
x = 50;
y = 650;
w = 357;
h = 6 * fontsize;
c = PDF_show_boxed(p, text, x, y, w, h, "justify", "");
if (c > 0 ) {
/* Not all characters could be placed in the box; act appropriately here */
...
}
PDF_rect(p, x, y, w, h);
PDF_stroke(p);
The following requirements and restrictions of PDF_show_boxed( ) shall be noted:
>The function supports only the setting bytes for the textformat parameter, or the set-
ting auto in combination with an 8-bit encoding.
>Contiguous blanks in the text should be avoided.
>Due to restrictions in PDF’s word spacing support, the space character must be avail-
able at code position 0x20 in the encoding. Although this is the case for most com-
mon encodings, it implies that justification will not work with EBCDIC encoding.
>The simplistic formatting algorithm may fail for unsuitable combinations of long 
words and narrow columns since there is no hyphenation support.
>Since the bottom part of the box is used as a baseline, descenders in the last line may 
extend beyond the box area.
>It’s currently not possible to feed the text in multiple portions into the box format-
ting routine. However, you can retrieve the text position after calling PDF_show_
boxed( ) with the textx and texty parameters.
>The font within the text box can’t be changed.
>Text box formatting is only supported for 8-bit encodings.
In  an  attempt  to  reproduce  sounds  more  accurately,  pinyin
spellings  often  differ  markedly  from  the  older  ones,  and
personal  names  are  usually  spelled  without  apostrophes  or
hyphens;  an  apostrophe  is  sometimes  used,  however,  to
avoid  ambiguity  when  syllables  are  run  together  (as  in
Chang´an to distinguish it from Chan´gan).
Fig. 4.5  Text box formatting: the bottom edge will serve as the last baseline, not as a clipping border.
Documents you may be interested
Documents you may be interested