pdf viewer in mvc c# : Paste image into pdf preview SDK software service wpf .net asp.net dnn TET-4.2-manual9-part1746

7.1  Important Unicode Concepts 91
7Advanced Unicode Handling
7.1 Important Unicode Concepts
This section provides basic information about Unicode since text handling in TET heav-
ily relies on the Unicode standard. The Unicode Web site provides a wealth of additional 
information:
www.unicode.org 
Characters and glyphs. When dealing with text it is important to clearly distinguish 
the following concepts:
>Characters are the smallest units which convey information in a language. Common 
examples are the letters in the Latin alphabet, Chinese ideographs, and Japanese syl-
lables. Characters have a meaning: they are semantic entities.
>Glyphs are different graphical variants which represent one or more particular char-
acters. Glyphs have an appearance: they are representational entities.
There is no one-to-one relationship between characters and glyphs. For example, a liga-
ture is a single glyph which is represented by two or more separate characters. On the 
other hand, a specific glyph may be used to represent different characters depending on 
the context (some characters look identical, see Figure 7.1).
Unicode postprocessing in TET can change the relationship of glyphs and resulting 
characters even more. For example, decompositions may convert a single character into 
multiple characters, and foldings may remove characters. For these reasons you must 
not assume any specific relationship of characters and glyphs.
BMP and PUA. The following terms occur frequently in Unicode-based environments:
>The Basic Multilingual Plane (BMP) comprises the code points in the Unicode range 
U+0000...U+FFFF. The Unicode standard contains many more code points in the sup-
plementary planes, i.e. in the range U+10000...U+10FFFF.
U+0067 LATIN SMALL LETTER G
Characters
Glyphs
U+0066 LATIN SMALL LETTER F +
U+0069 LATIN SMALL LETTER I
U+2126 OHM SIGN    or
U+03A9 GREEK CAPITAL LETTER OMEGA
U+2167 ROMAN NUMERAL EIGHT    or
U+0056 V U+0049 I U+0049 I U+0049 I
Fig. 7.1
Relationship of glyphs 
and characters
Paste image into pdf preview - 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
how to copy images from pdf to word; how to copy and paste a pdf image into a word document
Paste image into pdf preview - 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
how to copy text from pdf image to word; how to cut and paste image from pdf
92
Chapter 7:  Advanced Unicode Handling
>A Private Use Area (PUA) is one of several ranges which are reserved for private use. 
PUA code points cannot be used for general interchange since the Unicode standard 
does not specify any characters in this range. The Basic Multilingual Plane includes a 
PUA in the range U+E000...U+F8FF. Plane fifteen (U+F0000... U+FFFFD) and plane six-
teen (U+100000...U+10FFFD) are completely reserved for private use.
Unicode encoding forms (UTF formats). The Unicode standard assigns a number (code 
point) to each character. In order to use these numbers in computing, they must be rep-
resented in some way. In the Unicode standard this is called an encoding form (former-
ly: transformation format); this term should not be confused with font encodings. Uni-
code defines the following encoding forms:
>UTF-8: This is a variable-width format where code points are represented by 1-4 bytes. 
ASCII characters in the range U+0000...U+007F are represented by a single byte in 
the range 00...7F. Latin-1 characters in the range U+00A0...U+00FF are represented by 
two bytes, where the first byte is always 0xC2 or 0xC3 (these values represent Â and Ã 
in Latin-1).
>UTF-16: Code points in the Basic Multilingual Plane (BMP) are represented by a single 
16-bit value. Code points in the supplementary planes, i.e. in the range U+10000... 
U+10FFFF, are represented by a pair of 16-bit values. Such pairs are called surrogate 
pairs. A surrogate pair consists of a high-surrogate value in the range D800...DBFF 
and a low-surrogate value in the range DC00...DFFF. High- and low-surrogate values 
can only appear as parts of surrogate pairs, but not in any other context.
>UTF-32: Each code point is represented by a single 32-bit value.
Unicode encoding schemes and the Byte Order Mark (BOM). Computer architectures 
differ in the ordering of bytes, i.e. whether the bytes constituting a larger value (16- or 
32-bit) are stored with the most significant byte first (big-endian) or the least significant 
byte first (little-endian). A common example for big-endian architectures is PowerPC, 
while the x86 architecture is little-endian. Since UTF-8 and UTF-16 are based on values 
which are larger than a single byte, the byte-ordering issue comes into play here. An en-
coding scheme (note the difference to encoding form above) specifies the encoding 
form plus the byte ordering. For example, UTF-16BE stands for UTF-16 with big-endian 
byte ordering. If the byte ordering is not known in advance it can be specified by means 
of the code point U+FEFF, which is called Byte Order Mark (BOM). Although a BOM is not 
required in UTF-8, it may be present as well, and can be used to identify a stream of 
bytes as UTF-8. Table 7.1 lists the representation of the BOM for various encoding forms.
Table 7.1 Byte order marks for various Unicode encoding forms
Encoding form
Byte order mark (hex)
graphical representation in WinAnsi
1
1. The black square ■ denotes a null byte.
UTF-8
EF BB BF

