﻿

# itextsharp pdf to image c# : Adding signature to pdf form SDK control service wpf azure web page dnn book27-part1773

5.3 Curveplotting
241
Whatiftheplotwindowquicklydisappears?
Onsome platforms,some backendsmayresult inaplot that is
showninjustafractionofasecondonthescreenbeforetheplot
windowdisappears(theGnuplotbackendonWindowsmachines
andtheMatplotlibbackendconstitutetwoexamples).Tomakethe
raw_input(’Press the Return key to quit: : ’)
at the endofthe program.Theplot window iskilledwhenthe
programterminates,andthisstatementpostponesthetermination
untiltheuserhitstheReturnkey.
Decoratingtheplot. Letusplotthesamecurve,butnowwithalegend,
aplottitle,labelsontheaxes,andspeciﬁedrangesoftheaxes:
from scitools.std d import *
def f(t):
return t**2*exp(-t**2)
t = = linspace(0, , 3, , 31)
y = = f(t)
plot(t, y, ’-’)
xlabel(’t’)
ylabel(’y’)
legend(’t^2*exp(-t^2)’)
axis([0, 3, -0.05, , 0.6])
# [tmin, tmax, , ymin, ymax]
title(’My First t Easyviz Demo’)
EasyvizhasalsointroducedamorePythonicplotcommandwhere
alltheplotpropertiescanbesetatoncethroughkeywordarguments:
plot(t, y, ’-’,
xlabel=’t’,
ylabel=’y’,
legend=’t^2*exp(-t^2)’,
axis=[0, 3, -0.05, 0.6],
title=’My First t Easyviz z Demo’,
savefig=’tmp1.pdf’,
show=True)
Withshow=Falseonecanavoidtheplotwindowonthescreenand
justmaketheplotﬁle.
Notethatweinthecurvelegendwritetsquareast^2(L
A
T
E
Xstyle)
rather thant**2 (programstyle).Whichever form m you chooseisup
to you, but the LAT
E
Xform sometimeslooksbetterin someplotting
programs(MatplotlibandGnuplotaretwoexamples).
Plottingmultiplecurves. Nextwewanttocomparethetwofunctions
f
1
(t)=t2exp(−t2)andf
2
(t)=t4exp(−t2).Writingtwoplotcommands
aftereachothermakestwoseparateplots.Tomakethesecondcurve
Adding signature to pdf form - C# PDF Field Edit Library: insert, delete, update pdf form field in C#.net, ASP.NET, MVC, Ajax, WPF
Online C# Tutorial to Insert, Delete and Update Fields in PDF Document
create a pdf form that can be filled out; create a fillable pdf form online
Adding signature to pdf form - VB.NET PDF Field Edit library: insert, delete, update pdf form field in vb.net, ASP.NET, MVC, Ajax, WPF
How to Insert, Delete and Update Fields in PDF Document with VB.NET Demo Code
can save pdf form data; add text field to pdf acrobat
242
5 Arraycomputingandcurveplotting
appeartogetherwiththeﬁrstone,weneedtoissueahold(’on’)call
aftertheﬁrstplotcommand.Allsubsequentplotcommandswillthen
drawcurvesinthesameplot,untilhold(’off’)iscalled.
from scitools.std d import *
def f1(t):
return t**2*exp(-t**2)
def f2(t):
return t**2*f1(t)
t = linspace(0, 3, 51)
y1 = = f1(t)
y2 = = f2(t)
plot(t, y1, ’r-’)
hold(’on’)
plot(t, y2, ’b-’)
xlabel(’t’)
ylabel(’y’)
legend(’t^2*exp(-t^2)’, ’t^4*exp(-t^2)’)
title(’Plotting two curves in the same e plot’)
savefig(’tmp3.pdf’)
Thesequenceofthemultiplelegendsissuchthattheﬁrstlegendcorre-
spondstotheﬁrstcurve,thesecondlegendtothesecondcurve,andso
forth.
doeverythingatonceandjustsendseveralcurvestoplot:
plot(t, y1, , ’r-’, , t, y2, ’b-’, , xlabel=’t’, , ylabel=’y’,
legend=(’t^2*exp(-t^2)’, ’t^4*exp(-t^2)’),
title=’Plotting two curves in n the e same plot’,
savefig=’tmp3.pdf’)
Throughoutthisbook,weveryoftenmakeuseofthistypeofcompact
plotcommand,whichalsoonlyrequiresanimportoftheformfrom
scitools.std import plot.
Changingbackend. EasyvizappliesMatplotlibforplottingbydefault,
sotheresultingﬁguressofarwillbesimilartothoseofFigure5.2-5.4.
However,wecanuseotherbackends(plottingpackages)forcreating
thegraphics.Thespeciﬁcationofwhatpackagetouseisdeﬁnedina
FileintheEasyvizdocumentation),oronthecommandline:
Terminal
Terminal> python myprog.py y --SCITOOLS_easyviz_backend d gnuplot
Now,theplottingcommandsinmyprog.pywillmakeuseofGnuplotto
createthegraphics,withaslightlydiﬀerentresultthanthatcreatedby
Matplotlib(compareFigures5.4and5.6).AnicefeatureofGnuplotis
thatthelinetypesareautomaticallychangedifwesaveaﬁguretoﬁle,
C# PDF Digital Signature Library: add, remove, update PDF digital
Help to Improve the Security of Your PDF File by Adding Digital Signatures. Overview. XDoc.PDF also allows PDF security setting via digital signature.
add image field to pdf form; change font size pdf fillable form
VB.NET PDF Library SDK to view, edit, convert, process PDF file
Capable of adding PDF file navigation features to your VB.NET program. How To Tutorials. Password, digital signature and PDF text, image and page redaction
cannot save pdf form; edit pdf form
5.3 Curveplotting
243
suchthatthelinesareeasilydistinguishableinablack-and-whiteplot.
WithMatplotlibonehastocarefullysetthelinetypestomakethem
eﬀectiveonagrayscale.
0
0.1
0.2
0.3
0.4
0.5
0.6
0
0.5
1
1.5
2
2.5
3
y
t
Plotting two curves in the same plot
t
2
exp(-t
2
)
t
4
exp(-t
2
)
Fig. 5.6 Two curves in the same plot (Gnuplot).
Placing several plots in one ﬁgure. Finally,weredotheexamplefrom
Section 5.3.1 where two plots are combined into one ﬁgure, using the
subplot command:
figure()
subplot(2, 1, 1)
t = linspace(0, 3, 51)
y1 = f1(t)
y2 = f2(t)
plot(t, y1, ’r-’, t, y2, ’bo’, xlabel=’t’, ylabel=’y’,
legend=(’t^2*exp(-t^2)’, ’t^4*exp(-t^2)’),
axis=[t, t[-1], min(y2)-0.05, max(y2)+0.5],
title=’Top figure’)
subplot(2, 1, 2)
t3 = t[::4]
y3 = f2(t3)
plot(t, y1, ’b-’, t3, y3, ’ys’,
xlabel=’t’, ylabel=’y’,
axis=[0, 4, -0.2, 0.6],
legend=(’t^2*exp(-t^2)’, ’t^4*exp(-t^2)’))
savefig(’tmp4.pdf’)
Note thatfigure() must be used if you want a program to make diﬀerent
plot windows on the screen: eachfigure() call creates a new, separate
plot.
All of the Easyviz examples above are found in the ﬁle easyviz_
examples.py.WeremarkthatEasyvizisjustathinlayerofcodeprovid-
ing access to the most common plotting functionality for curves as well
C# PDF insert image Library: insert images into PDF in C#.net, ASP
to insert and add image, picture, digital photo, scanned signature or logo this technical problem, we provide this C#.NET PDF image adding control, XDoc
change font size in pdf fillable form; convert pdf to editable form
VB.NET PDF Digital Signature Library: add, remove, update PDF
the Security of Your PDF File by Adding Digital Signatures in VB to be respected, XDoc.PDF also allows PDF such security setting via digital signature.
acrobat create pdf form; changing font size in a pdf form
244
5 Array computing and curve plotting
as 2D/3D scalar and vector ﬁelds. Fine-tuning of plots, e.g., specifying
tick marks on the axes, is not supported, simply because most of the
curve plots in the daily work can be made without such functionality.
For ﬁne-tuning the plot with special commands, you need to grab an
object in Easyviz that communicates directly with the underlying plot-
ting package used to create the graphics. With this object you can issue
package-speciﬁc commands and do whatever the underlying package
allows you do. This is explained in the Easyviz manual
3
,which also
comes up by runningpydoc scitools.easyviz. As soon as you have
digested the very basics of plotting, you are strongly recommend to read
through the curve plotting part of the Easyviz manual.
5.3.4 Making animations
Asequence of plots can be combined into an animation on the screen
and stored in a video ﬁle. The standard procedure is to generate a series
of individual plots and to show them in sequence to obtain an animation
eﬀect. Plots store in ﬁles can be combined to a video ﬁle.
Example. The function
f(x; m, s) = (2π)
−1/2
s
−1
exp
1
2
x− m
s
2
is known as the Gaussian function or the probability density function of
the normal (or Gaussian) distribution. This bell-shaped function is wide
for larges and peak-formed for smalls, see Figure 5.7. The function is
symmetric aroundx =m (m = 0 in the ﬁgure). Our goal is to make an
animation where we see how this function evolves ass is decreased. In
Python we implement the formula above as a function f(x, m, s).
The animation is created by varyings in a loop and for eachs issue a
plotcommand.Amovingcurveisthenvisibleonthescreen.Onecan
also make a video that can be played as any other computer movie using
astandard movie player. To this end, each plot is saved to a ﬁle, and all
the ﬁles are combined together using some suitable tool to be explained
later. Before going into programming detail there is one key point to
emphasize.
Keep the extent of axes ﬁxed during animations!
The underlying plotting program will normally adjust the axis to
the maximum and minimum values of the curve if we do not specify
the axis ranges explicitly. For an animation such automatic axis
3
C# HTML5 Viewer: Load, View, Convert, Annotate and Edit PDF
Viewer for C# .NET provides permanent annotations adding feature, all enables you to create signatures to PDF, including freehand signature, text and
adding an image to a pdf form; pdf form maker
C# HTML5 Viewer: Load, View, Convert, Annotate and Edit PowerPoint
for C# .NET, users can convert PowerPoint to PDF (.pdf) online, convert Users can perform text signature adding, freehand signature creation and date signature
best way to make pdf forms; add image to pdf form
5.3 Curve plotting
245
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
-6
-4
-2
0
2
4
6
s=0.2
s=1
s=2
Fig. 5.7 Diﬀerent shapes of a Gaussian function.
adjustment is misleading - any axis range must be ﬁxed to avoid a
jumping axis.
The relevant values for they axis range in the present example is the
minimum and maximum value off. The minimum value is zero, while
the maximum value appears forx =m and increases with decreasings.
The range of the y axis must therefore be [0,f(m;m,min s)].
The functionf is deﬁned for all−∞<x<∞ , but the function value
is very small already 3s away fromx =m. We may therefore limit thex
coordinates to [m − 3s, m + 3s].
Animation in Easyviz. WestartwithusingEasyvizforanimationsince
this is almost identical to making standard static plots, and you can
choose the plotting engine you want to use, say Gunplot or Matplotlib.
The Easyviz recipe for animating the Gaussian function ass goes from 2
to 0.2 looks as follows.
from scitools.std import sqrt, pi, exp, linspace, plot, movie
import time
def f(x, m, s):
return (1.0/(sqrt(2*pi)*s))*exp(-0.5*((x-m)/s)**2)
m = 0
s_min = 0.2
s_max = 2
x = linspace(m -3*s_max, m + 3*s_max, 1000)
s_values = linspace(s_max, s_min, 30)
# f is max for x=m; smaller s gives larger max value
max_f = f(m, m, s_min)
# Show the movie on the screen
# and make hardcopies of frames simultaneously.
C# Create PDF Library SDK to convert PDF from other file formats
PDF file. What's more, you can also protect created PDF file by adding digital signature (watermark) on PDF using C# code. Create
pdf forms save; pdf create fillable form
.NET PDF SDK - Description of All PDF Processing Control Feastures
pdf form change font size; create pdf form
246
5 Array computing and curve plotting
counter = 0
for s in s_values:
y = f(x, m, s)
plot(x, y, ’-’, axis=[x, x[-1], -0.1, max_f],
xlabel=’x’, ylabel=’f’, legend=’s=%4.2f’ % s,
savefig=’tmp%04d.png’ % counter)
counter += 1
#time.sleep(0.2) # can insert a pause to control movie speed
Note that thes values are decreasing (linspace handles this auto-
matically if the start value is greater than the stop value). Also note that
we, simply because we think it is visually more attractive, let they axis
go from -0.1 although thef function is always greater than zero. The
complete code is found in the ﬁle movie1.py.
Notice
It is crucial to use the single, compoundplot command shown
above, where axis, labels, legends, etc., are set in the same call.
Splitting up in individual calls toplot,axis, and so forth, results
in jumping curves and axis. Also, when visualizing more than one
animated curve at a time, make sure you send all data to a single
plot command.
Remark on naming plot ﬁles
For each frame (plot) in the movie we store the plot in a ﬁle, with
the purpose of combining all the ﬁles to an ordinary video ﬁle. The
diﬀerent ﬁles need diﬀerent names such that various methods for
listing the ﬁles will list them in the correct order. To this end, we
recommend using ﬁlenames of the formtmp0001.png,tmp0002.png,
zeros such that1 becomes0001,13 becomes0013 and so on. The
expression tmp*.png will now expand (by an alphabetic sort) to a
list of all ﬁles in proper order.
Without the padding with zeros, i.e., names of the formtmp1.png,
tmp2.png,..., tmp12.png, etc., the alphabetic order will give a
wrong sequence of frames in the movie. For instance,tmp12.png
will appear before tmp2.png.
Basic animation in Matplotlib. AnimationisMatplotibrequiresmore
than a loop over a parameter and making a plot inside the loop. The
set-up that is closest to standard static plots is shown ﬁrst, while the
newer and more widely used toolFuncAnimation is explained afterwards.
XDoc.HTML5 Viewer for .NET, All Mature Features Introductions
to search text-based documents, like PDF, Microsoft Office typing new signature, deleting added signature from the After adding such a control button, with a
VB.NET PDF insert image library: insert images into PDF in vb.net
Import graphic picture, digital photo, signature and logo into PDF document. This smart and mature PDF image adding component of RasterEdge VB.NET PDF
add an image to a pdf form; create pdf forms
5.3 Curve plotting
247
The ﬁrst part of the program, where we deﬁnef,x,s_values, and so
forth, is the same regardless of the animation technique. Therefore, we
concentrate on the graphics part here:
import matplotlib.pyplot as plt
...
# Make a first plot
plt.ion()
y = f(x, m, s_max)
lines = plt.plot(x, y)
plt.axis([x, x[-1], -0.1, max_f])
plt.xlabel(’x’)
plt.ylabel(’f’)
# Show the movie, and make hardcopies of frames simulatenously
counter = 0
for s in s_values:
y = f(x, m, s)
lines.set_ydata(y)
plt.legend([’s=%4.2f’ % s])
plt.draw()
plt.savefig(’tmp_%04d.png’ % counter)
counter += 1
The plt.ion() call is important, so is the ﬁrst plot, where we grab
the result of theplot command, which is a list of Matplotlib’sLine2D
objects. The idea is then to update the data vialines.set_ydata
and show the plot viaplt.draw() for each frame. For multiple curves
we must update the y data for each curve, e.g.,
lines = plot(x, y1, x, y2, x, y3)
for parameter in parameters:
y1 = ...
y2 = ...
y3 = ...
for line, y in zip(lines, [y1, y2, y3]):
line.set_ydata(y)
plt.draw()
The ﬁlemovie1_mpl1.py contains the complete program for doing ani-
mation with native Matplotlib syntax.
Using FuncAnimation in Matplotlib. Therecommendedapproachto
animation in Matplotlib is to use the FuncAnimation tool:
import matplotlib.pyplot as plt
from matplotlib.animation import animation
anim = animation.FuncAnimation(
fig, frame, all_args, interval=150, init_func=init, blit=True)
Here, fig is the plt.figure() object for the current ﬁgure, frame
is a user-deﬁned function for plotting each frame, all_args is a list
of arguments for frameinterval is the delay in ms between each
frame,init_func is a function called for deﬁning the background plot
in the animation, andblit=True speeds up the animation. For frame
number i,FuncAnimation will callframe(all_args[i]). Hence, the
248
5 Array computing and curve plotting
user’s task is mostly to write the frame function and construct the
all_args arguments.
After having deﬁnedm,s_max,s_min,s_values, andmax_f as shown
earlier, we have to make a ﬁrst plot:
fig = plt.figure()
plt.axis([x, x[-1], -0.1, max_f])
lines = plt.plot([], [])
plt.xlabel(’x’)
plt.ylabel(’f’)
Notice that we save the return value ofplt.plot inlines such that we
can conveniently update the data for the curve(s) in each frame.
The function for deﬁning a background plot draws an empty plot in
this example:
def init():
lines.set_data([], []) # empty plot
return lines
The function that deﬁnes the individual plots in the animation basically
computes y from f and updates the data of the curve:
def frame(args):
frame_no, s, x, lines = args
y = f(x, m, s)
lines.set_data(x, y)
return lines
Multiple curves can be updated as shown earlier.
We are now ready to call animation.FuncAnimation:
anim = animation.FuncAnimation(
fig, frame, all_args, interval=150, init_func=init, blit=True)
Acommon next action is to make a video ﬁle, here in the MP4 format
with 5 frames per second:
anim.save(’movie1.mp4’, fps=5)
# movie in MP4 format
Finally, we mustplt.show() as always to watch any plots on the screen.
The video making requires additional software on the computer, such
asffmpeg, and can fail. One gets more control over the potentially fragile
movie making process by explicitly saving plots to ﬁle and explicitly
running movie making programs like ffmeg later. Such programs are
explained in Section 5.3.5.
The complete code showing the basic use ofFuncAnimation is avail-
able inmovie1_FuncAnimation.py. There is also a Matlab Animation
Tutorial with more basic information, plus a set of animation examples
on http://matplotlib.org/examples.
5.3 Curve plotting
249
Remove old plot ﬁles!
We strongly recommend removing previously generated plot ﬁles
before a new set of ﬁles is made. Otherwise, the movie may get old
and new ﬁles mixed up. The following Python code removes all ﬁles
of the form tmp*.png:
import glob, os
for filename in glob.glob(’tmp*.png’):
os.remove(filename)
These code lines should be inserted at the beginning of programs
or functions performing animations.
Instead of deleting the individual plotﬁles, one may store all plot ﬁles
in a subfolder and later delete the subfolder. Here is a suitable code
segment:
import shutil, os
subdir = ’temp’
# subfolder name for plot files
if os.path.isdir(subdir): # does the subfolder already exist?
shutil.rmtree(subdir) # delete the whole folder
os.mkdir(subdir)
# make new subfolder
os.chdir(subdir)
# move to subfolder
# ... perform all the plotting, make movie ...
os.chdir(os.pardir)
# optional: move up to parent folder
Note that Python and many other languages use the word directory
instead of folder. Consequently, the name of functions dealing with
folders have a name containing dir for directory.
5.3.5 Making videos
Suppose we have a set of frames in an animation, saved as plot
ﬁles tmp_*.png. The ﬁlenames are generated by the printf syntax
’tmp_%04d.png’ % i,usingaframecounter ithatgoesfrom0tosome
value. The corresponding ﬁles are thentmp_0000.png,tmp_0001.png,
tmp_0002.png,andsoon.Severaltoolscanbeusedtocreatevideosin
common formats from the individual frames in the plot ﬁles.
Animated GIF ﬁle.TheImageMagick
4
software suite contains a program
convert for making animated GIF ﬁles:
Terminal
Terminal> convert -delay 50 tmp_*.png movie.gif
The delay between frames, here 50, is measured in units of 1/100 s.
The resulting animated GIF ﬁlemovie.gif can be viewed by another
4
http://www.imagemagick.org/