c# pdf to tiff : Create signature from pdf application control utility azure html winforms visual studio Python%20How%20to%20Program%20200254-part1741

Chapter 16
Python XML Processing
539
getElementsByTagName(
name 
)
Returns a 
NodeList
of all nodes in the subtree 
with the tag name name
Attri
b
ut
e/
M
e
th
od
D
e
s
c
ri
p
ti
o
n
getAttribute(
name 
)
Returns XML attribute name’s value as a string.
getAttributeNode(
name 
)
Returns the 
Attr
node for XML attribute name.
getElementsByTagName(
name 
)
Returns a 
NodeList
of all nodes in the subtree 
with the tag name name
removeAttribute(
name 
)
Removes XML attribute name (specified as a string) 
from the XML attribute list for the given element 
node.
removeAttributeNode(
name 
)
Removes 
Attr
node name from the XML attribute 
list for the given 
Element
node.
setAttribute(
namevalue 
)
Changes the value of XML attribute name to value
Both arguments are specified as strings.
setAttributeNode(
name 
)
Adds new 
Attr
node name to the attribute list for 
the given element node. If the attribute already 
exists, the new attribute replaces the current 
attribute.
tagName
Element’s tag name.
F
ig
. 16.10
F
ig
. 16.10
F
ig
. 16.10
F
ig
. 16.10
Element
a
ttr
ib
ut
e
a
n
d
m
e
th
od
s.
Attri
b
ut
e
D
e
s
c
ri
p
ti
o
n
name
Name of the XML attribute.
prefix
Namespace prefix, if it exists, or 
None
.
F
ig
. 16.11
F
ig
. 16.11
F
ig
. 16.11
F
ig
. 16.11
Attr
a
ttr
ib
ut
e
s.
Atrri
b
ut
e
D
e
s
c
ri
p
ti
o
n
data
Node
’s (
Text
or 
Comment
) data.
F
ig
. 16.12
F
ig
. 16.12
F
ig
. 16.12
F
ig
. 16.12
Text
a
n
d
Comment
a
ttr
ib
ut
e
.
Atrri
b
ut
e/
M
e
th
od
D
e
s
c
ri
p
ti
o
n
F
ig
. 16.9
F
ig
. 16.9
F
ig
. 16.9
F
ig
. 16.9
Document
a
ttr
ib
ut
e
a
n
d
m
e
th
od
s. (P
a
rt 2 
o
f 2.)
pythonhtp1_16.fm  Page 539  Wednesday, December 19, 2001  2:46 PM
Create signature from pdf - C# PDF File Permission Library: add, remove, update PDF file permission in C#.net, ASP.NET, MVC, WPF
Tell C# users how to set PDF file permissions, like printing, copying, modifying, extracting, annotating, form filling, etc
adding a signature to a pdf form; add signature to pdf online
Create signature from pdf - VB.NET PDF File Permission Library: add, remove, update PDF file permission in vb.net, ASP.NET, MVC, WPF
VB.NET Tutorial for How to Set PDF File Access Permissions Using XDoc.PDF for .NET
add signature to pdf acrobat reader; add signature image to pdf acrobat
540
Python XML Processing
Chapter 16
1
# Fig. 16.13: fig16_13.py
2
# Using 4DOM to manipulate an XML Document.
3
4
import sys
5
from xml.dom.ext.reader import PyExpat
6
from xml.dom.ext import PrettyPrint
7
8
def printInstructions():
9
print """\nEnter 'a' to add a contact.
10
Enter 'l' to list contacts.xml.
11
Enter 'i' for instructions.
12
Enter 'q' to quit."""
13
14
def printList( document ):
15
print "Your contact list is:"
16
17
# iterate over NodeList of contact elements
18
for contact in document.getElementsByTagName( "contact" ):
19
first = contact.getElementsByTagName( "FirstName" )[ 0 ]
20
21
# get first node’s value
22
firstText = first.firstChild.nodeValue
23
24
# get NodeList for nodes that contain tag name "LastName"
25
last = contact.getElementsByTagName( "LastName" )[ 0 ]
26
lastText = last.firstChild.nodeValue
27
28
print firstText, lastText
29
30
def addContact( document ):
31
root = document.documentElement   # get root element node
32
33
name = raw_input( 
34
"Enter the name of the person you wish to add: " )
35
36
first, last = name.split()
37
38
# create first name element node
39
firstNode = document.createElement( "FirstName" )
40
firstNodeText = document.createTextNode( first )
41
firstNode.appendChild( firstNodeText )
42
43
# create last name element node
44
lastNode = document.createElement( "LastName" )
45
lastNodeText = document.createTextNode( last )
46
lastNode.appendChild( lastNodeText )
47
48
# create contact node, append first name and last name nodes
49
contactNode = document.createElement( "contact" )
50
contactNode.appendChild( firstNode )
51
contactNode.appendChild( lastNode )
52
53
root.appendChild( contactNode ) # add contact node
F
ig
. 16.13
F
ig
. 16.13
F
ig
. 16.13
F
ig
. 16.13 M
a
n
ip
u
la
t
i
n
g
a
n XM
L
doc
um
e
nt. (P
a
rt 1 
o
f 2.)
pythonhtp1_16.fm  Page 540  Wednesday, December 19, 2001  2:46 PM
C# PDF Digital Signature Library: add, remove, update PDF digital
Barcode Read. Barcode Create. OCR. Twain. Edit Digital Signatures. |. Home ›› XDoc.PDF ›› C# PDF: Edit PDF Digital Signature. You maybe interested:
add signature to preview pdf; create signature from pdf
VB.NET PDF Digital Signature Library: add, remove, update PDF
PDF in C#, C#.NET PDF Reading, C#.NET Annotate PDF in WPF, C#.NET PDF Create, C#.NET PDF Document Viewer Search unsigned signature field in PDF document.
create pdf signature box; create a pdf signature file
Chapter 16
Python XML Processing
541
54
55
# open contacts file
56
try:
57
file = open( "contacts.xml""r+" )
58
except IOError:
59
sys.exit( "Error opening file" )
60
61
# create DOM parser and parse XML document
62
reader = PyExpat.Reader()
63
document = reader.fromStream( file )
64
65
printList( document )
66
printInstructions()
67
character = "l"
68
69
while character != "q"  
70
character = raw_input( "\n? " )
71
72
if character == "a":
73
addContact( document )
74
elif character == "l":
75
printList( document )
76
elif character == "i":
77
printInstructions()
78
elif character != "q":
79
print "Invalid command!"
80
81
file.seek( 0, 0 )               # position to beginning of file
82
file.truncate()                 # remove data from file
83
PrettyPrint( document, file )   # print DOM contents to file
84
file.close()                    # close XML file
85
reader.releaseNode( document )  # free memory
Your contact list is:
John Black
Sue Green
Enter 'a' to add a contact.
Enter 'l' to list contacts.xml.
Enter 'i' for instructions.
Enter 'q' to quit.
? a
Enter the name of the person you wish to add: Michael Red
? l
Your contact list is:
John Black
Sue Green
Michael Red
? q
F
ig
. 16.13
F
ig
. 16.13
F
ig
. 16.13
F
ig
. 16.13 M
a
n
ip
u
la
t
i
n
g
a
n XM
L
doc
um
e
nt. (P
a
rt 2 
o
f 2.)
pythonhtp1_16.fm  Page 541  Wednesday, December 19, 2001  2:46 PM
VB.NET PDF Library SDK to view, edit, convert, process PDF file
Password, digital signature and PDF text, image and page added to a specific location on PDF file page. In addition, you can easily create, modify, and delete
add signature to pdf in preview; create pdf signature stamp
C# HTML5 Viewer: Load, View, Convert, Annotate and Edit PDF
XDoc. HTML5 Viewer for C# .NET enables you to create signatures to PDF, including freehand signature, text and date signature. If
adding a signature to a pdf file; add signature block to pdf
542
Python XML Processing
Chapter 16
Line 57 opens 
contacts.xml
for reading and writing. A parser object is instanti-
ated on line 62. Line 63 calls method 
fromStream
to parse the XML document and build
the DOM tree. 
Line 65 calls function 
printList
(lines 14–28) to print the contact list to the screen.
Method 
getElementsByTagName
(line 18) returns a 
NodeList
that contains all 
Ele-
ment
nodes that have 
contact
for a tag name. Line 19 calls 
getElementsByTagName
to obtain a 
NodeList
for all 
Element
nodes that have 
FirstName
for a tag name. Each
node referenced by 
contact
contains only one such node. This one node is accessed as the
first element in the list (i.e., 
[
0
]
). Line 22 assigns the value of 
first
’s first child element
(a 
Text
node) to variable 
firstText
. Lines 25–26 repeat the processes to obtain the last
name. Line 28 prints the current contact’s first name and last name to the screen.
Line 66 calls function 
printInstructions
to print the program’s instructions.
Lines 69–79 get the user’s choice and call the appropriate function.
The 
addContact
function (lines 30–53) adds a contact to the list. The 
Document
’s
root element is obtained via its 
documentElement
attribute (line 31). Lines 33–36 prompt
the user for input and call string method 
split
to separate the first name from the last name.
Line 39 calls the 
Document
’s 
createElement
method to create an 
Element
node
with the tag name 
FirstName
. Lines 40–41 create and append a 
Text
node to this  
Ele-
ment
node by calling the 
createTextNode
and 
appendChild
methods, respectively.
Lines 44–46 create an 
Element
node with the tag name 
LastName
in a similar manner.
Line 49 creates an 
Element
node with the tag name 
contact
. Lines 50–51 call
method 
appendChild
to  add  the 
Element
nodes  referenced  by 
firstNode
and
lastNode
to the node referenced by 
contactNode
. Line 53 calls method 
append-
Child
to add the node referenced by 
contactNode
to the node referenced by 
root
.
When the user has finished adding names to the contact list, the file is saved. The 
seek
method (line 81) positions the file pointer to the beginning of the file and method 
trun-
cate
(line 82) deletes the contents of the file. Then, 
4DOM
’s 
PrettyPrint
function
writes the updated XML to the file (line 83). Function 
PrettyPrint
writes an XML
DOM tree’s data to a specified output stream (with indentation and carriage returns for
readability). Lines 84–85 close the file and release the DOM tree from memory.
1
<?xml version="1.0" encoding="UTF-8"?>
2
<!DOCTYPE contacts>
3
<contacts>
4
<contact>
5
<LastName>Black</LastName>
6
 <FirstName>John</FirstName>
