itextsharp pdf to image c# example : Add print button to pdf form application software cloud windows html .net class Automate%20the%20Boring%20Stuff%20with%20Python%20(2015)42-part1633

Manipulating Images
397
Resizing an Image
The 
resize()
method is called on an 
Image
object and returns a new 
Image
object of the specified width and height. It accepts a two-integer tuple argu-
ment, representing the new width and height of the returned image. Enter 
the following into the interactive shell:
u >>> width, height = catIm.size
v >>> quartersizedIm = catIm.resize((int(width / 2), int(height / 2)))
>>> quartersizedIm.save('quartersized.png')
w >>> svelteIm = catIm.resize((width, height + 300))
>>> svelteIm.save('svelte.png')
Here we assign the two values in the 
catIm.size
tuple to the variables 
width
and 
height
u. Using 
width
and 
height
instead of 
catIm.size[0]
and  
catIm.size[1]
makes the rest of the code more readable.
The first 
resize()
call passes 
int(width / 2)
for the new width and 
int(height / 2)
for the new height v, so the 
Image
object returned from 
resize()
will be half the length and width of the original image, or one-
quarter of the original image size overall. The 
resize()
method accepts 
only integers in its tuple argument, which is why you needed to wrap both 
divisions by 
2
in an 
int()
call.
This resizing keeps the same proportions for the width and height. But 
the new width and height passed to 
resize()
do not have to be proportional 
to the original image. The 
svelteIm
variable contains an 
Image
object that 
has the original width but a height that is 300 pixels taller w, giving Zophie 
a more slender look.
Note that the 
resize()
method does not edit the 
Image
object in place 
but instead returns a new 
Image
object.
PASting tr AnSPArent Pix elS
Normally transparent pixels are pasted as white pixels‮ If the image you want 
to paste has transparent pixels, pass the 
Image
object as the third argument 
so that a solid rectangle isn’t pasted‮ This third argument is the “mask” 
Image
object‮ A mask is an 
Image
object where the alpha value is significant, but the 
red, green, and blue values are ignored‮ The mask tells the paste() function 
which pixels it should copy and which it should leave transparent‮ Advanced 
usage of masks is beyond this book, but if you want to paste an image that has 
transparent pixels, pass the 
Image
object again as the third argument‮
Add print button 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
changing font size in pdf form field; pdf editable fields
Add print button 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
create a form in pdf from word; adding text to a pdf form
398   
Chapter 17
Rotating and Flipping Images
Images can be rotated with the 
rotate()
method, which returns a new 
Image
object of the rotated image and leaves the original 
Image
object unchanged. 
The argument to 
rotate()
is a single integer or float representing the num-
ber of degrees to rotate the image counterclockwise. Enter the following 
into the interactive shell:
>>> catIm.rotate(90).save('rotated90.png')
>>> catIm.rotate(180).save('rotated180.png')
>>> catIm.rotate(270).save('rotated270.png')
Note how you can chain method calls by calling 
save()
directly on the 
Image
object returned from 
rotate()
. The first 
rotate()
and 
save()
call makes 
a new 
Image
object representing the image rotated counterclockwise by 
90 degrees and saves the rotated image to rotated90.png. The second and 
third calls do the same, but with 180 degress and 270 degress. The results 
look like Figure 17-7.
Figure 17-7: The original image (left) and the image rotated counterclockwise by 90, 180, 
and 270 degrees
Notice that the width and height of the image change when the image 
is rotated 90 or 270 degrees. If you rotate an image by some other amount, 
the original dimensions of the image are maintained. On Windows, a 
black background is used to fill in any gaps made by the rotation, like in 
Figure 17-8. On OS X, transparent pixels are used for the gaps instead.
The 
rotate()
method has an optional 
expand
keyword argument that can 
be set to 
True
to enlarge the dimensions of the image to fit the entire rotated 
new image. For example, enter the following into the interactive shell:
>>> catIm.rotate(6).save('rotated6.png')
>>> catIm.rotate(6, expand=True).save('rotated6_expanded.png')
The first call rotates the image 6 degrees and saves it to rotate6.png (see 
the image on the left of Figure 17-8). The second call rotates the image 6 
degrees with 
expand
set to 
True
and saves it to rotate6_expanded.png (see the 
image on the right of Figure 17-8).
Save, Print Images in Web Image Viewer| Online Tutorials
you can be immediately enabled to save, print, download and at another page and download it with button click; like PNG, JPEG, GIF, BMP, TIFF, PDF, MS Word, etc.
add signature field to pdf; pdf add signature field
C# WPF PDF Viewer SDK to print PDF document in C#.NET
Highlight Text. Add Text. Add Text Box. Drawing Markups. Add Stamp Annotation. PDF Print. C#.NET RasterEdge WPF PDF Viewer printing button is as following. Print
changing font in pdf form; add email button to pdf form
Manipulating Images
399
Figure 17-8: The image rotated 6 degrees normally (left) and with expand=True (right)
You can also get a “mirror flip” of an image with the 
transpose()
method. 
You must pass either 
Image.FLIP_LEFT_RIGHT
or 
Image.FLIP_TOP_BOTTOM
to the 
transpose()
method. Enter the following into the interactive shell:
>>> catIm.transpose(Image.FLIP_LEFT_RIGHT).save('horizontal_flip.png')
>>> catIm.transpose(Image.FLIP_TOP_BOTTOM).save('vertical_flip.png')
Like 
rotate()
transpose()
creates a new 
Image
object. Here was pass 
Image.FLIP_LEFT_RIGHT
to flip the image horizontally and then save the result 
to horizontal_flip.png. To flip the image vertically, we pass 
Image.FLIP_TOP_
BOTTOM
and save to vertical_flip.png. The results look like Figure 17-9.
Figure 17-9: The original image (left), horizontal flip (center), and vertical flip (right)
VB.NET PDF - Print PDF with VB.NET WPF PDF Viewer
Highlight Text. Add Text. Add Text Box. Drawing Markups. PDF Print. VB.NET WPF PDF Viewer: Print PDF. VB.NET RasterEdge WPF PDF Viewer printing button is as following
convert word doc to pdf with editable fields; can save pdf form data
C# HTML5 Viewer: Load, View, Convert, Annotate and Edit PDF
various buttons are give for print or output PDF Users can freely add text annotation, freehand annotation annotations can be removed easily with delete button.
change tab order in pdf form; pdf form change font size
400   
Chapter 17
Changing Individual Pixels
The color of an individual pixel can be retrieved or set with the 
getpixel()
and 
putpixel()
methods. These methods both take a tuple representing the 
x- and y-coordinates of the pixel. The 
putpixel()
method also takes an addi-
tional tuple argument for the color of the pixel. This color argument is a 
four-integer RGBA tuple or a three-integer RGB tuple. Enter the following 
into the interactive shell:
u >>> im = Image.new('RGBA', (100, 100))
v >>> im.getpixel((0, 0))
(0, 0, 0, 0)
w >>> for x in range(100):
for y in range(50):
            im.putpixel((x, y), (210, 210, 210))
