open source pdf to image converter c# : Add editable fields to pdf control SDK platform web page wpf azure web browser 05-welling-php-mysql-web10-part55

67
Closing a File
Listing 2.1 orders.txt—Example of What the Orders File Might Contain
20:30, 31st March  4 tires   1 oil  6 spark plugs  $434.00  22 Short St, Smalltown
20:42, 31st March  1 tires   0 oil  0 spark plugs  $100.00  33 Main Rd, Newtown
20:43, 31st March  0 tires   1 oil  4 spark plugs  $26.00  127 Acacia St,
Springfield
Closing a File
After you’ve finished using a file,you need to close it.You should do this by using the
fclose()
function as follows:
fclose($fp);
This function returns 
true
if the file was successfully closed or 
false
if it wasn’t.This
process is much less likely to go wrong than opening a file in the first place,so in this
case we’ve chosen not to test it.
The complete listing for the final version of 
processorder.php
is shown in 
Listing 2.2.
Listing 2.2 processorder.php—Final Version of the Order Processing Script
<?php
// create short variable names
$tireqty = $_POST[‘tireqty’];
$oilqty = $_POST[‘oilqty’];
$sparkqty = $_POST[‘sparkqty’];
$address = $_POST[‘address’];
$DOCUMENT_ROOT = $_SERVER[‘DOCUMENT_ROOT’];
?>
<html>
<head>
<title>Bob’s Auto Parts - Order Results</title>
</head>
<body>
<h1>Bob’s Auto Parts</h1>
<h2>Order Results</h2>
<?php
$date = date(‘H:i, jS F’);
echo ‘<p>Order processed at ‘;
echo $date;
echo ‘</p>’;
Add editable fields to pdf - 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 forms to pdf; pdf form creator
Add editable fields to pdf - 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 fillable pdf form online; acrobat create pdf form
68
Chapter 2 Storing and Retrieving Data
echo ‘<p>Your order is as follows: </p>’;
$totalqty = 0;
$totalqty = $tireqty + $oilqty + $sparkqty;
echo ‘Items ordered: ‘.$totalqty.’<br />’;
if( $totalqty == 0)
{
echo ‘You did not order anything on the previous page!<br />’;
}
else
{
if ( $tireqty>0 )
echo $tireqty.’ tires<br />’;
if ( $oilqty>0 )
echo $oilqty.’ bottles of oil<br />’;
if ( $sparkqty>0 )
echo $sparkqty.’ spark plugs<br />’;
}
$totalamount = 0.00;
define(‘TIREPRICE’, 100);
define(‘OILPRICE’, 10);
define(‘SPARKPRICE’, 4);
$totalamount = $tireqty * TIREPRICE
+ $oilqty * OILPRICE
+ $sparkqty * SPARKPRICE;
$totalamount=number_format($totalamount, 2, ‘.’, ‘ ‘);
echo ‘<p>Total of order is ‘.$totalamount.’</p>’;
echo ‘<p>Address to ship to is ‘.$address.’</p>’;
$outputstring = $date.”\t”.$tireqty.” tires \t”.$oilqty.” oil\t”
.$sparkqty.” spark plugs\t\$”.$totalamount
.”\t”. $address.”\n”;
// open file for appending
@ $fp = fopen(“$DOCUMENT_ROOT/../orders/orders.txt”, ‘ab’);
Listing 2.2 Continued
C# PDF Convert to Text SDK: Convert PDF to txt files in C#.net
NET project. Powerful .NET control for batch converting PDF to editable & searchable text formats in C# class. Free evaluation library
chrome pdf save form data; adding form fields to pdf
C# Create PDF Library SDK to convert PDF from other file formats
Create fillable PDF document with fields. searchable and can be fully populated with editable text and document creating toolkit, if you need to add some text
allow users to save pdf form; change font in pdf form
69
Reading from a File
if (!$fp)
{
echo ‘<p><strong> Your order could not be processed at this time.  ‘
.’Please try again later.</strong></p></body></html>’;
exit;
fwrite($fp, $outputstring, strlen($outputstring));
fclose($fp);
echo ‘<p>Order written.</p>’; 
?>
</body>
</html>
Reading from a File
Right now,Bob’s customers can leave their orders via the Web,but if Bob’s staff mem-
bers want to look at the orders, they have to open the files themselves.
Let’s create a web interface to let Bob’s staff read the files easily.The code for this
interface is shown in Listing 2.3.
Listing 2.3 vieworders.php—Staff Interface to the Orders File
<?php
//create short variable name
$DOCUMENT_ROOT = $HTTP_SERVER_VARS[‘DOCUMENT_ROOT’];
?>
<html>
<head>
<title>Bob’s Auto Parts - Customer Orders</title>
</head>
<body>
<h1>Bob’s Auto Parts</h1>
<h2>Customer Orders</h2>
<?php
@  $fp = fopen(“$DOCUMENT_ROOT/../orders/orders.txt”, ‘r’);
if (!$fp)
{
echo ‘<p><strong>No orders pending.’
.’Please try again later.</strong></p></body></html>’;
exit;
}
Listing 2.2 Continued
C# PDF Convert to Word SDK: Convert PDF to Word library in C#.net
you need to convert PDF document to some easily editable files like C#.NET DLLs and Demo Code: Convert PDF to Word Document in C#.NET Add necessary references:
pdf editable fields; adding text fields to pdf acrobat
VB.NET PDF Convert to Text SDK: Convert PDF to txt files in vb.net
Text in any PDF fields can be copied and pasted to .txt files by keeping original layout. VB.NET control for batch converting PDF to editable & searchable text
chrome save pdf form; android edit pdf forms
70
Chapter 2 Storing and Retrieving Data
while (!feof($fp))
{
$order= fgets($fp, 999);
echo $order.’<br>’;
}
fclose($fp);
?>
</body>
</html>
This script follows the sequence we described earlier:open the file,read from the file,
close the file.The output from this script using the data file from Listing 2.1 is shown in
Figure 2.4.
Listing 2.3 Continued
Figure 2.4 The 
vieworders.php
script displays all the orders currently in
the 
orders.txt
file in the browser window.
Let’s look at the functions in this script in detail.
Opening a File for Reading: fopen()
Again, you open the file by using 
fopen()
.In this case,you open the file for reading
only,so you use the file mode 
‘rb’
:
$fp = fopen(“$DOCUMENT_ROOT/../orders/orders.txt”, ‘rb’);
C# PDF Text Box Edit Library: add, delete, update PDF text box in
Support to use C# source code to add text box to specified PDF position in C#.NET framework. Able to create a fillable and editable text box to PDF document in
adding text to a pdf form; adding form fields to pdf files
VB.NET Create PDF from PowerPoint Library to convert pptx, ppt to
Add Password to PDF; VB.NET Form: extract value from fields; Convert multiple pages PowerPoint to fillable and editable PDF documents. Add necessary references:
pdf save form data; create a fillable pdf form from a word document
71
Reading from a File
Knowing When to Stop: feof()
In this example,you use a 
while
loop to read from the file until the end of the file is
reached.The 
while
loop tests for the end of the file using the 
feof()
function:
while (!feof($fp))
The 
feof()
function takes a file handle as its single parameter. It returns 
true
if the file
pointer is at the end of the file.Although the name might seem strange, you can remem-
ber it easily if you know that 
feof
stands for File End Of File.
In this case (and generally when reading from a file),you read from the file until 
EOF
is reached.
Reading a Line at a Time: fgets(), fgetss(), and
fgetcsv()
In this example,you use the 
fgets()
function to read from the file:
$order= fgets($fp, 999);
This function reads one line at a time from a file.In this case,it reads until it encounters
a newline character (
\n
),encounters an 
EOF
,or has read 998 bytes from the file.The
maximum length read is the length specified minus 1 byte.
You can use many different functions to read from files.The 
fgets()
function,for
example,is useful when you’re dealing with files that contain plain text that you want to
deal with in chunks.
An interesting variation on 
fgets()
is 
fgetss()
,which has the following prototype:
string fgetss(resource fp, int length, string [allowable_tags]);
This function is similar to 
fgets()
except that it strips out any PHP and HTML tags
found in the string. If you want to leave in any particular tags,you can include them in
the 
allowable_tags
string.You would use 
fgetss()
for safety when reading a file writ-
ten by somebody else or one containing user input.Allowing unrestricted HTML code
in the file could mess up your carefully planned formatting.Allowing unrestricted PHP
could give a malicious user almost free rein on your server.
The function 
fgetcsv()
is another variation on 
fgets()
.It has the following proto-
type:
array fgetcsv ( resource fp, int length [, string delimiter
[, string enclosure]])
This function breaks up lines of files when you have used a delimiting character,such as
the tab character (as we suggested earlier) or a comma (as commonly used by spread-
sheets and other applications).If you want to reconstruct the variables from the order
separately rather than as a line of text,
fgetcsv()
allows you to do this simply.You call it
in much the same way as you would call 
fgets()
,but you pass it the delimiter you used
to separate fields. For example,
$order = fgetcsv($fp, 100, “\t”);
VB.NET Create PDF from Word Library to convert docx, doc to PDF in
Protect: Add Password to PDF; VB.NET Form: extract value from fields; Convert multiple pages Word to fillable and editable PDF documents. Add necessary references
add text field to pdf acrobat; changing font size in pdf form field
VB.NET Create PDF Library SDK to convert PDF from other file
Create and save editable PDF with a blank page, bookmarks, links Create fillable PDF document with fields in Visual Basic .NET Add necessary references:
adding signature to pdf form; change font on pdf form
72
Chapter 2 Storing and Retrieving Data
This code would retrieve a line from the file and break it up wherever a tab (
\t
) was
encountered.The results are returned in an array (
$order
in this code example).We
cover arrays in more detail in Chapter 3.
The 
length
parameter should be greater than the length in characters of the longest
line in the file you are trying to read.
The 
enclosure
parameter specifies what each field in a line is surrounded by.If not
specified,it defaults to 
(a double quotation mark).
Reading the Whole File: readfile(), fpassthru(), and
file()
Instead of reading from a file a line at a time, you can read the whole file in one go.
There are four different ways you can do this.
The first uses 
readfile()
.You can replace the entire script you wrote previously
with one line:
readfile(“$DOCUMENT_ROOT/../orders/orders.txt”);
A call to the 
readfile()
function opens the file,echoes the content to standard output
(the browser), and then closes the file.The prototype for 
readfile()
is
int readfile(string filename, [int use_include_path[, resource context]] );
The optional second parameter specifies whether PHP should look for the file in the
include_path
and operates the same way as in 
fopen()
.The optional 
context
parame-
ter is used only when files are opened remotely via,for example,HTTP; we cover such
usage in more detail in Chapter 19.The function returns the total number of bytes read
from the file.
Second,you can use 
fpassthru()
.To do so,you need to open the file using 
fopen()
first.You can then pass the file pointer as an argument to 
fpassthru()
,which dumps
the contents of the file from the pointer’s position onward to standard output.It closes
the file when it is finished.
You can replace the previous script with 
fpassthru()
as follows:
$fp = fopen(“$DOCUMENT_ROOT/../orders/orders.txt”, ‘rb’);
fpassthru($fp);
The function 
fpassthru()
returns 
true
if the read is successful and 
false
otherwise.
The third option for reading the whole file is using the 
file()
function.This func-
tion is identical to 
readfile()
except that instead of echoing the file to standard out-
put,it turns it into an array.We cover this function in more detail when we look at
arrays in Chapter 3.Just for reference,you would call it using
$filearray = file($DOCUMENT_ROOT/../orders/orders.txt”);
VB.NET Create PDF from Excel Library to convert xlsx, xls to PDF
Add Password to PDF; VB.NET Form: extract value from fields; Create fillable and editable PDF documents from Excel in Visual Basic .NET Add necessary references:
add fields to pdf; cannot save pdf form
73
Reading from a File
This line reads the entire file into the array called 
$filearray
.Each line of the file is
stored in a separate element of the array.Note that this function is not binary safe.
Finally,as of PHP 4.3.0,you can use the 
file_get_contents()
function.This func-
tion is identical to 
readfile()
except that it returns the content of the file as a string
instead of outputting it to the browser.The advantage of this new function is that it is
binary safe,unlike the 
file()
function.
Reading a Character: fgetc()
Another option for file processing is to read a single character at a time from a file.You
can do this by using the 
fgetc()
function.It takes a file pointer as its only parameter
and returns the next character in the file.You can replace the 
while
loop in the original
script with one that uses 
fgetc()
,as follows:
while (!feof($fp))
{
$char = fgetc($fp);
if (!feof($fp))
echo ($char==”\n” ? ‘<br />’: $char);
}
This code reads a single character at a time from the file using 
fgetc()
and stores it in
$char
,until the end of the file is reached.It then does a little processing to replace the
text end-of-line characters (
\n
) with HTML line breaks (
<br />
).
This is just to clean up the formatting.If you try to output the file with newlines
between records,the whole file will be printed on a single line. (Try it and see.) Web
browsers do not render whitespace,such as newlines,so you need to replace them with
HTML linebreaks (
<br />
) instead.You can use the ternary operator to do this neatly.
A minor side effect of using 
fgetc()
instead of 
fgets()
is that 
fgetc()
returns the
EOF
character,whereas 
fgets()
does not.You need to test 
feof()
again after you’ve read
the character because you don’t want to echo the 
EOF
to the browser.
Reading a file character by character is not generally sensible or efficient unless for
some reason you want to process it character by character.
Reading an Arbitrary Length: fread()
The final way you can read from a file is to use the 
fread()
function to read an arbi-
trary number of bytes from the file.This function has the following prototype:
string fread(resource fp, int length);
It reads up to 
length
bytes,to the end of the file or network packet,whichever comes
first.
74
Chapter 2 Storing and Retrieving Data
Using Other Useful File Functions
Numerous other file functions are useful from time to time.Some are described next.
Checking Whether a File Is There: file_exists()
If you want to check whether a file exists without actually opening it,you can use
file_exists()
,as follows:
if (file_exists(“$DOCUMENT_ROOT/../orders/orders.txt”))
echo ‘There are orders waiting to be processed.’;
else
echo ‘There are currently no orders.’;
Determining How Big a File Is: filesize()
You can check the size of a file by using the 
filesize()
function:
echo filesize(“$DOCUMENT_ROOT/../orders/orders.txt”);
It returns the size of a file in bytes and can be used in conjunction with 
fread()
to read
a whole file (or some fraction of the file) at a time.You can even replace the entire origi-
nal script with the following:
$fp = fopen(“$DOCUMENT_ROOT/../orders/orders.txt”, ‘rb’);
echo nl2br(fread( $fp, filesize(“$DOCUMENT_ROOT/../orders/orders.txt” )));
fclose( $fp ); 
The 
nl2br()
function converts the 
\n
characters in the output to HTML line breaks
(
<br />
).
Deleting a File: unlink()
If you want to delete the order file after the orders have been processed,you can do so
by using 
unlink()
.(There is no function called delete.) For example,
unlink(“$DOCUMENT_ROOT/../orders/orders.txt”);
This function returns 
false
if the file could not be deleted.This situation typically
occurs if the permissions on the file are insufficient or if the file does not exist.
Navigating Inside a File: rewind(), fseek(), and ftell()
You can manipulate and discover the position of the file pointer inside a file by using
rewind()
,
fseek()
,and 
ftell()
.
The 
rewind()
function resets the file pointer to the beginning of the file.The
ftell()
function reports how far into the file the pointer is in bytes.For example,you
can add the following lines to the bottom of the original script (before the 
fclose()
command):
75
Using Other Useful File Functions
echo ‘Final position of the file pointer is ‘.(ftell($fp));
echo ‘<br />’;
rewind($fp);
echo ‘After rewind, the position is ‘.(ftell($fp));
echo ‘<br />’;
The output in the browser should be similar to that shown in Figure 2.5.
Figure 2.5 After reading the orders,the file pointer points to the end of the
file, an offset of 234 bytes.The call to rewind sets it back to position 0, the
start of the file.
You can use the function
fseek()
to set the file pointer to some point within the file.
Its prototype is
int fseek ( resource fp, int offset [, int whence])
A call to 
fseek()
sets the file pointer 
fp
at a point starting from 
whence
and moving
offset
bytes into the file.The optional 
whence
parameter defaults to the value
SEEK_SET
,which is effectively the start of the file.The other possible values are
SEEK_CUR
(the current location of the file pointer) and 
SEEK_END
(the end of the file).
The 
rewind()
function is equivalent to calling the 
fseek()
function with an offset
of zero.For example,you can use 
fseek()
to find the middle record in a file or to per-
form a binary search. Often,if you reach the level of complexity in a data file where you
need to do these kinds of things,your life will be much easier if you use a database.
76
Chapter 2 Storing and Retrieving Data
Locking Files
Imagine a situation in which two customers are trying to order a product at the same
time.(This situation is not uncommon, especially when your website starts to get any
kind of traffic volume.) What if one customer calls 
fopen()
and begins writing, and then
the other customer calls 
fopen()
and also begins writing? What will be the final con-
tents of the file? Will it be the first order followed by the second order,or vice versa?
Will it be one order or the other? Or will it be something less useful, such as the two
orders interleaved somehow? The answer depends on your operating system but is often
impossible to know.
To avoid problems like this,you can use file locking.You use this feature in PHP by
using the 
flock()
function.This function should be called after a file has been opened
but before any data is read from or written to the file.
The prototype for 
flock()
is
bool flock (resource fp, int operation [, int &wouldblock])
You need to pass it a pointer to an open file and a constant representing the kind of lock
you require.It returns true if the lock was successfully acquired and false if it was not.
The optional third parameter will contain the value true if acquiring the lock would
cause the current process to block (that is, have to wait).
The possible values for 
operation
are shown in Table 2.2.The possible values
changed at PHP 4.0.1, so both sets of values are shown in the table.
Table 2.2 flock() Operation Values
Value of Operation
Meaning
LOCK_SH
(formerly 
1
)
Reading lock.The file can be shared with other readers.
LOCK_EX
(formerly 
2
)
Writing lock.This operation is exclusive; the file cannot be shared.
LOCK_UN
(formerly 
3
)
The existing lock is released.
LOCK_NB
(formerly 
4
)
Blocking is prevented while you are trying to acquire a lock.
If you are going to use 
flock()
,you need to add it to all the scripts that use the file;
otherwise,it is worthless.
Note that 
flock()
does not work with NFS or other networked file systems.It also
does not work with older file systems that do not support locking,such as FAT. On
some operating systems,it is implemented at the process level and does not work cor-
rectly if you are using a multithreaded server API.
To use it with the order example, you can alter 
processorder.php
as follows:
$fp = fopen(“$DOCUMENT_ROOT/../orders/orders.txt”, ‘ab’);
flock($fp, LOCK_EX); // lock the file for writing
fwrite($fp, $outputstring);
flock($fp, LOCK_UN);  // release write lock
fclose($fp);
Documents you may be interested
Documents you may be interested