7
</contact>
8
<contact>
9
<LastName>Green</LastName>
10
<FirstName>Sue</FirstName>
11
</contact>
12
<contact>
13
<FirstName>Michael</FirstName>
14
<LastName>Red</LastName>
15
</contact>
16
</contacts>
F
ig
. 16.14
F
ig
. 16.14
F
ig
. 16.14
F
ig
. 16.14 C
o
nt
ac
li
st 
o
ut
p
ut 
b
y F
ig
.16.13.
pythonhtp1_16.fm  Page 542  Wednesday, December 19, 2001  2:46 PM
C#: XDoc.HTML5 Viewer for .NET Online Help Manual
Click to convert PDF document to Word (.docx). PDF and Word (.docx). Annotation Tab. 2. Create Freehand Signature. Click to create a freehand signature.
add signature pdf online; adding signature to pdf in preview
C# PDF insert image Library: insert images into PDF in C#.net, ASP
Create high resolution PDF file without image quality losing in ASP.NET Import graphic picture, digital photo, signature and logo into PDF document.
adding signature to pdf form; adding signature to pdf file
Chapter 16
Python XML Processing
543
16.5 P
a
rsin
g
XM
L
with 
xml.sax
In this section, we discuss the 
xml.sax
package, which provides a set of modules for
SAX-based parsing. With SAX-based parsing, the parser reads the input to identify the
XML markup. As the parser encounters markup, the parser calls event handlers (i.e., meth-
ods). For example, when the parser encounters a start tag, the 
startElement
event han-
dler is called; when the parser encounters character data, the 
characters
event handler
is called. Programmers override event handlers to provide specialized processing of the
XML. Some common SAX event handlers are shown in Fig. 16.15. 
Good Programming Practice 16.2
Review the Python on-line documentation for a complete listing of 
xml.sax
event handlers.
This information can be found at:
www.python.org/doc/current/lib/content-handler-objects.html
16.2
Figure 16.16  demonstrates  SAX-based  parsing.  This  program  allows  the  user  to
specify a tag name to search for in an XML document. When the tag name is encountered,
the program outputs the element’s attribute-value pairs. Methods 
startElement
and
endElement
are overriden to handle the events generated when start tags and end tags
are encountered. Figure 16.17 contains the XML document used by this program. 
Lines 42–43 obtain the name of the XML document to parse and the tag name to locate.
Line 46 invokes 
xml.sax
function 
parse
, which creates a SAX parser object. Function
parse
’s first argument is either a Python file object or a filename. The second argument
passed  to 
parse
must  be  an  instance  of  class 
xml.sax.ContentHandler
(or  a
derived class of 
ContentHandler
, such as 
TagInfoHandler
), which is the main
callback  handler  in 
xml.sax
.  Class 
ContentHandler
contains  the  methods
(Fig. 16.15) for handling SAX events. 
If an error occurs during the opening of the specified 
file
, an 
IOError
exception
is raised, and line 50 displays an error message. If an error occurs while parsing the file
(e.g.,  if  the  specified  XML  document  is  not  well-formed), 
parse
raises  a 
SAX-
ParseException
exception, and line 54 displays an error message.  
Ev
e
nt H
a
n
d
l
e
r
D
e
s
c
ri
p
ti
o
n
characters(
content 
)
Called when the parser encounters character data. The 
character data is passed as content to the event handler.
endDocument()
Called when the parser encounters the end of the docu-
ment.
endElement(
name 
)
Called when the parser encounters an end tag. The tag 
name is passed as an argument to the event handler.
startDocument()
Called when the parser encounters the beginning of the 
document.
startElement(
name
,
attrs 
)
Called when the parser encounters a start tag. The tag 
name and its attributes (attrs) are passed as arguments to 
the event handler.
F
ig
. 16.15
F
ig
. 16.15
F
ig
. 16.15
F
ig
. 16.15
xml.sax
e
v
e
nt-h
a
n
dle
r m
e
th
od
s.
pythonhtp1_16.fm  Page 543  Wednesday, December 19, 2001  2:46 PM
.NET PDF SDK - Description of All PDF Processing Control Feastures
PDF Digital Signature. Create signatures in existing PDF signature fields; Create signatures in new fields which hold the signature;
pdf will signature; create pdf signature field
C# WPF Viewer: Load, View, Convert, Annotate and Edit Tiff
functionalities. convert Tiff file to PDF, add annotations to Tiff, Create signature on tiff, etc. Please refer to more details below:
adding signature to pdf; adding signature to pdf files
544
Python XML Processing
Chapter 16
1
# Fig. 16.16: fig16_16.py
2
# Demonstrating SAX-based parsing.
3
4
from xml.sax import parse, SAXParseException, ContentHandler
5
6
class TagInfoHandler( ContentHandler ):
7
"""Custom xml.sax.ContentHandler"""
8
9
def __init__( self, tagName ):
10
"""Initialize ContentHandler and set tag to search for"""
11
12
ContentHandler.__init__( self )
13
self.tagName = tagName
14
self.depth = 0 # spaces to indent to show structure
15
16
# override startElement handler
17
def startElement( self, name, attributes ):
18
"""An Element has started"""
19
20
# check if this is tag name for which we are searching
21
if name == self.tagName:
22
print "\n%s<%s> started" % ( " " * self.depth, name )
23
24
self.depth += 3
25
26
print "%sAttributes:" % ( " " * self.depth )
27
28
# check if element has attributes
29
for attribute in attributes.getNames():
30
print "%s%s = %s" % ( " " * self.depth, attribute,
31
attributes.getValue( attribute ) )
32
33
# override endElement handler
34
def endElement( self, name ):
35
"""An Element has ended"""
36
37
if name == self.tagName:
38
self.depth -= 3
39
print "%s</%s> ended\n" % ( " " * self.depth, name )
40
41
def main():
42
file = raw_input( "Enter a file to parse: " )
43
tagName = raw_input( "Enter tag to search for: " )
44
45
try:
46
parse( file, TagInfoHandler( tagName ) )
47
48
# handle exception if unable to open file
49
except IOError, message:
50
print "Error reading file:", message
51
F
ig
. 16.16
F
ig
. 16.16
F
ig
. 16.16
F
ig
. 16.16 SAX-
ba
s
ed
pa
rs
i
n
g
e
x
a
m
ple
. (P
a
rt 1 
o
f 2.)
pythonhtp1_16.fm  Page 544  Wednesday, December 19, 2001  2:46 PM
C# WinForms Viewer: Load, View, Convert, Annotate and Edit Tiff
Viewer provides other utility features for processing Tiff while in preview, such as convert Tiff file to PDF, add annotations to Tiff, Create signature on tiff
adding a signature to a pdf in preview; pdf sign
How to C#: Basic SDK Concept of XDoc.PDF for .NET
easily create, load, combine, and split PDF file(s), and add, create, insert, delete This class provides APIs for handling digital signature in a PDF document
add signature to pdf reader; pdf signature field
Chapter 16
Python XML Processing
545
Our  example  overrides  only  two  event  handlers.  Methods 
startElement
and
endElement
are called when start tags and end tags are encountered. Method 
start-
Element
(lines 16–31) takes two arguments—the element’s tag name as a string and the
element’s attributes. The attributes are passed as an instance of class 
AttributesImpl
,
defined in 
xml.sax.reader
. This class provides a dictionary-like interface to the ele-
ment’s attributes. 
Line 21 determines whether the element received from the event contains the tag name
that the user specified. If so, line 22 prints the start tag, indented by 
depth
spaces, and line
24 increments 
depth
by 
3
to ensure that the next tag printed indented further.
Lines 29–31 print the element’s attributes. The 
for
loop first obtains the attribute
names by invoking the 
getNames
method of 
attributes
. The loop then prints each
attribute name and its corresponding value—obtained by passing the current attribute name
to the 
getValue
method of 
attributes
Method 
endElement
(lines 34–39) executes when an end tag is encountered and
receives the end tag’s name as an argument. If 
name
contains the tag name specified by the
52
# handle exception parsing file
53
except SAXParseException, message:
54
print "Error parsing file:", message
55
56
if __name__ == "__main__":
57
main()
Enter a file to parse: boxes.xml
Enter tag to search for: box
<box> started
Attributes:
size = big
<box> started
Attributes:
size = medium
</box> ended
<box> started
Attributes:
type = small
<box> started
Attributes:
type = tiny
</box> ended
</box> ended
</box> ended
F
ig
. 16.16
F
ig
. 16.16
F
ig
. 16.16
F
ig
. 16.16 SAX-
ba
s
ed
pa
rs
i
n
g
e
x
a
m
ple
. (P
a
rt 2 
o
f 2.)
pythonhtp1_16.fm  Page 545  Wednesday, December 19, 2001  2:46 PM
546
Python XML Processing
Chapter 16
user, line 38 decreases the indent by decrementing 
depth
. Line 39 prints that the specified
end tag was found. 
16.6 C
a
s
e
Stu
d
y: M
e
ss
age
F
o
rums with Pyth
o
a
n
d
XM
L
4
In this section, we use XML and several XML-related technologies to create one of the
most popular types of Web sites: A message forum. Message forums are “virtual” bulletin
boards where users discuss various topics. Common features of message forums include
discussion groups, question-and-answer sections and general comments. Many Web sites
host message forums. Some popular message forums are
groups.yahoo.com
web.eesite.com/forums
groups.google.com
Figure 16.18  summarizes  the  files that  comprise the message  forum.  Figure 16.19
shows the directory structure for Apache running on Windows. Fig. 16.20 illustrates some
of  the  key  interactions  between  the  files.  The  main  XHTML  page  generated  by
default.py
displays the list of available message forums, which are stored in the XML
document 
forums.xml
. Hyperlinks are provided to each XML message forum document
and to script 
addForum.py
, which adds a forum to 
forums.xml
and creates an XML
message forum, using the markup in 
template.xml
as a starting point.  
4. The implementation of this message forum requires Internet Explorer 5 or higher, and msxml 3.0
or higher. In Section 16.6.3, we discuss how other client browsers, such as Netscape, may be used.
1
<?xml version = "1.0"?>
2
3
<!-- Fig. 16.17: boxes.xml           -->
4
<!-- XML document used in Fig. 16.16 -->
5
6
<boxlist>
7
8
<box size = "big">
9
This is the big box.
10
11
<box size = "medium">
12
 Medium sized box
