pdf viewer in mvc c# : Copy pdf picture SDK software service wpf winforms windows dnn TET-4.2-manual10-part1729

7.3  Unicode Postprocessing 101
Compatibility decomposition. Characters which are compatibility equivalent repre-
sent the same abstract character, but may differ in appearance or behavior. Examples 
include isolated forms of Arabic characters (e.g. 
) vs. context-specific shaped forms 
(e.g. 
). Compatibility equivalent characters differ in formatting. Re-
moving this formatting information implies loss of information, but may simplify pro-
cessing for certain types of applications (e.g. searching). Compatibility decompositions 
remove the formatting information.
In the Unicode code charts compatibility mappings are marked with the symbol 
ALMOST EQUAL TO 
, followed by the decomposition name (or »tag«) in angle 
brackets, e.g. <noBreak>. If no tag name is provided, <compat> is assumed. The tag names 
are identical to the option names in Table 7.5. As can be seen in some of the examples, 
the result of a decomposition may convert a single character to a sequence of multiple 
characters.
Note While all entries in Table 7.5 describe compatibility decompositions, the »compat« tag includes 
only »other« compatibility decompositions, i.e. those without a specific name.
Note Keep in mind that PDF documents may already map glyphs to the decomposed sequence in-
stead of the non-decomposed Unicode value. In this situation the 
decompose
option will not af-
fect the output.
Decomposition examples. Decompositions in TET can be controlled with the docu-
ment option decompose. A decomposition can be restricted to operate only on some, but 
not all Unicode characters. The subset on which a decomposition operates is called its 
domain. Table 7.5 lists the suboptions for all Unicode decompositions along with exam-
ples.
The following examples for the decompose option must be supplied in the option list 
for TET_open_document( ). The decomposition names in the decompose option list are 
taken from Table 7.5.
Disable all decompositions:
decompose={none}
Preserve wide (double-byte or zenkaku) and hankaku (narrow) characters:
decompose={wide=_none narrow=_none}
Map all canonical equivalents to their counterparts:
decompose={canonical=_all}
The following option list enables the circle decomposition, but disables all other decom-
positions:
decompose={none circle=_all}
ҷ
U+0633
U+FEB2
U+FEB4
U+FEB3
ɺ
U+00C4
U+2248
Copy pdf picture - copy, paste, cut PDF images in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Detailed tutorial for copying, pasting, and cutting image in PDF page using C# class code
copy pdf picture to powerpoint; how to copy and paste an image from a pdf
Copy pdf picture - VB.NET PDF copy, paste image library: copy, paste, cut PDF images in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
VB.NET Tutorial for How to Cut or Copy an Image from One Page and Paste to Another
copy picture from pdf to powerpoint; how to copy pictures from pdf in
102
Chapter 7:  Advanced Unicode Handling
Table 7.5 Compatibility decomposition: suboptions for the decompose option (canonically equivalent characters 
are marked with the symbol ALMOST EQUAL TO 
in the Unicode code charts)
decomposition 
name
description
before 
decomposition
after decomposition
(in logical order)
circle
Encircled characters
compat
1
Other compatibility decompositions, e.g. common 
ligatures
final
Final presentation forms, especially Arabic
font
Font variants, e.g. mathematical set letters, Hebrew 
ligatures
fraction
1
Vulgar fraction forms
initial
Initial presentation forms, especially Arabic
isolated
Isolated presentation forms, especially Arabic
medial
Medial presentation forms, especially Arabic
narrow
Narrow (hankaku) compatibility characters
nobreak
Non-breaking characters
none
Disable all decompositions which are not explicitly 
specified in the decompose option list.
(leaves all characters unmodified)
small
Small forms for CNS 11643 compatibility
square
CJK squared font variants
sub
1
Subscript forms
super
1
Superscript forms
vertical
Vertical layout presentation forms
wide
Wide (zenkaku) compatibility forms
1. By default this decomposition is not applied to all characters in order to preserve certain characters; see »Default decompo-
sitions«, page 103, for details.
ɺ
U+00C4
U+2248
U+3251

U+0032
U+0031
U+FB01
I
U+0066
L
U+0069
U+FEB2
ҷ
U+0633
U+2102
&
U+0043
~
U+00BC
U+0031
U+2044

U+0034
U+FEB3
ҷ
U+0633
U+FD0E
ҷ
U+0633
ҵ
U+0631
U+FEB4
ҷ
U+0633
U+FF66
U+30F2
b
U+00A0
U+0020
U+FE50

