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
windowstayonthescreen,add
raw_input(’Press the Return key to quit: : ’)
at the endofthe program.Theplot window iskilledwhenthe
programterminates,andthisstatementpostponesthetermination
untiltheuserhitstheReturnkey.
Decoratingtheplot. Letusplotthesamecurve,butnowwithalegend,
aplottitle,labelsontheaxes,andspecifiedrangesoftheaxes:
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
justmaketheplotfile.
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
appeartogetherwiththefirstone,weneedtoissueahold(’on’)call
afterthefirstplotcommand.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’)
Thesequenceofthemultiplelegendsissuchthatthefirstlegendcorre-
spondstothefirstcurve,thesecondlegendtothesecondcurve,andso
forth.
Insteadofseparatecallstoplotandtheuseof hold(’on’),wecan
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,
sotheresultingfiguressofarwillbesimilartothoseofFigure5.2-5.4.
However,wecanuseotherbackends(plottingpackages)forcreating
thegraphics.Thespecificationofwhatpackagetouseisdefinedina
configurationfile(seetheheadingSettingParametersintheConfiguration
FileintheEasyvizdocumentation),oronthecommandline:
Terminal
Terminal> python myprog.py y --SCITOOLS_easyviz_backend d gnuplot
Now,theplottingcommandsinmyprog.pywillmakeuseofGnuplotto
createthegraphics,withaslightlydifferentresultthanthatcreatedby
Matplotlib(compareFigures5.4and5.6).AnicefeatureofGnuplotis
thatthelinetypesareautomaticallychangedifwesaveafiguretofile,
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
effectiveonagrayscale.
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 figure. Finally,weredotheexamplefrom
Section 5.3.1 where two plots are combined into one figure, 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[0], 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 different
plot windows on the screen: eachfigure() call creates a new, separate
plot.
All of the Easyviz examples above are found in the file 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 fields. 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 fine-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-specific 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 file. The standard procedure is to generate a series
of individual plots and to show them in sequence to obtain an animation
effect. Plots store in files can be combined to a video file.
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 figure). 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 file, and all
the files 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 fixed 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
https://scitools.googlecode.com/hg/doc/easyviz/easyviz.html
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 Different shapes of a Gaussian function.
adjustment is misleading - any axis range must be fixed 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 defined 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
Add signature image to PDF file. PDF Hyperlink Edit. Support adding and inserting hyperlink (link) to PDF document; Allow to create, edit, and remove PDF bookmark
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[0], 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 file 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 files
For each frame (plot) in the movie we store the plot in a file, with
the purpose of combining all the files to an ordinary video file. The
different files need different names such that various methods for
listing the files will list them in the correct order. To this end, we
recommend using filenames of the formtmp0001.png,tmp0002.png,
tmp0003.png,etc.Theprintf format 04dpadstheintegerswith
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 files 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 first, 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
add photo to pdf form; add jpg to pdf form
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 first part of the program, where we definef,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[0], 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[0].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 first 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[0].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 filemovie1_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 figure, frame
is a user-defined 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 defining 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 definedm,s_max,s_min,s_values, andmax_f as shown
earlier, we have to make a first plot:
fig = plt.figure()
plt.axis([x[0], 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 defining a background plot draws an empty plot in
this example:
def init():
lines[0].set_data([], []) # empty plot
return lines
The function that defines 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[0].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 file, 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 file 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 files!
We strongly recommend removing previously generated plot files
before a new set of files is made. Otherwise, the movie may get old
and new files mixed up. The following Python code removes all files
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 plotfiles, one may store all plot files
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
files tmp_*.png. The filenames are generated by the printf syntax
’tmp_%04d.png’ % i,usingaframecounter ithatgoesfrom0tosome
value. The corresponding files are thentmp_0000.png,tmp_0001.png,
tmp_0002.png,andsoon.Severaltoolscanbeusedtocreatevideosin
common formats from the individual frames in the plot files.
Animated GIF file.TheImageMagick
4
software suite contains a program
convert for making animated GIF files:
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 filemovie.gif can be viewed by another
4
http://www.imagemagick.org/
250
5 Array computing and curve plotting
program in the ImageMagick suite:animate movie.gif, but the most
common way of displaying animated GIF files is to include them in web
pages. Writing the HTML code
<img src="movie.gif">
in some file with extension.html and loading this file into a web browser
will play the movie repeatedly. You may try this out online5.
MP4, Ogg, WebM, and Flash videos. Themodernvideoformatsthat
are best suited for being displayed in web browsers are MP4, Ogg, WebM,
and Flash. The programffmpeg, or the almost equivalentavconv, is a
common tool to create such movies. Creating a flash video is done by
Terminal
Terminal> ffmpeg -r 5 -i tmp_%04d.png -vcodec flv movie.flv
The-r option specifies the number of frames per second, here 5, the-i
option specifies the printf string that was used to make the names of the
individual plot files,-vcodec is the video codec for Flash, which is called
flv,andthefinalargumentisthenameofthevideofile.OnDebian
Linux systems, such as Ubuntu, you use theavconv program instead of
ffmpeg.
Other formats are created in the same way, but we need to specify the
codec and use the right extension in the video file:
Format
Codec and filename
Flash
-vcodec flv movie.flv
MP4
-vcodec libx264 movie.mp4
Webm
-vcodec libvpx movie.webm
Ogg
-vcodec libtheora movie.ogg
Video files are normally trivial to play in graphical file browser: double
lick the filename or right-click and choose a player. On Linux systems
there are several players that can be run from the command line, e.g.,
vlc, mplayer, gxine, and totem.
It is easy to create the video file from a Python program since we can
run any operating system command in (e.g.) os.system:
cmd = ’convert -delay 50 tmp_*.png movie.gif’
os.system(cmd)
It might happen that your downloaded and installed version offfmpeg
fails to generate videos in some of the mentioned formats. The reason is
thatffmpeg depends on many other packages that may be missing on
your system. Gettingffmpeg to work with thelibx264 codec for making
MP4 files is often challenging. On Debian-based Linux systems, such as
Ubuntu, the installation procedure at the time of this writing goes like
5
http://hplgit.github.io/scipro-primer/video/gaussian.html
Documents you may be interested
Documents you may be interested