13
<item>Some stuff</item>
14
<thing>More stuff</thing>
15
</box>
16
17
<parcel />
18
<box type = "small">
19
smaller stuff
20
<box type = "tiny">tiny stuff</box>
21
</box>
22
23
</box>
24
25
</boxlist>
F
ig
. 16.17
F
ig
. 16.17
F
ig
. 16.17
F
ig
. 16.17 XM
L
doc
um
e
nt us
ed
i
n F
ig
.16.16.
pythonhtp1_16.fm  Page 546  Wednesday, December 19, 2001  2:46 PM
Chapter 16
Python XML Processing
547
Each XML document that contains a forum (e.g., 
feedback.xml
) is transformed
into an XHTML document by applying the XSLT document 
formatting.xsl
. The
XHTML generated is formatted by applying 
site.css
. New messages are posted to a
forum by 
addPost.py
.  
Fil
e
N
a
m
e
D
e
s
c
ri
p
ti
o
n
forums.xml
XML document containing available forum titles and their filenames.
default.py
Main page that provides navigational links to the forums.
template.xml
Template for a message forum document.
addForum.py
Adds a new forum.
feedback.xml
Sample message forum.
formatting.xsl
XSLT document for transforming message forums into XHTML.
addPost.py
Adds a message to a forum.
error.html
Displays an error message.
site.css
Style sheet for formatting XHTML content.
forum.py
Transforms XML documents to HTML on the server for non-Internet 
Explorer clients.
F
ig
. 16.18
F
ig
. 16.18
F
ig
. 16.18
F
ig
. 16.18 M
e
ss
age
-f
o
rum 
doc
um
e
nts.
F
ig
. 16.19
F
ig
. 16.19
F
ig
. 16.19
F
ig
. 16.19 D
i
r
ec
t
o
ry stru
c
tur
e
f
o
r th
e
m
e
ss
age
f
o
rum.
pythonhtp1_16.fm  Page 547  Wednesday, December 19, 2001  2:46 PM
548
Python XML Processing
Chapter 16
16.6.1 Dis
p
l
a
yin
g
th
e
F
o
rums
This section discusses how XML is used to mark up message forum data and the Python
script—
default.py
—that creates the message forum’s main XHTML page. For this
case study, we provide a sample forum named 
feedback.xml
(Fig. 16.21) to show the
structure of a forum document. 
Notice the reference to the style sheet 
formatting.xsl
(line 6). When applied by
msxml, this XSLT document (which we discuss later in the chapter) transforms the XML
into XHTML for display in Internet Explorer. Forum documents have root element 
forum
,
which contains attribute 
file
. This attribute’s value is the document’s filename. Child
elements include 
name
, for specifying the title of the forum, and 
message
, for marking
up the message. Messages contain a user name, a title and the text, which are marked up by
elements 
user
title
and 
text
, respectively. Messages also are given a 
timestamp
.
The document 
forums.xml
(Fig. 16.22) contains the filename and title for every
message forum. As forums are created, this document is updated.  
Root element 
forums
(line 8) contains one or more 
forum
child elements. Initially,
one forum (i.e., 
Feedback
) is present. Each 
forum
element has attribute 
filename
and
child element 
name
.  
F
ig
. 16.20
F
ig
. 16.20
F
ig
. 16.20
F
ig
. 16.20 K
e
i
nt
e
r
ac
t
io
ns 
be
tw
ee
n m
e
ss
age
f
o
rum 
doc
um
e
nts.
1
<?xml version = "1.0"?>
2
3
<!-- Fig. 16.21: feedback.xml          -->
4
<!-- XML document representing a forum -->
5
6
<?xml:stylesheet type = "text/xsl" href = "../XML/formatting.xsl"?>
7
8
<forum file = "feedback.xml">
9
<name>Feedback</name>
10
F
ig
. 16.21
F
ig
. 16.21
F
ig
. 16.21
F
ig
. 16.21 XM
L
doc
um
e
nt r
ep
r
e
s
e
nt
i
n
g
a
f
o
rum 
co
nt
ai
n
i
n
g
o
n
e
m
e
ss
age
. (P
a
rt 1 
o
f 2.)
default.py
feedback.xml
addPost.py
addForum.py
formatting.xsl
forums.xml
pythonhtp1_16.fm  Page 548  Wednesday, December 19, 2001  2:46 PM
Documents you may be interested
Documents you may be interested