itextsharp pdf to image c# example : Adding text to a pdf form software SDK dll windows winforms wpf web forms Automate%20the%20Boring%20Stuff%20with%20Python%20(2015)34-part1624

Working with PDF and Word Documents 
317
8.  What is the difference between a 
Paragraph
object and a 
Run
object?
9.  How do you obtain a list of 
Paragraph
objects for a 
Document
object that’s 
stored in a variable named 
doc
?
10.  What type of object has 
bold
underline
italic
strike
, and 
outline
variables?
11.  What is the difference between setting the 
bold
variable to 
True
False
or 
None
?
12.  How do you create a 
Document
object for a new Word document?
13.  How do you add a paragraph with the text 
'Hello there!'
to a 
Document
object stored in a variable named 
doc
?
14.  What integers represent the levels of headings available in Word 
documents?
Practice Projects
For practice, write programs that do the following.
PDF Paranoia
Using the 
os.walk()
function from Chapter 9, write a script that will go 
through every PDF in a folder (and its subfolders) and encrypt the PDFs 
using a password provided on the command line. Save each encrypted 
PDF with an _encrypted.pdf suffix added to the original filename. Before 
deleting the original file, have the program attempt to read and decrypt 
the file to ensure that it was encrypted correctly.
Then, write a program that finds all encrypted PDFs in a folder (and its 
subfolders) and creates a decrypted copy of the PDF using a provided pass-
word. If the password is incorrect, the program should print a message to 
the user and continue to the next PDF.
Custom Invitations as Word Documents
Say you have a text file of guest names. This guests.txt file has one name per 
line, as follows:
Prof. Plum
Miss Scarlet
Col. Mustard
Al Sweigart
RoboCop
Write a program that would generate a Word document with custom 
invitations that look like Figure 13-11.
Since Python-Docx can use only those styles that already exist in the 
Word document, you will have to first add these styles to a blank Word file 
and then open that file with Python-Docx. There should be one invitation 
per page in the resulting Word document, so call 
add_break()
to add a page 
break after the last paragraph of each invitation. This way, you will need to 
open only one Word document to print all of the invitations at once.
Adding text to a 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
change font in pdf fillable form; add text field to pdf acrobat
Adding text to a 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
add form fields to pdf online; adding text to pdf form
318   
Chapter 13
Figure 13-11: The Word document generated by your custom invite script
You can download a sample guests.txt file from http://nostarch.com/
automatestuff/.
Brute-Force PDF Password Breaker
Say you have an encrypted PDF that you have forgotten the password to, 
but you remember it was a single English word. Trying to guess your forgot-
ten password is quite a boring task. Instead you can write a program that will 
decrypt the PDF by trying every possible English word until it finds one 
that works. This is called a brute-force password attack. Download the text file 
dictionary.txt from http://nostarch.com/automatestuff/. This dictionary file con-
tains over 44,000 English words with one word per line.
Using the file-reading skills you learned in Chapter 8, create a list of 
word strings by reading this file. Then loop over each word in this list, passing 
it to the 
decrypt()
method. If this method returns the integer 
0
, the pass-
word was wrong and your program should continue to the next password. 
If 
decrypt()
returns 
1
, then your program should break out of the loop and 
print the hacked password. You should try both the uppercase and lower-
case form of each word. (On my laptop, going through all 88,000 uppercase 
and lowercase words from the dictionary file takes a couple of minutes. This 
is why you shouldn’t use a simple English word for your passwords.)
C# PDF insert text Library: insert text into PDF content in C#.net
Supports adding text to PDF in preview without adobe reader installed in ASP.NET. Powerful .NET PDF edit control allows modify existing scanned PDF text.
change font size in fillable pdf form; adding form fields to pdf files
VB.NET PDF insert text library: insert text into PDF content in vb
VB.NET PDF - Insert Text to PDF Document in VB.NET. Providing Demo Code for Adding and Inserting Text to PDF File Page in VB.NET Program.
changing font size in pdf form; add image field to pdf form
14
wo r k i n g   w i t h   C S v   f i l e S   
An D   j S o n   D A t A
In Chapter 13, you learned how to extract 
text from PDF and Word documents. These 
files were in a binary format, which required 
special Python modules to access their data. 
CSV and JSON files, on the other hand, are just plain-
text files. You can view them in a text editor, such as 
IDLE’s file editor. But Python also comes with the 
special 
csv
and 
json
modules, each providing func-
tions to help you work with these file formats.
CSV stands for “comma-separated values,” and CSV files are simplified 
spreadsheets stored as plaintext files. Python’s 
csv
module makes it easy to 
parse CSV files.
JSON (pronounced “JAY-sawn” or “Jason”—it doesn’t matter how 
because either way people will say you’re pronouncing it wrong) is a for-
mat that stores information as JavaScript source code in plaintext files. 
VB.NET PDF Text Box Edit Library: add, delete, update PDF text box
Link: Edit URL. Bookmark: Edit Bookmark. Metadata: Edit, Delete Metadata. Form Process. Provide VB.NET Users with Solution of Adding Text Box to PDF Page in VB
can save pdf form data; create a pdf form to fill out
C# PDF Text Box Edit Library: add, delete, update PDF text box in
Provide .NET SDK library for adding text box to PDF document in .NET WinForms application. Adding text box is another way to add text to PDF page.
add submit button to pdf form; change font pdf fillable form
320   
Chapter 14
(JSON is short for JavaScript Object Notation.) You don’t need to know the 
JavaScript  programming language to use JSON files, but the JSON format 
is useful to know because it’s used in many web applications. 
the csv module
Each line in a CSV file represents a row in the spreadsheet, and commas 
separate the cells in the row. For example, the spreadsheet example.xlsx from 
http://nostarch.com/automatestuff/ would look like this in a CSV file:
4/5/2015 13:34,Apples,73
4/5/2015 3:41,Cherries,85
4/6/2015 12:46,Pears,14
4/8/2015 8:59,Oranges,52
4/10/2015 2:07,Apples,152
4/10/2015 18:10,Bananas,23
4/10/2015 2:40,Strawberries,98
I will use this file for this chapter’s interactive shell examples. You can 
download example.csv from http://nostarch.com/automatestuff/ or enter the text 
into a text editor and save it as example.csv.
CSV files are simple, lacking many of the features of an Excel spread-
sheet. For example, CSV files
•  Don’t have types for their values—everything is a string
•  Don’t have settings for font size or color
•  Don’t have multiple worksheets
•  Can’t specify cell widths and heights
•  Can’t have merged cells
•  Can’t have images or charts embedded in them
The advantage of CSV files is simplicity. CSV files are widely supported 
by many types of programs, can be viewed in text editors (including IDLE’s 
file editor), and are a straightforward way to represent spreadsheet data. 
The CSV format is exactly as advertised: It’s just a text file of comma- 
separated values. 
Since CSV files are just text files, you might be tempted to read them in 
as a string and then process that string using the techniques you learned 
in Chapter 8. For example, since each cell in a CSV file is separated by a 
comma, maybe you could just call the 
split()
method on each line of text to 
get the values. But not every comma in a CSV file represents the boundary 
between two cells. CSV files also have their own set of escape characters to 
allow commas and other characters to be included as part of the values. The 
split()
method doesn’t handle these escape characters. Because of these 
potential pitfalls, you should always use the 
csv
module for reading and 
writing CSV files.
VB.NET PDF Page Insert Library: insert pages into PDF file in vb.
Support adding PDF page number. Offer PDF page break inserting function. DLLs for Adding Page into PDF Document in VB.NET Class. Add necessary references:
add email button to pdf form; add image to pdf form
VB.NET PDF Library SDK to view, edit, convert, process PDF file
Support adding protection features to PDF file by adding password, digital signatures and redaction feature. Various of PDF text and images processing features
pdf form creator; adding image to pdf form
Working with CSV Files and JSON Data 
321
Reader Objects
To read data from a CSV file with the 
csv
module, you need to create a 
Reader
object. A 
Reader
object lets you iterate over lines in the CSV file. Enter the 
following into the interactive shell, with example.csv in the current working 
directory: 
u >>> import csv
v >>> exampleFile = open('example.csv')
w >>> exampleReader = csv.reader(exampleFile)
x >>> exampleData = list(exampleReader)
y >>> exampleData
[['4/5/2015 13:34', 'Apples', '73'], ['4/5/2015 3:41', 'Cherries', '85'], 
['4/6/2015 12:46', 'Pears', '14'], ['4/8/2015 8:59', 'Oranges', '52'], 
['4/10/2015 2:07', 'Apples', '152'], ['4/10/2015 18:10', 'Bananas', '23'], 
['4/10/2015 2:40', 'Strawberries', '98']]
The 
csv
module comes with Python, so we can import it u without hav-
ing to install it first.
To read a CSV file with the 
csv
module, first open it using the 
open()
function v, just as you would any other text file. But instead of calling the 
read()
or 
readlines()
method on the 
File
object that 
open()
returns, pass it 
to the 
csv.reader()
function w. This will return a 
Reader
object for you to 
use. Note that you don’t pass a filename string directly to the 
csv.reader()
function.
The most direct way to access the values in the 
Reader
object is to con-
vert it to a plain Python list by passing it to 
list()
x. Using 
list()
on this 
Reader
object returns a list of lists, which you can store in a variable like 
exampleData
. Entering 
exampleData
in the shell displays the list of lists y.
Now that you have the CSV file as a list of lists, you can access the value 
at a particular row and column with the expression 
exampleData[row][col]
where 
row
is the index of one of the lists in 
exampleData
, and 
col
is the index 
of the item you want from that list. Enter the following into the interactive 
shell:
>>> exampleData[0][0]
'4/5/2015 13:34'
>>> exampleData[0][1]
'Apples'
>>> exampleData[0][2]
'73'
>>> exampleData[1][1]
'Cherries'
>>> exampleData[6][1]
'Strawberries'
exampleData[0][0]
goes into the first list and gives us the first string, 
exampleData[0][2]
goes into the first list and gives us the third string, and 
so on.
VB.NET PDF Text Add Library: add, delete, edit PDF text in vb.net
Edit URL. Bookmark: Edit Bookmark. Metadata: Edit, Delete Metadata. Form Process. Professional VB.NET Solution for Adding Text Annotation to PDF Page in
cannot save pdf form; create a pdf form
C# PDF Annotate Library: Draw, edit PDF annotation, markups in C#.
Provide users with examples for adding text box to PDF and edit font size and color in text box field in C#.NET program. C#.NET: Draw Markups on PDF File.
create a fillable pdf form from a word document; pdf create fillable form
322   
Chapter 14
Reading Data from Reader Objects in a for Loop
For large CSV files, you’ll want to use the 
Reader
object in a 
for
loop. This 
avoids loading the entire file into memory at once. For example, enter the 
following into the interactive shell:
>>> import csv
>>> exampleFile = open('example.csv')
>>> exampleReader = csv.reader(exampleFile)
>>> for row in exampleReader:
print('Row #' + str(exampleReader.line_num) + ' ' + str(row))
Row #1 ['4/5/2015 13:34', 'Apples', '73']
Row #2 ['4/5/2015 3:41', 'Cherries', '85']
Row #3 ['4/6/2015 12:46', 'Pears', '14']
Row #4 ['4/8/2015 8:59', 'Oranges', '52']
Row #5 ['4/10/2015 2:07', 'Apples', '152']
Row #6 ['4/10/2015 18:10', 'Bananas', '23']
Row #7 ['4/10/2015 2:40', 'Strawberries', '98']
After you import the 
csv
module and make a 
Reader
object from the 
CSV file, you can loop through the rows in the 
Reader
object. Each row is 
a list of values, with each value representing a cell.
The 
print()
function call prints the number of the current row and the 
contents of the row. To get the row number, use the 
Reader
object’s 
line_num
variable, which contains the number of the current line.
The 
Reader
object can be looped over only once. To reread the CSV file, 
you must call 
csv.reader
to create a 
Reader
object.
Writer Objects
Writer
object lets you write data to a CSV file. To create a 
Writer
object, you 
use the 
csv.writer()
function. Enter the following into the interactive shell:
>>> import csv
u >>> outputFile = open('output.csv', 'w', newline='')
v >>> outputWriter = csv.writer(outputFile)
>>> outputWriter.writerow(['spam', 'eggs', 'bacon', 'ham'])
21
>>> outputWriter.writerow(['Hello, world!', 'eggs', 'bacon', 'ham'])
32
>>> outputWriter.writerow([1, 2, 3.141592, 4])
16
>>> outputFile.close()
First, call 
open()
and pass it 
'w'
to open a file in write mode u. This will 
create the object you can then pass to 
csv.writer()
v to create a 
Writer
object.
On Windows, you’ll also need to pass a blank string for the 
open()
func-
tion’s 
newline
keyword argument. For technical reasons beyond the scope 
of this book, if you forget to set the 
newline
argument, the rows in output.csv 
will be double-spaced, as shown in Figure 14-1.
C# PDF insert image Library: insert images into PDF in C#.net, ASP
Insert images into PDF form field. To help you solve this technical problem, we provide this C#.NET PDF image adding control, XDoc.PDF for .NET.
adding a signature to a pdf form; change tab order in pdf form
C# PDF Page Insert Library: insert pages into PDF file in C#.net
By using reliable APIs, C# programmers are capable of adding and inserting (empty) PDF page or pages from various file formats, such as PDF, Tiff, Word, Excel
pdf add signature field; create a form in pdf from word
Working with CSV Files and JSON Data 
323
Figure 14-1: If you forget the newline='' keyword argument in open(), the CSV file  
will be double-spaced.
The 
writerow()
method for 
Writer
objects takes a list argument. 
Each value in the list is placed in its own cell in the output CSV file. The 
return value of 
writerow()
is the number of characters written to the file 
for that row (including newline characters). 
This code produces an output.csv file that looks like this:
spam,eggs,bacon,ham
"Hello, world!",eggs,bacon,ham
1,2,3.141592,4
Notice how the 
Writer
object automatically escapes the comma in the 
value 
'Hello, world!'
with double quotes in the CSV file. The 
csv
module 
saves you from having to handle these special cases yourself.
The delimiter and lineterminator Keyword Arguments
Say you want to separate cells with a tab character instead of a comma and 
you want the rows to be double-spaced. You could enter something like the 
following into the interactive shell:
>>> import csv
>>> csvFile = open('example.tsv', 'w', newline='')
u >>> csvWriter = csv.writer(csvFile, delimiter='\t', lineterminator='\n\n')
>>> csvWriter.writerow(['apples', 'oranges', 'grapes'])
24
>>> csvWriter.writerow(['eggs', 'bacon', 'ham'])
17
>>> csvWriter.writerow(['spam', 'spam', 'spam', 'spam', 'spam', 'spam'])
32
>>> csvFile.close()
324   
Chapter 14
This changes the delimiter and line terminator characters in your 
file. The delimiter is the character that appears between cells on a row. By 
default, the delimiter for a CSV file is a comma. The line terminator is the 
character that comes at the end of a row. By default, the line terminator 
is a newline. You can change characters to different values by using the 
delimiter
and 
lineterminator
keyword arguments with 
csv.writer()
Passing 
delimeter='\t'
and 
lineterminator='\n\n'
u changes the charac-
ter between cells to a tab and the character between rows to two newlines. 
We then call 
writerow()
three times to give us three rows.
This produces a file named example.tsv with the following contents:
apples  oranges grapes
eggs    bacon   ham
spam    spam    spam    spam    spam    spam    
Now that our cells are separated by tabs, we’re using the file extension 
.tsv, for tab-separated values.
Project: removing the header from cSV files
Say you have the boring job of removing the first line from several hundred 
CSV files. Maybe you’ll be feeding them into an automated process that 
requires just the data and not the headers at the top of the columns. You 
could open each file in Excel, delete the first row, and resave the file—but 
that would take hours. Let’s write a program to do it instead.
The program will need to open every file with the .csv extension in the 
current working directory, read in the contents of the CSV file, and rewrite 
the contents without the first row to a file of the same name. This will 
replace the old contents of the CSV file with the new, headless contents.
wA r nin g
As always, whenever you write a program that modifies files, be sure to back up the 
files, first just in case your program does not work the way you expect it to. You don’t 
want to accidentally erase your original files.
At a high level, the program must do the following:
•  Find all the CSV files in the current working directory.
•  Read in the full contents of each file.
•  Write out the contents, skipping the first line, to a new CSV file.
At the code level, this means the program will need to do the following:
•  Loop over a list of files from 
os.listdir()
, skipping the non-CSV files.
•  Create a CSV 
Reader
object and read in the contents of the file, using 
the 
line_num
attribute to figure out which line to skip.
•  Create a CSV 
Writer
object and write out the read-in data to the new file.
Working with CSV Files and JSON Data 
325
For this project, open a new file editor window and save it as 
removeCsvHeader.py.
Step 1: Loop Through Each CSV File
The first thing your program needs to do is loop over a list of all CSV file-
names for the current working directory. Make your removeCsvHeader.py look 
like this:
#! python3
# removeCsvHeader.py - Removes the header from all CSV files in the current 
# working directory.
import csv, os
os.makedirs('headerRemoved', exist_ok=True)
# Loop through every file in the current working directory.
for csvFilename in os.listdir('.'):
if not csvFilename.endswith('.csv'):
        continue    # skip non-csv files