U+002C
U+3314
U+30AD
U+30ED
U+2081
U+0031
l
U+00AA
U+2122
D
U+0061
7
U+0054
0
U+004D
U+FE37
^
U+007B
£
U+FFE1
£
U+00A3
C# PDF insert image Library: insert images into PDF in C#.net, ASP
How to Insert & Add Image, Picture or Logo on PDF Page Using C#.NET. Import graphic picture, digital photo, signature and logo into PDF document.
how to paste a picture into pdf; how to copy pictures from pdf
VB.NET PDF insert image library: insert images into PDF in vb.net
project. Import graphic picture, digital photo, signature and logo into PDF document. Add images to any selected PDF page in VB.NET.
paste picture into pdf preview; how to copy pictures from a pdf document
7.3  Unicode Postprocessing 103
In contrast, the following option list enables all decompositions (since omitting the oth-
er options activates the default):
decompose={circle=_all}
Default decompositions. By default, all decompositions except fraction are enabled. 
While most default decompositions operate on the _all domain (i.e. they will be applied 
to all characters), some operate on smaller default domains according to Table 7.6. A 
straightforward way of dealing with decompositions is via normalization (see Section 
7.3.3, »Unicode Normalization«, page 104). Since Unicode postprocessing is completely 
disabled for granularity=glyph no decompositions are active in this case.
Table 7.6 Default domains for Unicode decompositions (suboptions for the decompose option).
decomposition 
default in TET
canonical
canonical={[U+0374 U+037E U+0387 U+1FBE U+1FEF U+1FFD U+2000 U+2001 U+2126 U+212A 
U+212B U+2329-U+232A]}
The default domain includes canonical duplicates (singletons), but not other canonically equiva-
lent characters. The default is not _all in order to preserve characters like 
.
compat
compat={[U+FB00-U+FB17]}
The default domain includes Latin and Armenian ligatures, but not other compatibility charac-
ters. The default is not _all in order to preserve characters like 
.
fraction
fraction=_none
Fractions are not decomposed by default because this would lead to undesired sequences of the 
digits for integer and fractional parts, e.g. client applications would wrongly interpret the se-
quence 
(representing the numerical value 9.5) as 
which 
represents the numerical value (91)/2=45.5.
sub
super
sub={[U+208A-U+208E]}
super={[U+207A-U+207E]}
The default domain includes only mathematical signs. Superscript and subscript digits are not de-
composed by default to avoid problems with the numerical interpretation similar to those men-
tioned above for fraction. Characters such as the trademark sign 
will not be decomposed 
to 
by default.
all others
circle=_all final=_all ... vertical=_all wide=_all
All other decompositions are enabled for all characters by default.
ɺ
U+00C4
ô
U+0132

U+0039

U+00BD

U+0039
U+0031
U+2044

U+0032
U+2122
7
U+0054
0
U+004D
VB.NET TIFF: How to Draw Picture & Write Text on TIFF Document in
Copy the demo codes and run your project to see New RaterEdgeDrawing() drawing.Picture = "RasterEdge" drawing & profession imaging controls, PDF document, tiff
how to paste a picture in a pdf; how to cut a picture out of a pdf
VB.NET Image: Image Cropping SDK to Cut Out Image, Picture and
first! VB.NET Image & Picture Cropping Application. Do you need to save a copy of certain part of an image file in a programming way?
how to copy an image from a pdf in; extract images from pdf files without using copy and paste
104
Chapter 7:  Advanced Unicode Handling
7.3.3 Unicode Normalization
The Unicode standard defines four normalization forms which are based on the notions 
of canonical equivalence and compatibility equivalence (these are discussed in Section 
7.3.2, »Unicode Decomposition«, page 100). All normalization forms put combining 
marks in a specific order and apply decomposition and composition in different ways:
>Normalization Form C (NFC) applies canonical decomposition followed by canonical 
composition.
>Normalization Form D (NFD) applies canonical decomposition.
>Normalization Form KC (NFKC) applies compatibility decomposition followed by ca-
nonical composition.
>Normalization Form KD (NFKD) applies compatibility decomposition.
The normalization forms are specified in Unicode Standard Annex #15 »Unicode Nor-
malization Forms« (see www.unicode.org/versions/Unicode5.2.0/ch03.pdf#G21796 and 
www.unicode.org/reports/tr15/).
TET supports all four Unicode normalization forms. Unicode normalization can be 
controlled via the normalize document option, e.g.
normalize=nfc
TET does not apply normalization by default. Because of the possible interaction be-
tween the decompose and normalize options, setting the normalize option to a value dif-
ferent from none disables the default decompositions.
The choice of normalization form depends on the application’s requirements. For 
example, some databases expect text in NFC which also the preferred format for Uni-
code text on the Web. Table 7.7 demonstrates the effect of Normalization on various 
characters.
Table 7.7 Unicode normalization forms: examples
before 
normalization
NFC
NFD
NFKC
NFKD
ɺ
U+00C4
ɺ
U+00C4
$
U+0041
ɰ
U+0308
ɺ
U+00C4
$
U+0041
ɰ
U+0308
$
U+0041
ɰ
U+0308
ɺ
U+00C4
$
U+0041
ɰ
U+0308
ɺ
U+00C4
$
U+0041
ɰ
U+0308
ɰ
U+0308
$
U+0041
ɰ
U+0308
$
U+0041
ɰ
U+0308
$
U+0041
ɰ
U+0308
$
U+0041
ɰ
U+0308
$
U+0041
U+FB01
U+FB01
U+FB01
I
U+0066
L
U+0069
I
U+0066
L
U+0069