>>> from PIL import ImageColor
y >>> for x in range(100):
for y in range(50, 100):
            im.putpixel((x, y), ImageColor.getcolor('darkgray', 'RGBA'))
>>> im.getpixel((0, 0))
(210, 210, 210, 255)
>>> im.getpixel((0, 50))
(169, 169, 169, 255)
>>> im.save('putPixel.png')
At u we make a new image that is a 100×100 transparent square. 
Calling 
getpixel()
on some coordinates in this image returns 
(0, 0, 0, 0)
because the image is transparent v. To color pixels in this image, we can 
use nested 
for
loops to go through all the pixels in the top half of the 
image w and color each pixel using 
putpixel()
x. Here we pass 
putpixel()
the RGB tuple 
(210, 210, 210)
, a light gray.
Say we want to color the bottom half of the image dark gray but don’t 
know the RGB tuple for dark gray. The 
putpixel()
method doesn’t accept a 
standard color name like 
'darkgray'
, so you have to use 
ImageColor.getcolor()
to get a color tuple from 
'darkgray'
. Loop through 
the pixels in the bottom half of the image y and pass 
putpixel()
the return value of 
ImageColor.getcolor()
z, 
and you should now have an image that is light gray 
in its top half and dark gray in the bottom half, as 
shown in Figure 17-10. You can call 
getpixel()
on some 
coordinates to confirm that the color at any given 
pixel is what you expect. Finally, save the image to 
putPixel.png.
Of course, drawing one pixel at a time onto 
an image isn’t very convenient. If you need to draw 
shapes, use the 
ImageDraw
functions explained later 
in this chapter.
Figure 17-10: The  
putPixel‮png image 
C# HTML5 Viewer: Load, View, Convert, Annotate and Edit Excel
C# .NET, users can convert Excel to PDF document, export Viewer for C# .NET, users can add various types can be removed from Excel file by using delete button.
adding text fields to pdf; pdf forms save
VB.NET Image: Web Image and Document Viewer Creation & Design
can rotate, redact & annotate images and add, delete & and processing, you may click toolbar button to print It is a powerful toolkit to print bitonal images
create a pdf form online; add form fields to pdf online
Manipulating Images
401
Project: Adding a logo
Say you have the boring job of resizing thousands 
of images and adding a small logo watermark to 
the corner of each. Doing this with a basic graph-
ics program such as Paintbrush or Paint would 
take forever. A fancier graphics application such 
as Photoshop can do batch processing, but that 
software costs hundreds of dollars. Let’s write a 
script to do it instead.
Say that Figure 17-11 is the logo you want to 
add to the bottom-right corner of each image: a 
black cat icon with a white border, with the rest 
of the image transparent.
At a high level, here’s what the program 
should do:
•  Load the logo image.
•  Loop over all .png and.jpg files in the working directory.
•  Check whether the image is wider or taller than 300 pixels.
•  If so, reduce the width or height (whichever is larger) to 300 pixels and 
scale down the other dimension proportionally.
•  Paste the logo image into the corner.
•  Save the altered images to another folder.
This means the code will need to do the following:
•  Open the catlogo.png file as an 
Image
object.
•  Loop over the strings returned from 
os.listdir('.')
.
•  Get the width and height of the image from the 
size
attribute.
•  Calculate the new width and height of the resized image.
•  Call the 
resize()
method to resize the image.
•  Call the 
paste()
method to paste the logo.
•  Call the 
save()
method to save the changes, using the original filename.
Step 1: Open the Logo Image
For this project, open a new file editor window, enter the following code, 
and save it as resizeAndAddLogo.py:
#! python3
# resizeAndAddLogo.py - Resizes all images in current working directory to fit 
# in a 300x300 square, and adds catlogo.png to the lower-right corner.
Figure 17-11: The logo to be 
added to the image.
C# HTML5 PDF Viewer SDK to view PDF document online in C#.NET
Highlight Text. Add Text. Add Text Box. Drawing Markups. PDF Print. to Jpeg, VB.NET compress PDF, VB.NET print PDF, VB.NET go to any page by using page go to button
cannot save pdf form in reader; add image to pdf form
VB.NET PDF- View PDF Online with VB.NET HTML5 PDF Viewer
Highlight Text. Add Text. Add Text Box. Drawing Markups. PDF Print. C#.NET edit PDF sticky note, C#.NET print PDF, C#.NET go to any page by using page go to button
changing font size in a pdf form; adding a text field to a pdf
402   
Chapter 17
import os
from PIL import Image
u SQUARE_FIT_SIZE = 300
v LOGO_FILENAME = 'catlogo.png'
w logoIm = Image.open(LOGO_FILENAME)
x logoWidth, logoHeight = logoIm.size
# TODO: Loop over all files in the working directory.
# TODO: Check if image needs to be resized.
# TODO: Calculate the new width and height to resize to.
# TODO: Resize the image.
# TODO: Add the logo.
# TODO: Save changes.
By setting up the 
SQUARE_FIT_SIZE
u and 
LOGO_FILENAME
v constants at the 
start of the program, we’ve made it easy to change the program later. Say 
the logo that you’re adding isn’t the cat icon, or say you’re reducing the out-
put images’ largest dimension to something other than 300  pixels. With these 
constants at the start of the program, you can just open the code, change 
those values once, and you’re done. (Or you can make it so that the values 
for these constants are taken from the command line arguments.) Without 
these constants, you’d instead have to search the code for all instances of 
300
and 
'catlogo.png'
and replace them with the values for your new project. 
In short, using constants makes your program more generalized.
The logo 
Image
object is returned from 
Image.open()
w. For readability, 
logoWidth
and 
logoHeight
are assigned to the values from 
logoIm.size
x.
The rest of the program is a skeleton of 
TODO
comments for now.
Step 2: Loop Over All Files and Open Images
Now you need to find every .png file and .jpg file in the current working 
directory. Note that you don’t want to add the logo image to the logo image 
itself, so the program should skip any image with a filename that’s the same 
as 
LOGO_FILENAME
. Add the following to your code:
#! python3
# resizeAndAddLogo.py - Resizes all images in current working directory to fit 
# in a 300x300 square, and adds catlogo.png to the lower-right corner.
import os
from PIL import Image
--snip--
Manipulating Images
403
os.makedirs('withLogo', exist_ok=True)
# Loop over all files in the working directory.
u for filename in os.listdir('.'):
    if not (filename.endswith('.png') or filename.endswith('.jpg')) \