print('Removing header from ' + csvFilename + '...')
# TODO: Read the CSV file in (skipping first row).
# TODO: Write out the CSV file.
The 
os.makedirs()
call will create a 
headerRemoved
folder where all the head-
less CSV files will be written. A 
for
loop on 
os.listdir('.')
gets you partway 
there, but it will loop over all files in the working directory, so you’ll need 
to add some code at the start of the loop that skips filenames that don’t end 
with 
.csv
. The 
continue
statement u makes the 
for
loop move on to the next 
filename when it comes across a non-CSV file.
Just so there’s some output as the program runs, print out a message 
saying which CSV file the program is working on. Then, add some 
TODO
com-
ments for what the rest of the program should do. 
Step 2: Read in the CSV File
The program doesn’t remove the first line from the CSV file. Rather, it 
creates a new copy of the CSV file without the first line. Since the copy’s 
filename is the same as the original filename, the copy will overwrite the 
original.
The program will need a way to track whether it is currently looping on 
the first row. Add the following to removeCsvHeader.py. 
#! python3
# removeCsvHeader.py - Removes the header from all CSV files in the current 
# working directory.
--snip--
326   
Chapter 14
# Read the CSV file in (skipping first row).
csvRows = []
csvFileObj = open(csvFilename)
readerObj = csv.reader(csvFileObj)
for row in readerObj:
if readerObj.line_num == 1:
continue    # skip first row
csvRows.append(row)
csvFileObj.close()
# TODO: Write out the CSV file.
The 
Reader
object’s 
line_num
attribute can be used to determine which 
line in the CSV file it is currently reading. Another 
for
loop will loop over 
the rows returned from the CSV 
Reader
object, and all rows but the first will 
be appended to 
csvRows
.
As the 
for
loop iterates over each row, the code checks whether 
readerObj.line_num
is set to 
1
. If so, it executes a 
continue
to move on to the 
next row without appending it to 
csvRows
. For every row afterward, the 
condition will be always be 
False
, and the row will be appended to 
csvRows
.
Step 3: Write Out the CSV File Without the First Row
Now that 
csvRows
contains all rows but the first row, the list needs to be 
written out to a CSV file in the headerRemoved folder. Add the following 
to  removeCsvHeader.py:
#! python3
# removeCsvHeader.py - Removes the header from all CSV files in the current 
# working directory.
--snip--
# Loop through every file in the current working directory.
u for csvFilename in os.listdir('.'):
if not csvFilename.endswith('.csv'):
continue    # skip non-CSV files
--snip--
# Write out the CSV file.
csvFileObj = open(os.path.join('headerRemoved', csvFilename), 'w', 
newline='')
csvWriter = csv.writer(csvFileObj)
for row in csvRows:
csvWriter.writerow(row)
csvFileObj.close()
The CSV 
Writer
object will write the list to a CSV file in 
headerRemoved
using 
csvFilename
(which we also used in the CSV reader). This will over-
write the original file.
Documents you may be interested
Documents you may be interested