open source pdf to image converter c# : Adding images to pdf forms Library SDK component .net asp.net html mvc 5224-part546

function pc_encode($data) { 
$data = serialize($data); 
$hash = md5($GLOBALS['secret'] . $data); 
return array($data, $hash); 
In function 
pc_encode( )
, the data is serialized into a string, a validation hash is computed, 
and those variables are returned.  
The 
pc_decode( )
function shown in Example 9-3
undoes the work of its counterpart.  
Example 9-3. pc_decode( )  
function pc_decode($data, $hash) { 
if (!empty($data) && !empty($hash)) { 
if (md5($GLOBALS['secret'] . $data) == $hash) { 
return unserialize($data); 
} else { 
error_log("Validation Error: Data has been modified"); 
return false; 
return false; 
The 
pc_decode( )
function recreates the hash of the secret word and compares it to the 
hash value from the form. If they're equal, 
$data
is valid, so it's unserialized. If it flunks the 
test, the function writes a message to the error log and returns 
false
.  
These functions go together like this: 
<?php 
$secret = 'Foo25bAr52baZ'; 
// Load in and validate old data 
if (! $data = pc_decode($_GET['data'], $_GET['hash'])) { 
// crack attempt 
// Process form (new form data is in $_GET) 
// Update $data 
$data['username'] = $_GET['username']; 
$data['stage']++; 
unset($data['password']); 
// Encode results 
list ($data, $hash) = pc_encode($data); 
// Store data and hash inside the form 
?> 
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get"> 
... 
<input type="hidden" name="data"  
Adding images to pdf forms - 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; convert pdf to editable form
Adding images to pdf forms - 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
adding a signature to a pdf form; create a form in pdf
value="<?php echo htmlentities($data); ?>"> 
<input type="hidden" name="hash"  
value="<?php echo htmlentities($hash); ?>"> 
</form> 
At the top of the script, we pass 
pc_decode( )
the variables from the form for decoding. 
Once the information is loaded into 
$data
, form processing can proceed by checking in 
$_GET
for new variables and in 
$data
for old ones. Once that's complete, update 
$data
to hold the 
new values and then encode it, calculating a new hash in the process. Finally, print out the 
new form and include 
$data
and 
$hash
as hidden variables.  
9.4.4 See Also 
Recipe 8.6
and Recipe 8.7
for information on using the session module; Recipe 9.9
for details 
on using 
htmlentities( )
to escape control characters in HTML output; Recipe 14.4
for 
information on verifying data with hashes; documentation on session tracking at 
http://www.php.net/session
and in Recipe 8.5
; documentation on 
serialize( )
at 
http://www.php.net/serialize
and 
unserialize( )
at http://www.php.net/unserialize
Recipe 9.5 Redisplaying Forms with Preserved Information and Error Messages 
9.5.1 Problem 
When there's a problem with data entered in a form, you want to print out error messages 
alongside the problem fields, instead of a generic error message at the top of the form. You 
also want to preserve the values the user typed into the form the first time.  
9.5.2 Solution 
Use an array, 
$errors
, and store your messages in the array indexed by the name of the 
field.  
if (! pc_validate_zipcode($_REQUEST['zipcode'])) { 
$errors['zipcode'] = "This is is a bad ZIP Code. ZIP Codes must " 
. "have 5 numbers and no letters."; 
When you redisplay the form, you can display each error by its field and include the original 
value in the field:  
echo $errors['zipcode']; 
$value = isset($_REQUEST['zipcode']) ? 
htmlentities($_REQUEST['zipcode']) : ''; 
echo "<input type=\"text\" name=\"zipcode\" value=\"$value\">"; 
9.5.3 Discussion 
If your users encounter errors when filling out a long form, you can increase the overall 
usability of your form if you highlight exactly where the errors need to be fixed.  
C# PDF Page Insert Library: insert pages into PDF file in C#.net
NET PDF document page inserting & adding component from PDF page(s) to current target PDF document in server-side application and Windows Forms project using a
add form fields to pdf without acrobat; can save pdf form data
VB.NET PDF Library SDK to view, edit, convert, process PDF file
Feel free to define text or images on PDF document and extract accordingly. Capable of adding PDF file navigation features to your VB.NET program.
changing font size in a pdf form; pdf form creator
Consolidating all errors in a single array has many advantages. First, you can easily check if 
your validation process has located any items that need correction; just use 
count($errors)
. This method is easier than trying to keep track of this fact in a separate 
variable, especially if the flow is complex or spread out over multiple functions. Example 9-4
shows the 
pc_validate_form( )
validation function, which uses an 
$errors
array.  
Example 9-4. pc_validate_form( )  
function pc_validate_form( ) { 
if (! pc_validate_zipcode($_POST['zipcode'])) { 
$errors['zipcode'] = "ZIP Codes are 5 numbers"; 
if (! pc_validate_email($_POST['email'])) { 
$errors['email'] = "Email addresses look like user@example.com"; 
return $errors; 
This is clean code because all errors are stored in one variable. You can easily pass around the 
variable if you don't want it to live in the global scope.  
Using the variable name as the key preserves the links between the field that caused the error 
and the actual error message itself. These links also make it easy to loop through items when 
displaying errors.  
You can automate the repetitive task of printing the form; the 
pc_print_form()
function in 
Example 9-5
shows how.  
Example 9-5. pc_print_form( )  
function pc_print_form($errors) { 
$fields = array('name'   => 'Name', 
'rank'   => 'Rank',  
'serial' => 'Serial'); 
if (count($errors)) {  
echo 'Please correct the errors in the form below.'; 
echo '<table>'; 
// print out the errors and form variables 
foreach ($fields as $field => $field_name) { 
// open row 
echo '<tr><td>'; 
// print error 
if (!empty($errors[$field])) { 
echo $errors[$field]; 
} else { 
echo '&nbsp;'; // to prevent odd looking tables 
VB.NET Image: Adding Line Annotation to Images with VB.NET Doc
full sample codes for printing line annotation on images. Basic .NET sample codes for adding a line System.Text Imports System.Windows.Forms Imports RasterEdge
adding a text field to a pdf; adding text to pdf form
VB.NET PDF Page Insert Library: insert pages into PDF file in vb.
Create new page to PDF document in both ASP.NET web server-side application and .NET Windows Forms. Support adding PDF page number.
adding text fields to a pdf; best way to create pdf forms
echo "</td><td>"; 
// print name and input 
$value = isset($_REQUEST[$field]) ?  
htmlentities($_REQUEST[$field]) : ''; 
echo "$field_name: "; 
echo "<input type=\"text\" name=\"$field\" value=\"$value\">"; 
echo '</td></tr>'; 
echo '</table>'; 
The complex part of 
pc_print_form( )
comes from the 
$fields
array. The key is the 
variable name; the value is the pretty display name. By defining them at the top of the 
function, you can create a loop and use 
foreach
to iterate through the values; otherwise, you 
need three separate lines of identical code. This integrates with the variable name as a key in 
$errors
, because you can find the error message inside the loop just by checking 
$errors[$field]
 
If you want to extend this example beyond 
input
fields of type 
text
, modify 
$fields
to 
include more meta-information about your form fields:  
$fields = array('name' => array('name' => 'Name', 'type' => 'text'), 
'rank' => array('name' => 'Rank', 'type' => 'password'), 
'serial' => array('name' => 'Serial', 'type' => 'hidden') 
); 
9.5.4 See Also 
Recipe 9.3
for simple form validation. 
Recipe 9.6 Guarding Against Multiple Submission of the Same Form 
9.6.1 Problem 
You want to prevent people from submitting the same form multiple times.  
9.6.2 Solution 
Generate a unique identifier and store the token as a hidden field in the form. Before 
processing the form, check to see if that token has already been submitted. If it hasn't, you 
can proceed; if it has, you should generate an error.  
When creating the form, use 
uniqid( )
to get a unique identifier:  
<?php 
$unique_id = uniqid(microtime(),1); 
C# Create PDF Library SDK to convert PDF from other file formats
What's more, you can also protect created PDF file by adding digital signature (watermark) on PDF using C# code. Create PDF from Jpeg, png, images.
add editable fields to pdf; add an image to a pdf form
VB.NET PDF: VB Code to Create PDF Windows Viewer Using DocImage
PDF page in many ways, like adding rectangle, line view, annotate, process, save and scan images (supporting JPEG and BMP) and document files (TIFF, PDF and Word
pdf editable fields; add form fields to pdf online
... 
?> 
<input type="hidden" name="unique_id" value="<?php echo $unique_id; ?>"> 
</form> 
Then, when processing, look for this ID: 
$unique_id  = $dbh->quote($_GET['unique_id']); 
$sth = $dbh->query("SELECT * FROM database WHERE unique_id = $unique_id"); 
if ($sth->numRows( )) { 
// already submitted, throw an error 
} else { 
// act upon the data 
9.6.3 Discussion 
For a variety of reasons, users often resubmit a form. Usually it's a slip-of-the-mouse: double-
clicking the Submit button. They may hit their web browser's Back button to edit or recheck 
information, but then they re-hit Submit instead of Forward. It can be intentional: they're 
trying to stuff the ballot box for an online survey or sweepstakes. Our Solution prevents the 
nonmalicious attack and can slow down the malicious user. It won't, however, eliminate all 
fraudulent use: more complicated work is required for that.  
The Solution does prevent your database from being cluttered with too many copies of the 
same record. By generating a token that's placed in the form, you can uniquely identify that 
specific instance of the form, even when cookies is disabled. When you then save the form's 
data, you store the token alongside it. That allows you to easily check if you've already seen 
this form and record the database it belongs to.  
Start by adding an extra column to your database table — 
unique_id
— to hold the 
identifier. When you insert data for a record, add the ID also. For example:  
$username  = $dbh->quote($_GET['username']); 
$unique_id = $dbh->quote($_GET['unique_id']); 
$sth = $dbh->query("INSERT INTO members ( username,  unique_id) 
VALUES ($username, $unique_id)"); 
By associating the exact row in the database with the form, you can more easily handle a 
resubmission. There's no correct answer here; it depends on your situation. In some cases, 
you'll want to ignore the second posting all together. In others, you'll want to check if the 
record has changed, and, if so, present the user with a dialog box asking if they want to 
update the record with the new information or keep the old data. Finally, to reflect the second 
form submission, you could update the record silently, and the user never learns of a problem.  
All these possibilities should be considered given the specifics of the interaction. Our opinion is 
there's no reason to allow the deficits of HTTP to dictate the user experience. So, while the 
third choice, silently updating the record, isn't what normally happens, in many ways this is 
C# Image: Document Image Ellipse Annotation Creating and Adding
on color, bitional and black & white images; annotation shape to image - support adding rubber stamp powerful & profession imaging controls, PDF document, tiff
chrome save pdf form; add submit button to pdf form
C# PDF: PDF Document Viewer & Reader SDK for Windows Forms
After adding WinViewer DLL into Visual Studio Toolbox, you link to see more C# PDF imaging project converting, compressing and stroing images, documents and
change font pdf fillable form; create a pdf form in word
the most natural option. Applications we've developed with this method are more user 
friendly; the other two methods confuse or frustrate most users.  
It's tempting to avoid generating a random token and instead use a number one greater then 
the number of records already in the database. The token and the primary key will thus be the 
same, and you don't need to use an extra column. There are (at least) two problems with this 
method. First, it creates a race condition. What happens when a second person starts the form 
before the first person has completed it? The second form will then have the same token as 
the first, and conflicts will occur. This can be worked around by creating a new blank record in 
the database when the form is requested, so the second person will get a number one higher 
than the first. However, this can lead to empty rows in the database if users opt not to 
complete the form.  
The other reason not do this is because it makes it trivial to edit another record in the 
database by manually adjusting the ID to a different number. Depending on your security 
settings, a fake GET or POST submission allows the data to be altered without difficulty. A long 
random token, however, can't be guessed merely by moving to a different integer.  
9.6.4 See Also 
Recipe 14.4
for more details on verifying data with hashes; documentation on 
uniqid( )
at 
http://www.php.net/uniqid
Recipe 9.7 Processing Uploaded Files 
9.7.1 Problem 
You want to process a file uploaded by a user.  
9.7.2 Solution 
Use the 
$_FILES
array:  
// from <input name="event" type="file"> 
if (is_uploaded_file($_FILES['event']['tmp_name'])) { 
readfile($_FILES['event']['tmp_name']); // print file on screen 
9.7.3 Discussion 
Starting in PHP 4.1, all uploaded files appear in the 
$_FILES
superglobal array. For each file, 
there are four pieces of information:  
name
The name assigned to the form input element 
type
VB.NET Image: How to Draw Annotation on Doc Images with Image SDK
other image annotating tutorials besides adding annotation using PDF document, image to pdf files and converting, compressing and stroing images, documents and
pdf create fillable form; allow saving of pdf form
VB.NET TIFF: Read, Edit & Process TIFF with VB.NET Image Document
at the page level, like TIFF page adding & deleting controls, PDF document, image to pdf files and converting, compressing and stroing images, documents and more
chrome save pdf with fields; pdf form maker
The MIME type of the file 
size
The size of the file in bytes 
tmp_name
The location in which the file is temporarily stored on the server.  
If you're using an earlier version of PHP, you need to use 
$HTTP_POST_FILES
instead.  
After you've selected a file from that array, use 
is_uploaded_file( )
to confirm that the 
file you're about to process is a legitimate file resulting from a user upload, then process it as 
you would other files on the system. Always do this. If you blindly trust the filename supplied 
by the user, someone can alter the request and add names such as /etc/passwd to the list for 
processing.  
You can also move the file to a permanent location; use 
move_uploaded_file( )
to safely 
transfer the file:  
// move the file: move_uploaded_file() also does a check of the file's 
// legitimacy, so there's no need to also call is_uploaded_file() 
move_uploaded_file($_FILES['event']['tmp_name'], '/path/to/file.txt'); 
Note that the value stored in 
tmp_name
is the complete path to the file, not just the base 
name. Use 
basename( )
to chop off the leading directories if needed.  
Be sure to check that PHP has permission to read and write to both the directory in which 
temporary files are saved (see the 
upload_tmp_dir
configuration directive to check where 
this is) and the location in which you're trying to copy the file. This can often be user 
nobody
or 
apache
, instead of your personal username. Because of this, if you're running under 
safe_mode
, copying a file to a new location will probably not allow you to access it again.  
Processing files can often be a subtle task because not all browsers submit the same 
information. It's important to do it correctly, however, or you open yourself up to a possible 
security hole. You are, after all, allowing strangers to upload any file they choose to your 
machine; malicious people may see this as an opportunity to crack into or crash the computer.  
As a result, PHP has a number of features that allow you to place restrictions on uploaded 
files, including the ability to completely turn off file uploads all together. So, if you're 
experiencing difficulty processing uploaded files, check that your file isn't being rejected 
because it seems to pose a security risk.  
To do such a check first, make sure 
file_uploads
is set to 
On
inside your configuration file. 
Next, make sure your file size isn't larger than 
upload_max_filesize
; this defaults to 2 MB, 
which stops someone trying to crash the machine by filling up the hard drive with a giant file. 
Additionally, there's a 
post_max_size
directive, which controls the maximum size of all the 
POST data allowed in a single request; its initial setting is 8 MB.  
From the perspective of browser differences and user error, if you can't get 
$_FILES
to 
populate with information, make sure you add 
enctype="multipart/form-data"
to the 
form's opening tag; PHP needs this to trigger processing. If you can't do so, you need to 
manually parse 
$HTTP_RAW_POST_DATA
. (See RFCs 1521 and 1522 for the MIME specification 
at http://www.faqs.org/rfcs/rfc1521.html
and http://www.faqs.org/rfcs/rfc1522.html
.)  
Also, if no file is selected for uploading, versions of PHP prior to 4.1 set 
tmp_name
to 
none
newer versions set it to the empty string. PHP 4.2.1 allows files of length 0. To be sure a file 
was uploaded and isn't empty (although blank files may be what you want, depending on the 
circumstances), you need to make sure 
tmp_name
is set and 
size
is greater than 0. Last, not 
all browsers necessarily send the same MIME type for a file; what they send depends on their 
knowledge of different file types.  
9.7.4 See Also 
Documentation on handling file uploads at http://www.php.net/features.file-upload
and on 
basename()
at http://www.php.net/basename
Recipe 9.8 Securing PHP's Form Processing 
9.8.1 Problem 
You want to securely process form input variables and not allow someone to maliciously alter 
variables in your code.  
9.8.2 Solution 
Disable the 
register_globals
configuration directive and access variables only from the 
$_REQUEST
array. To be even more secure, use 
$_GET
$_POST
, and 
$_COOKIE
to make 
sure you know exactly where your variables are coming from.  
To do this, make sure this line appears in your php.ini file:  
register_globals = Off 
As of PHP 4.2, this is the default configuration. 
9.8.3 Discussion 
When 
register_globals
is set 
on
, external variables, including those from forms and 
cookies, are imported directly into the global namespace. This is a great convenience, but it 
can also open up some security holes if you're not very diligent about checking your variables 
and where they're defined. Why? Because there may be a variable you use internally that isn't 
supposed to be accessible from the outside but has its value rewritten without your 
knowledge.  
Here is a simple example. You have a page in which a user enters a username and password. 
If they are validated, you return her user identification number and use that numerical 
identifier to look up and print out her personal information:  
// assume magic_quotes_gpc is set to Off 
$username = $dbh->quote($_GET['username']); 
$password = $dbh->quote($_GET['password']); 
$sth = $dbh->query("SELECT id FROM users WHERE username = $username AND 
password = $password"); 
if (1 == $sth->numRows( )) {  
$row = $sth->fetchRow(DB_FETCHMODE_OBJECT); 
$id = $row->id; 
} else { 
"Print bad username and password"; 
if (!empty($id)) { 
$sth = $dbh->query("SELECT * FROM profile WHERE id = $id"); 
Normally, 
$id
is set only by your program and is a result of a verified database lookup. 
However, if someone alters the GET string, and passes in a value for 
$id
, with 
register_globals
enabled, even after a bad username and password lookup, your script 
still executes the second database query and returns results. Without 
register_globals
$id
remains unset because only 
$_REQUEST['id']
(and 
$_GET['id']
) are set.  
Of course, there are other ways to solve this problem, even when using 
register_globals
You can restructure your code not to allow such a loophole.  
$sth = $dbh->query("SELECT id FROM users WHERE username = $username AND 
password = $password"); 
if (1 == $sth->numRows( )) {  
$row = $sth->fetchRow(DB_FETCHMODE_OBJECT); 
$id = $row->id; 
if (!empty($id)) { 
$sth = $dbh->query("SELECT * FROM profile WHERE id = $id"); 
} else { 
"Print bad username and password"; 
Now you use 
$id
only when it's been explicitly set from a database call. Sometimes, however, 
it is difficult to do this because of how your program is laid out. Another solution is to 
manually 
unset( )
or initialize all variables at the top of your script:  
unset($id); 
This removes the bad 
$id
value before it gets a chance to affect your code. However, because 
PHP doesn't require variable initialization, it's possible to forget to do this in one place; a bug 
can then slip in without a warning from PHP.  
9.8.4 See Also 
Documentation on 
register_globals
at http://www.php.net/security.registerglobals.php
Recipe 9.9 Escaping Control Characters from User Data 
9.9.1 Problem 
You want to securely display user-entered data on an HTML page.  
9.9.2 Solution 
For HTML you wish to display as plain text, with embedded links and other tags, use 
htmlentities( )
 
echo htmlentities('<p>O'Reilly & Associates</p>'); 
&lt;p&gt;O'Reilly & Associates&lt;/p&gt; 
9.9.3 Discussion 
PHP has a pair of functions to escape characters in HTML. The most basic is 
htmlspecialchars( )
, which escapes four characters: 
<
>
"
and 
&
. Depending on optional 
parameters, it can also translate ' instead of or in addition to 
"
. For more complex encoding, 
use 
htmlentities( )
; it expands on 
htmlspecialchars( )
to encode any character that 
has an HTML entity.  
$html = "<a href='fletch.html'>Stew's favorite movie.</a>\n"; 
print htmlspecialchars($html);                // double-quotes 
print htmlspecialchars($html, ENT_QUOTES);    // single- and double-quotes 
print htmlspecialchars($html, ENT_NOQUOTES);  // neither 
&lt;a href=&quot;fletch.html&quot;&gt;Stew's favorite movie.&lt;/a&gt; 
&lt;a href=&quot;fletch.html&quot;&gt;Stew&#039;s favorite movie.&lt;/a&gt; 
&lt;a href="fletch.html"&gt;Stew's favorite movie.&lt;/a&gt; 
Both functions allow you to pass in a character encoding table that defines what characters 
map to what entities. To retrieve either table used by the previous functions, use 
get_html_translation_table( )
and pass in 
HTML_ENTITIES
or 
HTML_SPECIALCHARS
This returns an array that maps characters to entities; you can use it as the basis for your own 
table.  
$copyright = "Copyright © 2003 O'Reilly & Associates\n"; 
$table = get_html_translation_table(); // get <, >, ", and & 
$table[©] = '&copy;â??                   // add © 
Documents you may be interested
Documents you may be interested