itextsharp pdf to image c# example : Change font size in pdf form field control SDK platform web page wpf winforms web browser Automate%20the%20Boring%20Stuff%20with%20Python%20(2015)43-part1634

Manipulating Images
407
lines you’re drawing. The optional 
fill
argument is the color of the lines, 
as an RGBA tuple or color name. The optional 
width
argument is the width 
of the lines and defaults to 1 if left unspecified.
rectangles
The 
rectangle(xy, fill, outline)
method draws a rectangle. The 
xy
argu-
ment is a box tuple of the form 
(left, top, right, bottom)
. The 
left
and 
top
values specify the x- and y-coordinates of the upper-left corner of the rect-
angle, while 
right
and 
bottom
specify the lower-right corner. The optional 
fill
argument is the color that will fill the inside of the rectangle. The 
optional 
outline
argument is the color of the rectangle’s outline.
Ellipses
The 
ellipse(xy, fill, outline)
method draws an ellipse. If the width and 
height of the ellipse are identical, this method will draw a circle. The 
xy
argument is a box tuple (
left
top
right
bottom
) that represents a box that 
precisely contains the ellipse. The optional 
fill
argument is the color of the 
inside of the ellipse, and the optional 
outline
argument is the color of the 
ellipse’s outline.
Polygons
The 
polygon(xy, fill, outline)
method draws an arbitrary polygon. The 
xy
argument is a list of tuples, such as 
[(x, y), (x, y), ...]
, or integers, such 
as 
[x1, y1, x2, y2, ...]
, representing the connecting points of the polygon’s 
sides. The last pair of coordinates will be automatically connected to the 
first pair. The optional 
fill
argument is the color of the inside of the poly-
gon, and the optional 
outline
argument is the color of the polygon’s outline.
Drawing Example
Enter the following into the interactive shell:
>>> from PIL import Image, ImageDraw
>>> im = Image.new('RGBA', (200, 200), 'white')
>>> draw = ImageDraw.Draw(im)
u >>> draw.line([(0, 0), (199, 0), (199, 199), (0, 199), (0, 0)], fill='black')
v >>> draw.rectangle((20, 30, 60, 60), fill='blue')
w >>> draw.ellipse((120, 30, 160, 60), fill='red')
x >>> draw.polygon(((57, 87), (79, 62), (94, 85), (120, 90), (103, 113)), 
fill='brown')
y >>> for i in range(100, 200, 10):
draw.line([(i, 0), (200, i - 100)], fill='green')
>>> im.save('drawing.png')
After making an 
Image
object for a 200×200 white image, passing it to 
ImageDraw.Draw()
to get an 
ImageDraw
object, and storing the 
ImageDraw
object 
in 
draw
, you can call drawing methods on 
draw
. Here we make a thin, black 
Change font size in pdf form field - 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
add attachment to pdf form; create a pdf form that can be filled out
Change font size in pdf form field - 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
change font in pdf form field; pdf create fillable form
408   
Chapter 17
outline at the edges of the image u, a blue rectangle with its top-left corner 
at (20, 30) and bottom-right corner at (60, 60) v, a red ellipse defined by a 
box from (120, 30) to (160, 60) w, a brown polygon with five points x, and 
a pattern of green lines drawn with a 
for
loop y. The resulting drawing.png 
file will look like Figure 17-14.
Figure 17-14: The resulting drawing‮png  
image
There are several other shape-drawing methods for 
ImageDraw
objects. 
The full documentation is available at http://pillow.readthedocs.org/en/latest/
reference/ImageDraw.html.
Drawing Text
The 
ImageDraw
object also has a 
text()
method for drawing text onto an 
image. The 
text()
method takes four arguments: 
xy
text
fill
, and 
font
.
•  The 
xy
argument is a two-integer tuple specifying the upper-left corner 
of the text box.
•  The 
text
argument is the string of text you want to write.
•  The optional 
fill
argument is the color of the text.
•  The optional 
font
argument is an 
ImageFont
object, used to set the type-
face and size of the text. This is described in more detail in the next 
section.
Since it’s often hard to know in advance what size a block of text will 
be in a given font, the 
ImageDraw
module also offers a 
textsize()
method. 
Its first argument is the string of text you want to measure, and its second 
argument is an optional 
ImageFont
object. The 
textsize()
method will then 
return a two-integer tuple of the width and height that the text in the given 
C# PDF File Compress Library: Compress reduce PDF size in C#.net
can help to reduce PDF file size effectively. RasterEdge.Imaging.Font.dll. ops.MonochromeImageOptions.TargetResolution = 150F; // to change image compression
pdf form save with reader; create pdf form
VB.NET PDF File Compress Library: Compress reduce PDF size in vb.
can help to reduce PDF file size effectively Reduce font resources: Font resources will also take up too TargetResolution = 150.0F 'to change image compression
add fields to pdf form; add picture to pdf form
Manipulating Images
409
font would be if it were written onto the image. You can use this width and 
height to help you calculate exactly where you want to put the text on your 
image.
The first three arguments for 
text()
are straightforward. Before we use 
text()
to draw text onto an image, let’s look at the optional fourth argument, 
the 
ImageFont
object.
Both 
text()
and 
textsize()
take an optional 
ImageFont
object as their 
final arguments. To create one of these objects, first run the following:
>>> from PIL import ImageFont
Now that you’ve imported Pillow’s 
ImageFont
module, you can call the 
ImageFont.truetype()
function, which takes two arguments. The first argu-
ment is a string for the font’s TrueType file—this is the actual font file that 
lives on your hard drive. A TrueType file has the .ttf file extension and can 
usually be found in the following folders:
•  On Windows: C:\Windows\Fonts
•  On OS X: /Library/Fonts and /System/Library/Fonts
•  On Linux: /usr/share/fonts/truetype
You don’t actually need to enter these paths as part of the TrueType 
file string because Python knows to automatically search for fonts in these 
directories. But Python will display an error if it is unable to find the font 
you specified.
The second argument to 
ImageFont.truetype()
is an integer for the font 
size in points (rather than, say, pixels). Keep in mind that Pillow creates 
PNG images that are 72 pixels per inch by default, and a point is 1/72 of 
an inch.
Enter the following into the interactive shell, replacing 
FONT_FOLDER
with 
the actual folder name your operating system uses:
>>> from PIL import Image, ImageDraw, ImageFont
>>> import os
u >>> im = Image.new('RGBA', (200, 200), 'white')
v >>> draw = ImageDraw.Draw(im)
w >>> draw.text((20, 150), 'Hello', fill='purple')
>>> fontsFolder = 'FONT_FOLDER' # e.g. ‘/Library/Fonts’
x >>> arialFont = ImageFont.truetype(os.path.join(fontsFolder, 'arial.ttf'), 32)
y >>> draw.text((100, 150), 'Howdy', fill='gray', font=arialFont)
>>> im.save('text.png')
After importing 
Image
ImageDraw
ImageFont
, and 
os
, we make an 
Image
object for a new 200×200 white image u and make an 
ImageDraw
object from 
the 
Image
object v. We use 
text()
to draw Hello at (20, 150) in purple w. We 
didn’t pass the optional fourth argument in this 
text()
call, so the typeface 
and size of this text aren’t customized.
C# PDF Sticky Note Library: add, delete, update PDF note in C#.net
Allow users to add comments online in ASPX webpage. Able to change font size in PDF comment box. Able to save and print sticky notes in PDF file.
change font in pdf fillable form; change pdf to fillable form
C# PDF insert text Library: insert text into PDF content in C#.net
Powerful .NET PDF edit control allows modify existing scanned PDF text. Ability to change text font, color, size and location and output a new PDF document.
best pdf form creator; add form fields to pdf without acrobat
410   
Chapter 17
To set a typeface and size, we first 
store the folder name (like /Library/
Fonts) in 
fontsFolder
. Then we call 
ImageFont.truetype()
, passing it the .ttf 
file for the font we want, followed by 
an integer font size x. Store the 
Font
object you get from 
ImageFont.truetype()
in a variable like 
arialFont
, and then 
pass the variable to 
text()
in the final 
keyword argument. The 
text()
call at y 
draws Howdy at (100, 150) in gray in 
32-point Arial.
The resulting text.png file will look 
like Figure 17-15.
Summary
Images consist of a collection of pixels, and each pixel has an RGBA value 
for its color and its addressable by x- and y-coordinates. Two common image 
formats are JPEG and PNG. The 
pillow
module can handle both of these 
image formats and others.
When an image is loaded into an 
Image
object, its width and height 
dimensions are stored as a two-integer tuple in the 
size
attribute. Objects of the 
Image
data type also have methods for common image manipulations: 
crop()
copy()
paste()
resize()
rotate()
, and 
transpose()
. To save the 
Image
object to 
an image file, call the 
save()
method.
If you want your program to draw shapes onto an image, use 
ImageDraw
methods to draw points, lines, rectangles, ellipses, and polygons. The mod-
ule also provides methods for drawing text in a typeface and font size of 
your choosing.
Although advanced (and expensive) applications such as Photoshop 
provide automatic batch processing features, you can use Python scripts to 
do many of the same modifications for free. In the previous chapters, you 
wrote Python programs to deal with plaintext files, spreadsheets, PDFs, and 
other formats. With the 
pillow
module, you’ve extended your programming 
powers to processing images as well!
Practice Questions
1.  What is an RGBA value?
2.  How can you get the RGBA value of 
'CornflowerBlue'
from the 
Pillow
module?
3.  What is a box tuple?
4.  What function returns an 
Image
object for, say, an image file named 
zophie.png?
Figure 17-15: The resulting text‮png 
image
C# PDF Annotate Library: Draw, edit PDF annotation, markups in C#.
Support to add text, text box, text field and crop marks to PDF document. Able to edit and change PDF annotation properties such as font size or color.
convert word to editable pdf form; changing font size in pdf form
C# PDF Text Box Edit Library: add, delete, update PDF text box in
Support to change font color in PDF text box. Ability to change text size in PDF text box. Adding text box is another way to add text to PDF page.
create a fillable pdf form in word; change text size pdf form
Manipulating Images
411
5.  How can you find out the width and height of an 
Image
object’s image?
6.  What method would you call to get 
Image
object for a 100×100 image, 
excluding the lower left quarter of it?
7.  After making changes to an 
Image
object, how could you save it as an 
image file?
8.  What module contains Pillow’s shape-drawing code?
9. 
Image
objects do not have drawing methods. What kind of object does? 
How do you get this kind of object?
Practice Projects
For practice, write programs that do the following.
Extending and Fixing the Chapter Project Programs
The resizeAndAddLogo.py program in this chapter works with PNG and JPEG 
files, but Pillow supports many more formats than just these two. Extend 
resizeAndAddLogo.py to process GIF 
and BMP images as well.
Another small issue is that the 
program modifies PNG and JPEG 
files only if their file extensions are 
set in lowercase. For example, it will 
process zophie.png but not zophie.PNG. 
Change the code so that the file 
extension check is case insensitive.
Finally, the logo added to the 
bottom-right corner is meant to be 
just a small mark, but if the image is 
about the same size as the logo itself, 
the result will look like Figure 17-16. 
Modify resizeAndAddLogo.py so that 
the image must be at least twice the 
width and height of the logo image 
before the logo is pasted. Other wise, 
it should skip adding the logo.
Identifying Photo Folders on the Hard Drive
I have a bad habit of transferring files from my digital camera to temporary 
folders somewhere on the hard drive and then forgetting about these fold-
ers. It would be nice to write a program that could scan the entire hard 
drive and find these leftover “photo folders.”
Write a program that goes through every folder on your hard drive and 
finds potential photo folders. Of course, first you’ll have to define what you 
consider a “photo folder” to be; let’s say that it’s any folder where more than 
half of the files are photos. And how do you define what files are photos? 
Figure 17-16: When the image isn’t much 
larger than the logo, the results look ugly.
C# PDF Convert to Word SDK: Convert PDF to Word library in C#.net
PDF document, keeps the elements (like images, tables and chats) of original PDF file and maintains the original text style (including font, size, color, links
create a fillable pdf form from a pdf; add image field to pdf form
VB.NET PDF Form Data Read library: extract form data from PDF in
RasterEdge.Imaging.Font.dll. As String = Program.RootPath + "\\" 1_AF.pdf" Dim fields ToString()) Console.WriteLine(" Size: " + field.Size.ToString()) Next
adding an image to a pdf form; chrome save pdf form
412   
Chapter 17
First, a photo file must have the file extension .png or .jpg. Also, photos 
are large images; a photo file’s width and height must both be larger than 
500 pixels. This is a safe bet, since most digital camera photos are several 
thousand pixels in width and height. 
As a hint, here’s a rough skeleton of what this program might look like:
#! python3
# Import modules and write comments to describe this program.
for foldername, subfolders, filenames in os.walk('C:\\'):
numPhotoFiles = 0
numNonPhotoFiles = 0
for filename in filenames:
# Check if file extension isn't .png or .jpg.
if TODO:
numNonPhotoFiles += 1
continue    # skip to next filename
# Open image file using Pillow.
# Check if width & height are larger than 500.
if TODO:
# Image is large enough to be considered a photo.
numPhotoFiles += 1
else:
# Image is too small to be a photo.
numNonPhotoFiles += 1
# If more than half of files were photos,
# print the absolute path of the folder.
if TODO:
print(TODO)
When the program runs, it should print the absolute path of any photo 
folders to the screen.
Custom Seating Cards
Chapter 13 included a practice project to create custom invitations from 
a list of guests in a plaintext file. As an additional project, use the  
pillow
module to create images for custom seating cards for your guests. For 
each of the guests listed in the guests.txt file from the resources at http://
nostarch.com/automatestuff/, generate an image file with the guest name and 
some flowery decoration. A public domain flower image is available in the 
resources at http://nostarch.com/automatestuff/.
To ensure that each seating card is the same size, add a black rectangle 
on the edges of the invitation image so that when the image is printed out, 
there will be a guideline for cutting. The PNG files that Pillow produces are 
set to 72 pixels per inch, so a 4×5-inch card would require a 288×360-pixel 
image.
C# PDF Form Data Read Library: extract form data from PDF in C#.
RasterEdge.Imaging.Font.dll. Program.RootPath + "\\" 1_AF.pdf"; List<BaseFormField Position.ToString()); Console.WriteLine(" Size: " + field.Size.ToString
change font pdf form; android edit pdf forms
18
Co n t r o l l i n g   t h e   
ke y B o A r D   A n D   m o u S e   
wi t h   g u i   A u t o m A t i o n
Knowing various Python modules for edit-
ing spreadsheets, downloading files, and 
launching programs is useful, but some-
times there just aren’t any modules for the 
applications you need to work with. The ultimate 
tools for automating tasks on your computer are pro-
grams you write that directly control the keyboard
and mouse. These programs can control other applications by sending 
them virtual keystrokes and mouse clicks, just as if you were sitting at your 
computer and interacting with the applications yourself. This technique 
is known as graphical user interface automation, or GUI automation for short. 
With GUI automation, your programs can do anything that a human user 
sitting at the computer can do, except spill coffee on the keyboard.
Think of GUI automation as programming a robotic arm. You can 
program the robotic arm to type at your keyboard and move your mouse 
for you. This technique is particularly useful for tasks that involve a lot of 
mindless clicking or filling out of forms.
414   
Chapter 18
The 
pyautogui
module has functions for simulating mouse movements, 
button clicks, and scrolling the mouse wheel. This chapter covers only a 
subset of PyAutoGUI’s features; you can find the full documentation at 
http://pyautogui.readthedocs.org/.
Installing the pyautogui Module
The 
pyautogui
module can send virtual keypresses and mouse clicks to 
Windows, OS X, and Linux. Depending on which operating system you’re 
using, you may have to install some other modules (called dependencies) 
before you can install PyAutoGUI.
•  On Windows, there are no other modules to install.
•  On OS X, run 
sudo pip3 install pyobjc-framework-Quartz
sudo pip3 
install pyobjc-core
, and then 
sudo pip3 install pyobjc
.
•  On Linux, run 
sudo pip3 install python3-xlib
sudo apt-get install scrot
sudo apt-get install python3-tk
, and 
sudo apt-get install python3-dev
(Scrot is a screenshot program that PyAutoGUI uses.)
After these dependencies are installed, run 
pip install pyautogui
(or 
pip3
on OS X and Linux) to install PyAutoGUI. 
Appendix A has complete information on installing third-party modules. 
To test whether PyAutoGUI has been installed correctly, run 
import pyautogui
from the interactive shell and check for any error messages.
Staying on Track
Before you jump in to a GUI automation, you should know how to escape 
problems that may arise. Python can move your mouse and type keystrokes 
at an incredible speed. In fact, it might be too fast for other programs to 
keep up with. Also, if something goes wrong but your program keeps mov-
ing the mouse around, it will be hard to tell what exactly the program is 
doing or how to recover from the problem. Like the enchanted brooms from 
Disney’s The Sorcerer’s Apprentice, which kept filling—and then overfilling— 
Mickey’s tub with water, your program could get out of control even though 
it’s following your instructions perfectly. Stopping the program can be diffi-
cult if the mouse is moving around on its own, preventing you from clicking 
the IDLE window to close it. Fortunately, there are several ways to prevent 
or recover from GUI automation problems.
Shutting Down Everything by Logging Out
Perhaps the simplest way to stop an out-of-control GUI automation program 
is to log out, which will shut down all running programs. On Windows and 
Linux, the logout hotkey is 
ctrl
-
alt
-
del
. On OS X, it is z-
shift
-
option
-Q. 
By logging out, you’ll lose any unsaved work, but at least you won’t have to 
wait for a full reboot of the computer.
Controlling the Keyboard and Mouse with GUI Automation  
415
Pauses and Fail-Safes
You can tell your script to wait after every function call, giving you a short 
window to take control of the mouse and keyboard if something goes wrong. 
To do this, set the 
pyautogui.PAUSE
variable to the number of seconds you 
want it to pause. For example, after setting 
pyautogui.PAUSE = 1.5
, every 
PyAutoGUI function call will wait one and a half seconds after performing 
its action. Non-PyAutoGUI instructions will not have this pause.
PyAutoGUI also has a fail-safe feature. Moving the mouse cursor to the 
upper-left corner of the screen will cause PyAutoGUI to raise the 
pyautogui 
.FailSafeException
exception. Your program can either handle this excep-
tion with 
try
and 
except
statements or let the exception crash your program. 
Either way, the fail-safe feature will stop the program if you quickly move 
the mouse as far up and left as you can. You can disable this feature by set-
ting 
pyautogui.FAILSAFE = False
. Enter the following into the interactive shell:
>>> import pyautogui
>>> pyautogui.PAUSE = 1
>>> pyautogui.FAILSAFE = True
Here we import 
pyautogui
and set 
pyautogui.PAUSE
to 
1
for a one-second 
pause after each function call. We set 
pyautogui.FAILSAFE
to 
True
to enable 
the fail-safe feature.
controlling mouse movement
In this section, you’ll learn how to move the mouse and track its position 
on the screen using PyAutoGUI, but first you need to understand how 
PyAutoGUI works with coordinates.
The mouse functions 
of PyAutoGUI use x- and 
y- coordinates. Fig ure 18-1 
shows the coordinate system 
for the computer screen; it’s 
similar to the coordinate 
system used for images, dis-
cussed in Chapter 17. The 
origin, where x and y are 
both zero, is at the upper-
left corner of the screen. 
The x- coordinates increase 
going to the right, and the 
y- coordinates increase going 
down. All coordinates are 
positive integers; there are 
no negative coordinates.
(0,0)
(1919,0)
(0,1079)
(1919,1079)
x increases
y increases
Figure 18-1: The coordinates of a computer screen 
with 1920×1080 resolution
416   
Chapter 18
Your resolution is how many pixels wide and tall your screen is. If your 
screen’s resolution is set to 1920×1080, then the coordinate for the upper-
left corner will be (0, 0), and the coordinate for the bottom-right corner 
will be (1919, 1079).
The 
pyautogui.size()
function returns a two-integer tuple of the screen’s 
width and height in pixels. Enter the following into the interactive shell:
>>> import pyautogui
>>> pyautogui.size()
(1920, 1080)
>>> width, height = pyautogui.size()
pyautogui.size()
returns 
(1920, 1080)
on a computer with a 1920×1080 
resolution; depending on your screen’s resolution, your return value may be 
different. You can store the width and height from 
pyautogui.size()
in vari-
ables like 
width
and 
height
for better readability in your programs.
Moving the Mouse
Now that you understand screen coordinates, let’s move the mouse. The 
pyautogui.moveTo()
function will instantly move the mouse cursor to a  specified 
position on the screen. Integer values for the x- and y-coordinates make up 
the function’s first and second arguments, respectively. An optional  
duration
integer or float keyword argument specifies the number of seconds it should 
take to move the mouse to the destination. If you leave it out, the default is 
0
for instantaneous movement. (All of the 
duration
keyword arguments in 
PyAutoGUI functions are optional.) Enter the following into the interactive 
shell:
>>> import pyautogui
>>> for i in range(10):
pyautogui.moveTo(100, 100, duration=0.25)
pyautogui.moveTo(200, 100, duration=0.25)
pyautogui.moveTo(200, 200, duration=0.25)
pyautogui.moveTo(100, 200, duration=0.25)
This example moves the mouse cursor clockwise in a square pattern 
among the four coordinates provided a total of ten times. Each movement 
takes a quarter of a second, as specified by the 
duration=0.25
keyword argu-
ment. If you hadn’t passed a third argument to any of the 
pyautogui.moveTo()
calls, the mouse cursor would have instantly teleported from point to point.
The 
pyautogui.moveRel()
function moves the mouse cursor relative to 
its current position. The following example moves the mouse in the same 
square pattern, except it begins the square from wherever the mouse hap-
pens to be on the screen when the code starts running:
>>> import pyautogui
>>> for i in range(10):
pyautogui.moveRel(100, 0, duration=0.25)
pyautogui.moveRel(0, 100, duration=0.25)
Documents you may be interested
Documents you may be interested