UTF-16 big-endian
FE FF
UTF-16 little-endian
FF FE
ÿþ
UTF-32 big-endian
00 00 FE FF
■■
UTF-32 little-endian
FF FE 00 00
ÿþ
■■
VB.NET PDF insert image library: insert images into PDF in vb.net
Insert images into PDF form field in VB.NET. An independent .NET framework component supports inserting image to PDF in preview without adobe PDF control
pdf cut and paste image; copy and paste image from pdf to word
VB.NET PDF File Compress Library: Compress reduce PDF size in vb.
enables compressing and decompressing in preview in ASP.NET to reduce or minimize original PDF document size Reduce image resources: Since images are usually or
how to copy pdf image into word; copy pdf picture to word
7.1  Important Unicode Concepts 93
Composite characters and sequences. Some glyphs map to a sequence of multiple 
characters. For example, ligatures will be mapped to multiple characters according to 
their constituent characters. However, composite characters (such as the Roman nu-
meral in Figure 7.1) may or may not be split, subject to information in the font and PDF 
as well as the decompose document option (see Section 7.3, »Unicode Postprocessing«, 
page 97).
If appropriate, TET will split composite characters into a sequence of constituent 
characters. The corresponding sequence will be part of the text returned by TET_get_
text( ). For each character, details of the underlying glyph(s) can be obtained via TET_get_
char_info( ), including the information whether the character is the start or continua-
tion of a sequence. Position information will only be returned for the first character of a 
sequence. Subsequent characters of a sequence will not have any associated position or 
width information, but must be processed in combination with the first character.
Characters without any corresponding glyph. Although every glyph on the page will 
be mapped to one or more corresponding Unicode characters, not all characters deliv-
ered by TET actually correspond to a glyph. Characters which correspond to a glyph are 
called real characters, others are called artificial characters. There are several classes of 
artificial characters which will be delivered although a directly corresponding glyph is 
not available:
>A composite character (see above) will map to a sequence of multiple Unicode char-
acters. While the first character in the sequence corresponds to the actual glyph, the 
remaining characters do not correspond to any glyph.
>Separator characters inserted via the lineseparator/wordseparator options are artifacts 
without any corresponding glyph.
C# PDF insert image Library: insert images into PDF in C#.net, ASP
inserting image to PDF in preview without adobe PDF reader installed. Able to zoom and crop image and achieve image resizing. Merge several images into PDF.
copy and paste image from pdf to pdf; how to copy and paste a picture from a pdf
C# PDF insert text Library: insert text into PDF content in C#.net
Supports adding text to PDF in preview without adobe reader installed in ASP.NET. value, The char wil be added into PDF page, 0
how to copy images from pdf file; paste image into pdf in preview
94
Chapter 7:  Advanced Unicode Handling
7.2 Unicode Preprocessing (Filtering)
TET applies several filters to remove text which is unlikely to be useful. These filters 
modify the text before applying any Unicode postprocessing steps. While some filters 
are always active, others require the Wordfinder and are therefore active only for 
granularity=word or above.
7.2.1 Filters for all Granularities
The following filters can be used with all granularities.
Text in unwieldy font sizes. Very small or very large text can optionally be ignored, e.g. 
large characters in the background of the page. The limits can be controlled with the 
fontsizerange page option. By default, text in all font sizes will be extracted.
The following page option limits the range of font sizes for extracted text from 10 to 
50 points; text in other font sizes will be ignored:
fontsizerange={10 50}
Invisible text. Invisible text (i.e. text with textrendering=3) is extracted by default. Note 
that text in PDF may be invisible for various other reasons than the textrendering prop-
erty, e.g. the text color is identical to the background color, the text may be obscured by 
other objects on the page, etc. The behavior described here relates only to text with 
textrendering=3. This PDF technique is commonly used for the results of OCR where the 
text sits invisibly »behind« the scanned raster image.
Invisible text can be identified with the textrendering member of the TET_char_info 
structure returned by TET_get_char_info( ) (see Table 10.15, page 179), or with the Glyph/
@textrendering attribute in TETML.
Use the following page option if you want to ignore invisible text:
ignoreinvisibletext=true
Completely ignore text with certain font names or font types. In some situations it 
may be useful to completely ignore text in one ore more fonts specified by name, e.g. a 
symbolic font which does not contribute any meaningful text. As an alternative, the 
problematic fonts can also be specified by font type. This is mainly useful for Type 3 
fonts which are sometimes used for ornaments. This filter can be controlled via the 
remove suboption of the glyphmapping document option.
E.g. ignore all text in Type 3 fonts:
glyphmapping={{fonttype={Type3} remove}}
Ignore all text in the Webdings, Wingdings, Wingdings 2, and Wingdings 3 fonts:
glyphmapping={{fontname=Webdings remove} {fontname=Wingdings* remove}}
The conditions for font name and font type can also be combined, e.g. ignore text in all 
Type 3 fonts starting with the letter A:
glyphmapping={{fonttype={Type3} fontname=A* remove}}
C# PDF remove image library: remove, delete images from PDF in C#.
Able to cut and paste image into another PDF file. Export high quality image from PDF document in .NET program. Remove PDF image in preview without adobe PDF
paste image into pdf reader; copy image from pdf preview
How to C#: Preview Document Content Using XDoc.PowerPoint
Add necessary XDoc.PowerPoint DLL libraries into your created C# application as You may get document preview image from an existing PowerPoint file in C#.net.
how to copy picture from pdf to powerpoint; how to cut an image out of a pdf
7.2  Unicode Preprocessing (Filtering) 95
7.2.2 Filters for Granularity Word and above
The following filters can be used only for granularity=word, line, and page.
Dehyphenation. Dehyphenation removes hyphen characters and combines the parts 
of a hyphenated word.
Hyphens used for splitting words across lines can be identified with the attributes 
member of the TET_char_info structure (see Table 10.15, page 179), or with the Glyph/
@hyphenation attribute in TETML.
Dehyphenation can be disabled with the following page option:
contentanalysis={dehyphenate=false}
Hyphen reporting. If dehyphenation is enabled you can decide whether or not the hy-
phen characters between the parts of hyphenated words will be reported in the generat-
ed glyph lists or not, i.e. the list of glyphs returned by TET_get_char_info( ) and the Glyph 
elements in TETML. By default, hyphens will be removed.
However, some applications may need to know the exact location of the hyphen on 
the page. For example, the highlight_search_terms and search_and_replace_text topics in 
the TET Cookbook take the hyphen glyph into account when placing an annotation or 
replacement text on top of the original word. In this situation you can instruct TET to 
include all hyphens which have been detected by the dehyphenation process with the 
following page option:
contentanalysis={keephyphenglyphs=true}
The hyphens can be identified by the TET_ATTR_DEHYPHENATION_ARTIFACT flag of the at-
tributes member in the TET_char_info structure returned by TET_get_char_info( ) (see Ta-
ble 10.15, page 179), or in TETML with the Glyph/@dehyphenation attribute with value 
artifact.
Shadow removal. Redundant text which creates only visual artifacts such as shadow 
effects or artificial bold text will be removed.
Shadow and artificial bold text can be identified with the attributes member of the 
TET_char_info structure (see Table 10.15, page 179), or with the Glyph/@shadow attribute 
in TETML.
Shadow removal can be disabled with the following page option:
contentanalysis={shadowdetect=false}
Unmapped glyphs. Glyphs which cannot be mapped to Unicode are replaced with a 
character in the Private Use Area (see section »Unmappable glyphs«, page 107). In some 
cases PDF documents do not contain enough information (or only inconsistent infor-
mation for assigning a usable Unicode value to a glyph. In such cases the characters 
specified in the unknownchar document option will be assigned.
All PUA characters will be replaced with the Unicode unknown character U+FFFD by 
default. This behavior can be changed with the fold document option. The following op-
tion list removes all unknown characters, i.e. PUA characters and characters for which 
no usable Unicode value could be determined:
fold={{[:Private_Use:] remove} {[U+FFFD] remove} default}
How to C#: Preview Document Content Using XDoc.Word
Get Preview From File. You may get document preview image from an existing Word file in C#.net. You may get document preview image from stream object in C#.net.
how to copy and paste an image from a pdf; how to cut a picture out of a pdf
C# WinForms Viewer: Load, View, Convert, Annotate and Edit PDF
Convert PDF to Tiff image (.tif, .tiff). • Convert PDF to HTML (.htm, .html). PDF Annotation. • Add sticky notes to PDF document in preview.
how to copy and paste a picture from a pdf document; how to cut pdf image
96
Chapter 7:  Advanced Unicode Handling
Unmapped glyphs (i.e. characters which are visible on the page, but cannot be extracted 
by TET) can be identified with the unknown member of the TET_char_info structure (see 
Table 10.15, page 179), or with the Glyph/@unknown attribute in TETML.
VB.NET PDF File Split Library: Split, seperate PDF into multiple
Divide PDF file into multiple files by outputting PDF file size. Independent component for splitting PDF document in preview without using external PDF
copy image from pdf to powerpoint; how to copy pictures from pdf in
7.3  Unicode Postprocessing 97
7.3 Unicode Postprocessing
TET offers various controls for fine-tuning the Unicode characters comprising the ex-
tracted text. The postprocessing steps discussed in this chapter are defined in the Uni-
code standard. They are available in TET and will be processed in the following order:
>Foldings are controlled by the fold document option and preserve, remove, or replace 
certain characters. Examples: remove hyphens which are used to split words, remove 
Arabic Tatweel characters.
>Decomposition is controlled by the decompose document option and replaces a char-
acter with one ore more equivalent characters. Examples: split ligatures, map full-
width ASCII and symbol variants to the corresponding non-fullwidth characters.
>Normalization is controlled by the normalize document option and converts the text 
to one of the normalized Unicode forms. Examples: combine base character and dia-
critical character to a common character; map Ohm sign to Greek Omega.
7.3.1 Unicode Folding
Foldings process one or more Unicode characters and apply a certain action on each of 
the characters. The following actions are available:
>preserve the character;
>remove the character;
>replace it with a another (fixed) character.
Foldings are not chained: the output of a folding will not be processed again by the 
available foldings. Foldings affect only the Unicode text output, but not the set of 
glyphs reported in the TET_char_info structure or the <Glyph> elements in TETML. For ex-
ample, if a folding removes certain Unicode characters, the corresponding glyphs which 
created the initial characters will still be reported.
In order to improve readability the examples in the tables below list isolated subop-
tions of the fold option list. Keep in mind that these suboptions must be combined to a 
single large fold option list if you want to apply multiple foldings; do not supply the 
fold option more than once. For example, the following is wrong:
fold={ {[:blank:] U+0020} } fold={ {_dehyphenation remove} }
WRONG!
The following option list shows the correct syntax for multiple foldings:
fold={ {[:blank:] U+0020 } {_dehyphenation remove} }
98
Chapter 7:  Advanced Unicode Handling
Folding examples. Table 7.2 lists examples for the fold option which demonstrate vari-
ous folding applications. The sample options must be supplied in the option list for 
TET_open_document(). TET can apply foldings to a selected subset of all Unicode charac-
ters. These are called Unicode sets; their syntax is discussed in »Unicode sets«, page 145.
Table 7.2 Examples for the fold option
description and option list
before folding
after folding
Remove all characters in a Unicode set
Keep only characters in ISO 8859-1 (Latin-1) in the output, i.e. remove all characters 
outside the Basic Latin Block:
fold={{[^U+0020-U+00FF] remove}}
n/a
Remove all non-alphabetic characters (e.g. punctuation, numbers):
fold={{[:Alphabetic=No:] remove}}
n/a
Remove all characters except numbers:
fold={{[^[:General_Category=Decimal_Number:]] remove}}
n/a
Remove all unknown characters, i.e. PUA characters and characters for which no 
usable Unicode value could be determined (the remaining default foldings are re-
enabled): fold={{[:Private_Use:] remove} {[U+FFFD] remove} default}
n/a
Remove all dashed punctuation characters:
fold={{[:General_Category=Dash_Punctuation:] remove}}
n/a
Remove all Bidi control characters:
fold={{[:Bidi_Control:] remove}}
n/a
Replace all characters in a Unicode set with a specific character
Space folding: map all variants of Unicode space characters to U+0020:
fold={{[:blank:] U+0020}}
Dashes folding: map all variants of Unicode dash characters to U+002D:
fold={{[:Dash:] U+002D}}
Replace all unassigned characters (i.e. Unicode code points to which no character 
is assigned) with U+FFFD: fold={{[:Unassigned:] U+FFFD}}
Special handling for individual characters
Preserve all hyphen characters at line breaks while keeping the remaining default 
foldings. Since these characters are identified internally in TET (as opposed to hav-
ing a fixed Unicode property) the keyword _dehyphenation is used to identify the 
folding’s domain: fold={{_dehyphenation preserve}}
Preserve Arabic Tatweel characters (which are removed by default):
fold={{[U+0640] preserve}}
Replace various punctuation characters with their ASCII counterparts:
fold={ {[U+2018] U+0027} {[U+2019] U+0027} {[U+201C] U+0022} 
{[U+201D] U+0022}}
Æ
U+0104

U+0037
$
U+0041
$
U+0041

U+0037
$
U+0041

U+0037
b
U+FFFF

U+002D
U+200E
b
U+00A0
U+0020
U+2011

U+002D
b
U+03A2
U+FFFD

U+002D

U+002D
ҿ
U+0640
ҿ
U+0640
U+201C

U+002D
U+0022
7.3  Unicode Postprocessing 99
Default foldings. Except for granularity=glyph TET applies all of the foldings listed in 
Table 7.3 by default. In order to combine custom foldings with the internal default fold-
ings, the keyword default must be supplied after the custom folding options, e.g.
fold={ {_dehyphenation preserve} default }
Adding the keyword default to the fold option list is recommended in most cases unless 
you want to explicitly disable all default foldings.
Table 7.3 Default values for the fold option
description and option list
sample input
output
Space folding: map all variants of Unicode space characters to U+0020:
fold={{[:blank:] U+0020}}
Map all characters in the Private Use Area (PUA) to the unknown character (by de-
fault this is U+FFFD, but it can be changed with unknownchar option):
fold={{[:Private_Use:] unknownchar}}
Remove all hyphens in dehyphenated words:
fold={{_dehyphenation remove}}
n/a
Remove the Arabic Tatweel character:
fold={{[U+0640] remove}}
n/a
Remove all control characters as well as characters which are not assigned in Uni-
code (these foldings will always be performed after all other foldings when creat-
ing TETML output):
fold={{[:Control:] remove} {[:Unassigned:] remove}}
n/a
b
U+00A0
U+0020
U+E001
U+FFFD

U+002D
ҿ
U+0640
U+000C
b
U+03A2
100
Chapter 7:  Advanced Unicode Handling
7.3.2 Unicode Decomposition
Decompositions replace a character with an equivalent sequence of one or more other 
characters. A Unicode character is called (either compatibility or canonical) equivalent 
to another character or a sequence of characters if they actually mean the same, but for 
historical reasons (mostly related to round tripping with legacy encodings) are encoded 
separately in Unicode. Decompositions destroy information. This is useful if you are 
not interested in the difference between the original character and its equivalent. If you 
are interested in the difference, however, the respective decomposition should not be 
applied. For a full discussion of Unicode decomposition see
www.unicode.org/versions/Unicode5.2.0/ch03.pdf#G729.
Note The term »decomposition« is used here as defined in the Unicode standard, although many de-
compositions do not actually split a character into multiple parts, but convert a single charac-
ter to another character.
Canonical decomposition. Characters or character sequences which are canonically 
equivalent represent the same abstract character and should therefore always have the 
same appearance and behavior. Common examples include precomposed characters 
(e.g. 
) vs. combining sequences (e.g. 
): both representations are canoni-
cally equivalent. Switching from one representation to the other does not remove infor-
mation. Canonical decompositions replace one representation with another which is 
considered the canonical representation.
In the Unicode code charts
1
(but not the character tables) canonical mappings are 
marked with the symbol IDENTICAL TO 
. The decomposition name <canonical> is 
implicitly assumed. Table 7.4 contains several examples.
1. See www.unicode.org/Public/5.2.0/charts/
Table 7.4 Canonical decomposition: suboption for the decompose option (canonically equivalent characters are 
marked with the symbol IDENTICAL TO 
in the Unicode code charts)
decomposition 
name
description
before 
decomposition
after decomposition
canonical
1
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.
Canonical decomposition
ɺ
U+00C4
$
U+0041
ɰ
U+0308
ɺ
U+00C4
U+2261
ɺ
U+00C4
U+2261
ɶ
U+00C0
U+F9F4
U+2126
U+3070
U+FB2F
$
U+0041
ɨ
U+0300
U+6797
˖
U+03A9
U+2126
U+306F
U+2126
U+306F
U+3099
҂
U+05D0
Ѷ
U+05B8
Documents you may be interested
Documents you may be interested