c# convert pdf to image itextsharp : Add image field to pdf form Library control component .net azure winforms mvc 05-welling-php-mysql-web83-part135

797
Solution Overview
This document sets up a font table with two fonts:Arial,to be referred to as 
f0
,and
Times New Roman,to be referred to as 
f1
.It then writes 
Heading
using 
f0
(Arial) in
size 28 (14 point).The control 
\par
indicates a paragraph break.It then writes 
This is
an rtf document
using 
f1
(Times New Roman) at size 20 (10 point).
You could generate a document like this manually,but no labor-saving functions are
built into PHP to make the hard parts,such as incorporating graphics,easier.Fortunately,
in many documents,the structure,style,and much of the text are static,and only small
parts change from person to person.A more efficient way to generate a document is to
use a template.
You can build a complex document,such as the one shown in Figure 32.4,easily
using a word processor.
Figure 32.4 Using a word processor, you can create a complex, attractive
template easily.
The template includes placeholders such as 
<<NAME>>
to mark the places where dynamic
data will be inserted. It is not important what these placeholders look like.You use a
meaningful description between two sets of angled braces.It is important that you
choose placeholders that are highly unlikely to accidentally appear in the rest of the doc-
ument.It will help you to lay out your template if the placeholders are roughly the same
length as the data they will be replaced with.
Add image field 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
adding image to pdf form; adding text to a pdf form
Add image field 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; add fields to pdf form
798
Chapter 32 Generating Personalized Documents in Portable Document Format (PDF)
The placeholders in this document are 
<<NAME>>
,
<<Name>>
,
<<score>>
,and
<<mm/dd/yyyy>>
.Note that you use both NAME and Name because you will use a
case-sensitive method to replace them.
Now that you have a template,you need a script to personalize it.This script,called
rtf.php
,is shown in Listing 32.3.
Listing 32.3 rtf.php—Script to Produce a Personalized RTF Certificate
<?php
//create short variable names
$name = $_POST[‘name’];
$score = $_POST[‘score’];
// check we have the parameters we need
if( !$name || !$score )
{
echo ‘<h1>Error:</h1><p>This page was called incorrectly</p>’;
}
else
{
//generate the headers to help a browser choose the correct application
header( ‘Content-Type: application/msword’ );
header( ‘Content-Disposition: inline, filename=cert.rtf’);
$date = date( ‘F d, Y’ );
// open our template file
$filename = ‘PHPCertification.rtf’;
$output = file_get_contents($filename);
// replace the place holders in the template with our data
$output = str_replace( ‘<<NAME>>’, strtoupper( $name ), $output );
$output = str_replace( ‘<<Name>>’, $name, $output );
$output = str_replace( ‘<<score>>’, $score, $output );
$output = str_replace( ‘<<mm/dd/yyyy>>’, $date, $output );
// send the generated document to the browser
echo $output;
}
?>
This script performs some basic error checking to make sure that all the user details have
been passed in and then moves to the business of creating the certificate.
The output of this script will be an RTF file rather than an HTML file,so you need
to alert the user’s browser to this fact.This is important so that the browser can attempt
to open the file with the correct application or give a Save As… type dialog box if it
doesn’t recognize the 
.rtf
extension.
C# PDF insert image Library: insert images into PDF in C#.net, ASP
Insert images into PDF form field. Access to freeware download and online C#.NET class source code. How to insert and add image, picture, digital photo, scanned
add forms to pdf; adding text field to pdf
VB.NET PDF insert image library: insert images into PDF in vb.net
Add images to any selected PDF page in VB.NET. attributes adjust functionalities, such as resize image by zooming Insert images into PDF form field in VB.NET.
adding a text field to a pdf; allow saving of pdf form
799
Solution Overview
You specify the MIME type of the file you are outputting by using PHP’s 
header()
function to send the appropriate HTTP header as follows:
header(‘Content-Type: application/msword’);
header(‘Content-Disposition: inline, filename=cert.rtf’);
The first header tells the browser that you are sending a Microsoft Word file (not strictly
true, but the most likely helper application for opening the RTF file).
The second header tells the browser to automatically display the contents of the file
and that its suggested filename is 
cert.rtf
.This is the default filename the user will see
if he tries to save the file from within his browser.
After the headers are sent, you open and read the template RTF file into the 
$output
variable and use the
str_replace()
function to replace the placeholders with the actual
data that you want to appear in the file.The line
$output = str_replace( ‘<<Name>>’, $name, $output );
replaces any occurrences of the placeholder 
<<Name>>
with the contents of the variable
$name
.
Having made your substitutions,it’s just a matter of echoing the output to the browser.
A sample result from the 
rtf.php
script is shown in Figure 32.5.
Figure 32.5 The 
rtf.php
script generates a certificate from an RTF template.
VB.NET PDF Form Data Read library: extract form data from PDF in
a full-featured PDF software, it should have functions for processing text, image as well DLLs: Read and Extract Field Data in VB.NET. Add necessary references:
add text fields to pdf; change tab order in pdf form
C# PDF Form Data Read Library: extract form data from PDF in C#.
PDF software, it should have functions for processing text, image as well as C#.NET Project DLLs: Read and Extract Field Data in C#. Add necessary references:
pdf editable fields; create a pdf form to fill out
800
Chapter 32 Generating Personalized Documents in Portable Document Format (PDF)
This approach works very well. The calls to 
str_replace()
run very quickly, even
though the template and therefore the contents of 
$output
are fairly long.The main
problem from the point of view of this application is that the user will load the certifi-
cate in his word processor to print it.This is probably an invitation for people to modify
the output. RTF does not allow you to make a read-only document.
Generating a PDF Certificate from a Template
The process of generating a PDF certificate from a template is similar.The main differ-
ence is that when you create the PDF file,some of the placeholders might be interspersed
with formatting codes,depending on the version of Acrobat you are using.For example,if
you look in the certificate template file you have created (using a text editor),you can see
that the placeholders now look like this:
<<N)-13(AME)-10(>)-6(>
<<Na)-9(m)0(e)-18(>>
<)-11(<)1(sc)-17(or)-6(e)-6(>)-11(>
<)-11(<)1(m)-12(m)0(/d)-6(d)-19(/)1(yy)-13(yy)-13(>>
If you look through the file, you will see that,unlike RTF,this is not a format that
humans can easily read through.
Note
The format of the PDF template file may vary depending on the version of Acrobat or other PDF generation
tool you are using. The code supplied in this example may not work as written when you generate your own
templates. Check your template and alter the code to suit. If you still have problems, use the PDFlib example
given later in the chapter.
There are a few different ways you can deal with this situation.You could go through
each of these placeholders and delete the formatting codes.Deleting them actually makes
little difference to how the document looks in the end because the codes embedded in the
previous template indicate how much space should be left between the letters of the place-
holders that you are going to replace anyhow.However,if you take this approach,you must
go through and hand-edit the PDF file and repeat this each time you change or update the
file.Doing all this work is not a big deal when you’re dealing with only four placeholders,
but it becomes a nightmare when,for example,you have multiple documents with many
placeholders,and you decide to change the letterhead on all the documents.
You can avoid this problem by using a different technique.You can use Adobe
Acrobat to create a PDF form—similar to an HTML form with blank,named fields.You
can then use a PHP script to create what is called an FDF (Forms Data Format) file,
which is basically a set of data to be merged with a template.You can create FDFs using
PHP’s FDF function library:specifically,the 
fdf_create()
function to create a file,the
fdf_set_value()
function to set the field values, and the 
fdf_set_file()
function to
set the associated template form file.You can then pass this file back to the browser with
the appropriate MIME type—in this case,
vnd.fdf
—and the browser’s Acrobat Reader
plug-in should substitute the data into the form.
VB.NET PDF Form Data fill-in library: auto fill-in PDF form data
PDF Page. Image: Copy, Paste, Cut Image in Page. Fill-in Field Data. Field: Insert, Delete, Update Field. Images. Redact Pages. Annotation & Drawing. Add Sticky Note
add text field pdf; add form fields to pdf online
C# PDF Form Data fill-in Library: auto fill-in PDF form data in C#
Following C# sample code can help you have a quick evaluation of it. C#.NET Demo Code: Auto Fill-in Field Data to PDF in C#.NET. Add necessary references:
pdf form change font size; create a fillable pdf form from a pdf
801
Solution Overview
This way of doing things is neat, but it has two limitations. First,it assumes that you
own a copy of Acrobat Professional (the full version,not the free reader,or even the
Standard edition).Second,it is difficult to substitute in text that is inline rather than text
that looks like a form field.This might or might not be a problem,depending on what
you are trying to do.We largely use PDF generation for generating letters where many
things must be substituted inline.FDFs do not work well for this purpose.If you are
auto-filling,for example,a tax form online,this will not be a problem.
You can read more about the FDF format at Adobe’s site:
http://partners.adobe.com/asn/developer/acrosdk/forms.html
You should also look at the FDF documentation in the PHP manual if you decide to
use this approach:
http://www.php.net/manual/en/ref.fdf.php
We turn now to the PDF solution to the previous problem.
You can still find and replace the placeholders in the PDF file if you recognize that
the additional format codes consist solely of hyphens,digits, and parentheses and can
therefore be matched via a regular expression.We wrote a function,
pdf_replace()
,to
automatically generate a matching regular expression for a placeholder and replace that
placeholder with the appropriate text.
Note that with some versions of Acrobat,the placeholders are in plain text, and you
can replace them with 
str_replace()
,as you did before.
Other than this addition, the code for generating the certificate via a PDF template is
similar to the RTF version.This script is shown in Listing 32.4.
Listing 32.4 pdf.php—Script to Produce Personalized PDF Certificate via a Template
<?php
set_time_limit( 180 ); // this script can be slow
//create short variable names
$name = $_POST[‘name’];
$score = $_POST[‘score’];
function pdf_replace( $pattern, $replacement, $string )
{
$len = strlen( $pattern ) ;
$regex = ‘’;
for ( $i = 0; $i<$len; $i++ )
{
$regex .= $pattern[$i];
if ($i<$len-1)
$regex .= ‘(\)-?[0-9]+\()?’;
}
C# PDF Image Extract Library: Select, copy, paste PDF images in C#
Scan image to PDF, tiff and various image formats. Get image information, such as its location, zonal information Able to edit, add, delete, move, and output PDF
acrobat create pdf form; create a pdf form in word
VB.NET PDF Image Extract Library: Select, copy, paste PDF images
multiple types of image from PDF file in VB.NET, like XObject Image, XObject Form, Inline Image DLLs for PDF Image Extraction in VB.NET. Add necessary references
create a fillable pdf form online; best pdf form creator
802
Chapter 32 Generating Personalized Documents in Portable Document Format (PDF)
return ereg_replace ( $regex, $replacement, $string );
}
if(!$name||!$score)
{
echo ‘<h1>Error:</h1><p>This page was called incorrectly</p>’;
}
else
{
//generate the headers to help a browser choose the correct application
header( ‘Content-Disposition:  filename=cert.pdf’);
header( ‘Content-Type: application/pdf’ );
$date = date( ‘F d, Y’ );
// open our template file
$filename = ‘PHPCertification.pdf’;
$output = file_get_contents($filename);
// replace the place holders in the template with our data
$output = pdf_replace( ‘<<NAME>>’, strtoupper( $name ), $output );
$output = pdf_replace( ‘<<Name>>’, $name, $output );
$output = pdf_replace( ‘<<score>>’, $score, $output );
$output = pdf_replace( ‘<<mm/dd/yyyy>>’, $date, $output );
// send the generated document to the browser
echo $output;
}
?>
This script produces a customized version of the PDF document.The document,shown
in Figure 32.6,will print reliably on numerous systems, and is harder for the recipient to
modify or edit.You can see that the PDF document in Figure 32.6 looks almost exactly
like the RTF document in Figure 32.5.
One problem with this approach is that the code runs quite slowly because of the
regular expression matching required.Regular expressions run much more slowly than
str_replace()
that you could use for the RTF version.
If you are going to match a large number of placeholders or try to generate many of
these documents on the same server,you might want to look at other approaches.This
issue would be less of a problem for a simpler template.Much of the bulk in this file is
data representing the images.
Listing 32.4 Continued 
803
Solution Overview
Figure 32.6 The 
pdf.php
script generates a certificate from a 
PDF template.
Generating a PDF Document Using PDFlib
PDFlib is intended for generating dynamic PDF documents via the Web.It is not strictly
part of PHP,but rather a separate library,with a large number of functions intended to
be called from a wide variety of programming languages. Language bindings are available
for C,C++, Java, Perl,Python,Tcl,and ActiveX/COM.
Since PHP 4.0.5,PDFlib has been officially supported by PDFlib GmbH.This means
that you can refer to either the PHP documentation at
http://www.php.net/en/manual/ref.pdf.php
or download the official documentation from pdflib.com.
A Hello World Script for PDFlib
After you have PHP and have installed it with PDFlib enabled, you can test it with a
simple program such as the Hello World example in Listing 32.5.
804
Chapter 32 Generating Personalized Documents in Portable Document Format (PDF)
Listing 32.5 testpdf.php—Classic Hello World Example Using PDFlib via PHP
<?php
// create a pdf document in memory
$pdf = pdf_new();
pdf_open_file($pdf, ‘’);
pdf_set_info($pdf, “Creator”, “pdftest.php”);
pdf_set_info($pdf, “Author”, “Luke Welling and Laura Thomson”);
pdf_set_info($pdf, “Title”, “Hello World (PHP)”);
// US letter is 11” x 8.5” and there are 72 points per inch
pdf_begin_page($pdf, 8.5*72, 11*72);
// add a bookmark
pdf_add_bookmark($pdf, ‘Page 1’, 0, 0);
$font = pdf_findfont($pdf, ‘Times-Roman’, ‘host’, 0);
pdf_setfont($pdf, $font, 24);
pdf_set_text_pos($pdf, 50, 700);
// write text
pdf_show($pdf,’Hello,world!’);
pdf_continue_text($pdf,’(says PHP)’);
// end the document
pdf_end_page($pdf);
pdf_close($pdf);
$data = pdf_get_buffer($pdf);
// generate the headers to help a browser choose the correct application
header(‘Content-Type: application/pdf’) ;
header(‘Content-Disposition: inline; filename=test.pdf’);
header(‘Content-Length: ‘ . strlen($data));
// output PDF
echo $data;
?>
The most likely error you will see if this script fails is the following:
Fatal error: Call to undefined function pdf_new()
in c:\program files\apache group\Apache\htdocs\phpmysql3e\chapter32\testpdf.php
on line 4
805
Solution Overview
This message means that you do not have the PDFlib extension compiled or enabled
into PHP.
The installation is fairly straightforward,but some details change depending on the
exact versions of PHP and PDFlib that you are using.A good place to check for detailed
suggestions is the user-contributed notes on the PDFlib page in the annotated PHP
manual.
When you have this script up and running on your system,it is time to look at how
it works.The lines
$pdf = pdf_new();
pdf_open_file($pdf, ‘’);
initialize a PDF document in memory.
The function 
pdf_set_info()
enables you to tag the document with a subject; title;
creator;author;list of keywords;and one custom,user-defined field.
Here, you set a creator,author,and title. Note that all six info fields are optional:
pdf_set_info($pdf, ‘Creator’, ‘pdftest.php’);
pdf_set_info($pdf, ‘Author’, ‘Luke Welling and Laura Thomson’);
pdf_set_info($pdf, ‘Title’, ‘Hello World (PHP)’);
A PDF document consists of a number of pages.To start a new page,you need to call
pdf_begin_page()
.As well as the identifier returned by 
pdf_open()
,
pdf_begin_page()
requires the dimensions of the page.Each page in a document can
be a different size,but unless you have a good reason not to,you should use a common
paper size.
PDFlib works in points, both for page size,and for locating coordinate locations on
each page.For reference,A4 is approximately 595 by 842 points, and U.S. letter paper 
is 612 by 792 points.This means that the line
pdf_begin_page($pdf, 8.5*72, 11*72);
creates a page in the document, sized for U.S.letter paper.
A PDF document does not need to be just a printable document.Many PDF features
can be included in the document,such as hyperlinks and bookmarks.The function
pdf_add_outline()
adds a bookmark to the document outline.The bookmarks in a
document appear in a separate pane in Acrobat Reader, allowing you to skip straight to
important sections.
The line
pdf_add_bookmark($pdf, ‘Page 1’, 0, 0);
adds a bookmark labeled Page 1, which refers to the current page.
806
Chapter 32 Generating Personalized Documents in Portable Document Format (PDF)
Fonts available on systems vary from operating system to operating system and even
from individual machine to machine.To guarantee consistent results,a set of core fonts
works with every PDF reader.The 14 core fonts are
n
Courier
n
Courier-Bold
n
Courier-Oblique
n
Courier-BoldOblique
n
Helvetica
n
Helvetica-Bold
n
Helvetica-Oblique
n
Helvetica-BoldOblique
n
Times-Roman
n
Times-Bold
n
Times-Italic
n
Times-BoldItalic
n
Symbol
n
ZapfDingbats
Fonts outside this set can be embedded in documents, but this increases the file size and
might not be acceptable under whatever license you own that particular font under.You
can choose a font,its size,and character encoding as follows:
$font = pdf_findfont($pdf, ‘Times-Roman’, ‘host’, 0);
pdf_setfont($pdf, $font, 24);
Font sizes are specified in points.In this case, we chose host character encoding.The
allowable values are 
winansi
,
builtin
,
macroman
,
ebcdic
,or 
host
.The meanings of the
different values are as follows:
n
winansi
—Uses ISO 8859-1 plus special characters added by Microsoft,such as a
Euro symbol.
n
builtin
—Uses the encoding built into the font.Normally used with non-Latin
fonts and symbols.
n
macroman
—Uses Mac Roman encoding.The default Macintosh character set.
n
ebcdic
—Uses EBCDIC as used on IBM AS/400 systems.
n
host
—Automatically selects 
macroman
on a Macintosh,
ebcdic
on an EBCDIC-
based system, and 
winansi
on all other systems.
If you do not need to include special characters,the choice of encoding is not important.
Documents you may be interested
Documents you may be interested