U+0033
U+2075

U+0033
U+2075

U+0033
U+2075

U+0033

U+0035

U+0033

U+0035
U+212B
ɻ
U+00C5
$
U+0041
ɲ
U+030A
ɻ
U+00C5
$
U+0041
ɲ
U+030A
U+2122
U+2122
U+2122
7
U+0054
0
U+004D
7
U+0054
0
U+004D
VB.NET Image: Image Resizer Control SDK to Resize Picture & Photo
NET Method to Resize Image & Picture. Here we code demo, which you can directly copy to your provide powerful & profession imaging controls, PDF document, image
how to cut an image out of a pdf; copy image from pdf to powerpoint
C# HTML5 Viewer: Deployment on ASP.NET MVC
under Views according to config in picture above. RasterEdge.XDoc.PDF.HTML5Editor. dll. Open RasterEdge_MVC3 DemoProject, copy following content to your project:
copy picture from pdf reader; paste jpg into pdf preview
7.3  Unicode Postprocessing 105
Table 7.7 Unicode normalization forms: examples
before 
normalization
NFC
NFD
NFKC
NFKD
U+2163
U+2163
U+2163
,
U+0049
9
U+0056
,
U+0049
9
U+0056
U+FB48
Қ
U+05E8
ѹ
U+05BC
Қ
U+05E8
ѹ
U+05BC
Қ
U+05E8
ѹ
U+05BC
Қ
U+05E8
ѹ
U+05BC
U+AC00
U+AC00
U+1100
U+1161
U+AC00
U+1100
U+1161
U+FB48
U+3062
U+FB48
U+3062
U+3061
U+3099
U+FB48
U+3062
U+3061
U+3099
U+32C9
U+32C9
U+32C9
U+0031
U+0030
U+6708
U+0031
U+0030
U+6708
VB.NET PDF remove image library: remove, delete images from PDF in
edit, C#.NET PDF pages extract, copy, paste, C# Support removing vector image, graphic picture, digital photo, scanned or all image objects from PDF document in
how to copy pdf image to powerpoint; copy images from pdf file
C# PDF remove image library: remove, delete images from PDF in C#.
Image: Copy, Paste, Cut Image in Page. Link: Edit Support removing vector image, graphic picture, digital photo remove multiple or all images from PDF document.
paste jpeg into pdf; how to copy images from pdf to word
106
Chapter 7:  Advanced Unicode Handling
7.4 Supplementary Characters and Surrogates
Supplementary characters outside Unicode’s Basic Multilingual Plane (BMP), i.e. those 
with Unicode values above U+FFFF, cannot be expressed as a single UTF-16 value, but re-
quire a pair of UTF-16 values called a surrogate pair. Examples of supplementary charac-
ters include certain mathematical and musical symbols at U+1DXXX as well as thousands 
of CJK extension characters starting at U+20000.
TET interprets and maintains supplementary characters and provides access to the 
corresponding UTF-32 value even in language bindings where native Unicode strings 
support only UTF-16. The uv field returned by TET_get_char_info( ) for the leading surro-
gate value contains the corresponding UTF-32 value. This allows direct access to the 
UTF-32 value of a supplementary character even if you are working in a UTF-16 environ-
ment without any support for UTF-32.
Leading (high) surrogates and trailing (low) surrogates are maintained. The string re-
turned by TET_get_text( ) contains two UTF-16 values.
7.5  Unicode Mapping for Glyphs 107
7.5 Unicode Mapping for Glyphs
While text in PDF can be represented with a variety of font and encoding schemes, TET 
abstracts from glyphs and normalizes all text to Unicode characters, regardless of the 
original text representation in the PDF. Converting the information found in the PDF to 
the corresponding Unicode values is called Unicode mapping, and is crucial for under-
standing the semantics of the text (as opposed to rendering a visual representation of 
the text on screen or paper). In order to provide proper Unicode mapping TET consults 
various data structures which are found in the PDF document, embedded or external 
font files, as well as builtin and user-supplied tables. In addition, it applies several 
methods to determine the Unicode mapping for non-standard glyph names.
Despite all efforts there are still PDF documents where some text cannot be mapped 
to Unicode. In order to deal with these cases TET offers a number of configuration fea-
tures which can be used to control Unicode mapping for problematic PDF files.
Unmappable glyphs. There are several reasons why text in a PDF cannot reliably be 
mapped to Unicode. For example, Type 1 fonts may contain unknown glyph names, and 
TrueType, OpenType, or CID fonts may be addressed with glyph ids without any Uni-
code values in the font or PDF. TET assigns a code point in the Private Use Area to such 
unmapped characters. The P UA values can be removed or replaced with the fold option. 
By default, PUA characters will be mapped to U+FFFD, the Unicode unknown character. 
Your code should be prepared for this character. If you don’t care about Unicode map-
ping problems you can simply ignore U+FFFD, or use the following document option to 
remove it:
fold={ {[:Private_Use:] remove} }
In order to check for unmappable glyphs you can use the unknown field returned by 
TET_get_char_info().
Summary of Unicode mapping controls. While TET implements many workarounds in 
order to process PDF documents which actually don’t contain Unicode values so that it 
can successfully extract the text nevertheless. However, there are still documents where 
the text cannot be extracted since not enough information is available in the PDF and 
relevant font data structures. TET contains various configuration features which can be 
used to supply additional Unicode mapping information. These features are detailed in 
this section.
Using the glyphmapping option of TET_open_document( ) (see Section 10.7, »Document 
Functions«, page 161) you can control Unicode mapping for glyphs in several ways. The 
following list gives an overview of available methods (which can be combined). These 
controls can be applied on a per-font basis or globally for all fonts in a document:
>The suboption forceencoding can be used to completely override all occurrences of 
the predefined PDF encodings WinAnsiEncoding or MacRomanEncoding.
>The suboptions codelist and tounicodecmap can be used to supply Unicode values in a 
simple text format (a codelist resource).
>The suboption glyphlist can be used to supply Unicode values for non-standard glyph 
names.
>The suboption glyphrule can be used to define a rule which will be used to derive Uni-
code values from numerical glyph names in an algorithmic way. Several rules are al-
108
Chapter 7:  Advanced Unicode Handling
ready built into TET. The option encodinghint can be used to control the internal 
rules.
>In addition to dozens of predefined encodings, custom encodings can be defined for 
use with the encodinghint option or the encoding suboption of the glyphrule option.
>External fonts can be configured to provide Unicode mapping information if the 
PDF does not provide enough information and the font is not embedded in the PDF.
Analyzing PDF documents with the PDFlib FontReporter Plugin
1
. In order to obtain 
the information required to create appropriate Unicode mapping tables you must ana-
lyze the problematic PDF documents.
PDFlib GmbH provides a free companion product to TET which assists in this situa-
tion: PDFlib FontReporter is an Adobe Acrobat plugin for easily collecting font, encod-
ing, and glyph information. The plugin creates detailed font reports containing the ac-
tual glyphs along with the following information:
>The corresponding code: the first hex digit is given in the left-most column, the sec-
ond hex digit is given in the top row. For CID fonts the offset printed in the header 
must be added to obtain the code corresponding to the glyph.
>The glyph name if present.
>The Unicode value(s) corresponding to the glyph (if Acrobat can determine them).
These pieces of information play an important role for TET’s glyph mapping controls. 
Figure 7.2 shows two pages from a sample font report. Font reports created with the 
FontReporter plugin can be used to analyze PDF fonts and create mapping tables for 
successfully extracting the text with TET. It is highly recommended to take a look at the 
corresponding font report if you want to write Unicode mapping tables or glyph name 
heuristics to control text extraction with TET.
1. The PDFlib FontReporter plugin is available for free download at www.pdflib.com/products/fontreporter 
7.5  Unicode Mapping for Glyphs 109
Precedence rules. TET will apply the glyph mapping controls in the following order:
>Codelist and ToUnicode CMap resources will be consulted first.
>If the font has an internal ToUnicode CMap it will be considered next.
>For glyph names TET will apply an external or internal glyph name mapping rule if 
one is available which matches the font and glyph name.
>Lastly, a user-supplied glyph list will be applied.
Code list resources for all font types. Code lists are similar to glyph lists except that 
they specify Unicode values for individual codes instead of glyph names. Although 
multiple fonts from the same foundry may use identical code assignments, codes (also 
called glyph ids) are generally font-specific. As a consequence, separate code lists will be 
required for individual fonts. A code list is a text file where each line describes a Unicode 
mapping for a single code according to the following rules:
>Text after a percent sign ’%’ will be ignored; this can be used for comments.
>The first column contains the glyph code in decimal or hexadecimal notation. This 
must be a value in the range 0-255 for simple fonts, and in the range 0-65535 for CID 
fonts.
>The remainder of the line contains up to 7 Unicode code points for the code. The val-
ues can be supplied in decimal notation or (with the prefix x or 0x) in hexadecimal 
notation. UTF-32 is supported, i.e. surrogate pairs can be used.
Fig. 7.2
Sample font reports created with the PDFlib FontReporter plugin for Adobe Acrobat
110
Chapter 7:  Advanced Unicode Handling
By convention, code lists use the file name suffix .cl. Code lists can be configured with 
the codelist resource. If no code list resource has been specified explicitly, TET will search 
for a file named <mycodelist>.gl (where <mycodelist> is the resource name) in the search-
path hierarchy (see Section 5.2, »Resource Configuration and File Searching«, page 61 for 
details). In other words: if the resource name and the file name (without the .cl suffix) 
are identical you don’t have to configure the resource since TET will implicitly do the 
equivalent of the following call (where name is an arbitrary resource name):
set_option("codelist {name name.cl}");
The following sample demonstrates the use of code lists. Consider the mismapped logo-
type glyphs in Figure 7.3 where a single glyph of the font actually represents multiple 
characters, and all characters together create the company logotype. However, the 
glyphs are wrongly mapped to the characters a, b, c, d, and e. In order to fix this you 
could create the following code list:
% Unicode mappings for codes in the GlobeLogosOne font
x61     x0054 x0068 x0065 x0020         % The
x62     x0042 x006F                     % Bo
x63     x0073 x0074 x006F x006E x0020   % ston
x64     x0047 x006C x006F               % Glo
x65     x0062 x0065                     % be
Then supply the codelist with the following option to TET_open_document( ) (assuming 
the code list is available in a file called GlobeLogosOne.cl and can be found via the search 
path):
glyphmapping {{fontname=GlobeLogosOne codelist=GlobeLogosOne}}
ToUnicode CMap resources for all font types. PDF supports a data structure called 
ToUnicode CMap which can be used to provide Unicode values for the glyphs of a font. 
If this data structure is present in a PDF file TET will use it. Alternatively, a ToUnicode 
CMap can be supplied in an external file. This is useful when a ToUnicode CMap in the 
PDF is incomplete, contains wrong entries, or is missing. A ToUnicode CMap will take 
precedence over a code list. However, code lists use an easier format the ToUnicode 
CMaps so they are the preferred format.
By convention, CMaps don’t use any file name suffix. ToUnicode CMaps can be con-
figured with the cmap resource (see Section 5.2, »Resource Configuration and File 
Searching«, page 61). The contents of a cmap resource must adhere to the standard CMap 
syntax.
1
In order to apply a ToUnicode CMap to all fonts in the Warnock family use the 
following option to TET_open_document( ):
1. See partners.adobe.com/public/developer/en/acrobat/5411.ToUnicode.pdf 
Fig. 7.3
The font report for a logotype font shows that the font contains wrong Unicode mappings.
A custom code list can correct such mappings.
Documents you may be interested
Documents you may be interested