or filename == LOGO_FILENAME:
        continue    # skip non-image files and the logo file itself
    im = Image.open(filename)
width, height = im.size
--snip--
First, the 
os.makedirs()
call creates a withLogo folder to store the fin-
ished images with logos, instead of overwriting the original image files. 
The 
exist_ok=True
keyword argument will keep 
os.makedirs()
from raising 
an exception if withLogo already exists. While looping through all the files 
in the working directory with 
os.listdir('.')
u, the long 
if
statement v 
checks whether each filename doesn’t end with .png or .jpg. If so—or if the 
file is the logo image itself—then the loop should skip it and use 
continue
to go to the next file. If 
filename
does end with 
'.png'
or 
'.jpg'
(and isn’t the 
logo file), you can open it as an 
Image
object x and set 
width
and 
height
.
Step 3: Resize the Images
The program should resize the image only if the width or height is larger 
than 
SQUARE_FIT_SIZE
(300 pixels, in this case), so put all of the resizing code 
inside an 
if
statement that checks the 
width
and 
height
variables. Add the 
following code to your program:
#! python3
# resizeAndAddLogo.py - Resizes all images in current working directory to fit 
# in a 300x300 square, and adds catlogo.png to the lower-right corner.
import os
from PIL import Image
--snip--
# Check if image needs to be resized.
if width > SQUARE_FIT_SIZE and height > SQUARE_FIT_SIZE:
# Calculate the new width and height to resize to.
if width > height:
            height = int((SQUARE_FIT_SIZE / width) * height)
width = SQUARE_FIT_SIZE
else:
            width = int((SQUARE_FIT_SIZE / height) * width)
height = SQUARE_FIT_SIZE
# Resize the image.
print('Resizing %s...' % (filename))
        im = im.resize((width, height))
--snip--
404   
Chapter 17
If the image does need to be resized, you need to find out whether it is 
a wide or tall image. If 
width
is greater than 
height
, then the height should 
be reduced by the same proportion that the width would be reduced u. 
This proportion is the 
SQUARE_FIT_SIZE
value divided by the current width. 
The new 
height
value is this proportion multiplied by the current 
height
value. Since the division operator returns a float value and 
resize()
requires 
the dimensions to be integers, remember to convert the result to an integer 
with the 
int()
function. Finally, the new 
width
value will simply be set to 
SQUARE_FIT_SIZE
.
If the 
height
is greater than or equal to the 
width
(both cases are handled 
in the 
else
clause), then the same calculation is done, except with the 
height
and 
width
variables swapped v.
Once 
width
and 
height
contain the new image dimensions, pass them to 
the 
resize()
method and store the returned 
Image
object in 
im
w.
Step 4: Add the Logo and Save the Changes
Whether or not the image was resized, the logo should still be pasted to the 
bottom-right corner. Where exactly the logo should be pasted depends on 
both the size of the image and the size of the logo. Figure 17-12 shows how 
to calculate the pasting position. The left coordinate for where to paste the 
logo will be the image width minus the logo width; the top coordinate for 
where to paste the logo will be the image height minus the logo height.
Image
Logo width
Logo height
Logo
Image width
Image height
Figure 17-12: The left and top coordinates for 
placing the logo in the bottom-right corner 
should be the image width/height minus the 
logo width/height.
After your code pastes the logo into the image, it should save the modi-
fied 
Image
object. Add the following to your program:
#! python3
# resizeAndAddLogo.py - Resizes all images in current working directory to fit 
# in a 300x300 square, and adds catlogo.png to the lower-right corner.
import os
from PIL import Image
Manipulating Images
405
--snip--
# Check if image needs to be resized.
--snip--
# Add the logo.
    print('Adding logo to %s...' % (filename))
    im.paste(logoIm, (width - logoWidth, height - logoHeight), logoIm)
# Save changes.
    im.save(os.path.join('withLogo', filename))
The new code prints a message telling the user that the logo is being 
added u, pastes 
logoIm
onto 
im
at the calculated coordinates v, and saves 
the changes to a filename in the withLogo directory w. When you run this 
program with the zophie.png file as the only image in the working directory, 
the output will look like this:
Resizing zophie.png...
Adding logo to zophie.png...
The image zophie.png will be changed to a 225×300-pixel image that 
looks like Figure 17-13. Remember that the 
paste()
method will not paste 
the transparency pixels if you do not pass the 
logoIm
for the third argument 
as well. This program can automatically resize and “logo-ify” hundreds of 
images in just a couple minutes.
Figure 17-13: The image zophie‮png resized and the logo added (left). If you forget the 
third argument, the transparent pixels in the logo will be copied as solid white pixels (right).
406   
Chapter 17
Ideas for Similar Programs
Being able to composite images or modify image sizes in a batch can be 
useful in many applications. You could write similar programs to do the 
following:
•  Add text or a website URL to images.
•  Add timestamps to images.
•  Copy or move images into different folders based on their sizes.
•  Add a mostly transparent watermark to an image to prevent others 
from copying it.
drawing on images
If you need to draw lines, rectangles, circles, or other simple shapes on 
an image, use Pillow’s 
ImageDraw
module. Enter the following into the inter-
active shell:
>>> from PIL import Image, ImageDraw
>>> im = Image.new('RGBA', (200, 200), 'white')
>>> draw = ImageDraw.Draw(im)
First, we import 
Image
and 
ImageDraw
. Then we create a new image, in this 
case, a 200×200 white image, and store the 
Image
object in 
im
. We pass the 
Image
object to the 
ImageDraw.Draw()
function to receive an 
ImageDraw
object. 
This object has several methods for drawing shapes and text onto an 
Image
object. Store the 
ImageDraw
object in a variable like 
draw
so you can use it eas-
ily in the following example.
Drawing Shapes
The following ImageDraw methods draw various kinds of shapes on the 
image. The 
fill
and 
outline
parameters for these methods are optional and 
will default to white if left unspecified.
Points
The 
point(xy, fill)
method draws individual pixels. The 
xy
argument 
represents a list of the points you want to draw. The list can be a list of 
x- and y-coordinate tuples, such as 
[(x, y), (x, y), ...]
, or a list of x- and 
y- coordinates without tuples, such as 
[x1, y1, x2, y2, ...]
. The 
fill
argu-
ment is the color of the points and is either an RGBA tuple or a string of 
a color name, such as 
'red'
. The 
fill
argument is optional.
Lines
The 
line(xy, fill, width)
method draws a line or series of lines. 
xy
is either 
a list of tuples, such as 
[(x, y), (x, y), ...]
, or a list of integers, such as 
[x1, y1, x2, y2, ...]
. Each point is one of the connecting points on the 
Documents you may be interested
Documents you may be interested