I am new to iTextSharp API
to create PDF
. I want to Create
the a PDF
similar shown in following image:
I have added Table(
PdfPTable
) to Display the Left part (Text other than the Orange Bordered)
protected void CreatePDF()
{
//Create PDF slip
PdfPTable pdfTabdevices = new PdfPTable(2);
DataTable dt = Session["MyList"] as DataTable;
pdfTabdevices = GetDataFromSQLTable(dt);//Get the device lists
Document doc = new Document(iTextSharp.text.PageSize.A4, 20, 20, 42,35);//iTextSharp.text.PageSize.Letter, 10, 10, 42,35
int orderid = Session["OrderID"] != null ? Convert.ToInt32(Session["OrderID"]) : 0;
try
{
string pdfFilePath = Server.MapPath(".") + "/pdfdocs/" + orderid + ".pdf";
//Create Document class object and set its size to letter and give space left, right, Top, Bottom Margin
PdfWriter wri = PdfWriter.GetInstance(doc, new FileStream(pdfFilePath, FileMode.Create));
doc.Open();//Open Document to write
Font font8 = FontFactory.GetFont("ARIAL", 7);
string imageFilePath = Server.MapPath(".") + "/images/Logo.png";
iTextSharp.text.Image jpg = iTextSharp.text.Image.GetInstance(imageFilePath);
//Resize image depend upon your need
jpg.ScaleToFit(100f, 50f);//jpg.ScaleToFit(280f, 260f);
//Give space before image
jpg.SpacingBefore = 30f;
//Give some space after the image
jpg.SpacingAfter = 1f;
jpg.Alignment = Element.ALIGN_LEFT;
doc.Add(jpg);
Phrase titl = new Phrase("\n\nPacking Slip\n");
titl.Font.SetStyle(Font.BOLD);
doc.Add(titl);
Phrase titlDesc = new Phrase("Place this slip inside the box with your device");
// titlDesc.Font.SetStyle(Font.BOLD);
doc.Add(titlDesc);
doc.Add(pdfTabdevices);
string expdate = Convert.ToString(DateTime.Now.Date);
Phrase expir = new Phrase("You have until " + expdate + " to ship your device.");
// titlDesc.Font.SetStyle(Font.BOLD);
doc.Add(expir);
Phrase note = new Phrase("\n\nIf you send your device after the expiration date we cannot honor your initial offer. We will not accept devices that have been reported lost or stolen.");
doc.Add(note);
}
catch (DocumentException docEx)
{
//handle pdf document exception if any
}
catch (IOException ioEx)
{
// handle IO exception
}
catch (Exception ex)
{
// ahndle other exception if occurs
}
finally
{
//Close document and writer
doc.Close();
}
}
protected PdfPTable GetDataFromSQLTable(DataTable dt)
{
PdfPTable table = new PdfPTable(2);
//actual width of table in points
table.TotalWidth = 500f;//216f;
//fix the absolute width of the table
table.LockedWidth = true;
//relative col widths in proportions - 2/3 & 1/3
float[] widths = new float[] { 2f, 1f };
table.SetWidths(widths);
table.HorizontalAlignment = 0;
//leave a gap before and after the table
table.SpacingBefore = 20f;
table.SpacingAfter = 20f;
//PdfPCell cell2 = new PdfPCell(new Phrase("ITEM"));
PdfPCell cell2 = new PdfPCell(new Phrase("ITEM", new Font(Font.HELVETICA, 10f, Font.BOLD, Color.BLACK)));
cell2.Border = Rectangle.BOTTOM_BORDER;
cell2.BorderColor=Color.WHITE;
table.AddCell(cell2);
//PdfPCell cell = new PdfPCell(new Phrase("OFFER"));
PdfPCell cell = new PdfPCell(new Phrase("OFFER", new Font(Font.HELVETICA, 10f, Font.BOLD, Color.BLACK)));
cell2.Border = Rectangle.BOTTOM_BORDER;
cell.BorderColor = Color.WHITE;
//cell.Colspan = 2;
//cell.Border = 0;
//cell.HorizontalAlignment = 1;//0=Left, 1=Centre, 2=Right
table.AddCell(cell);
DataTable dtmain = new DataTable();
dtmain = dt;
double boxTotal = 0.00;
if (dtmain.Rows.Count > 0)
{
for (int i = 0; i < dtmain.Rows.Count; i++)
{
PdfPCell rcol1 =new PdfPCell(new Phrase(dtmain.Rows[i]["DeviceName"].ToString(), new Font(Font.HELVETICA, 10f, Font.NORMAL, Color.BLACK)));
rcol1.BorderColor = Color.WHITE;
table.AddCell(rcol1);
//table.AddCell(dtmain.Rows[i]["DeviceName"].ToString());
PdfPCell rcol2 = new PdfPCell(new Phrase("$" + dtmain.Rows[i]["Price"].ToString(), new Font(Font.HELVETICA, 10f, Font.NORMAL, Color.BLACK)));
rcol2.BorderColor = Color.WHITE;
table.AddCell(rcol2);
//table.AddCell("$" +dtmain.Rows[i]["Price"].ToString());
boxTotal+= Convert.ToDouble(dtmain.Rows[i]["Price"]);
}
}
PdfPCell rcolSecLast1 = new PdfPCell(new Phrase("---------------------------------------------------------------------------------", new Font(Font.HELVETICA, 12f, Font.BOLD, Color.BLACK)));
rcolSecLast1.BorderColor = Color.WHITE;
table.AddCell(rcolSecLast1);
PdfPCell rcolSecLast2 = new PdfPCell(new Phrase("--------------", new Font(Font.HELVETICA, 12f, Font.BOLD, Color.BLACK)));
rcolSecLast2.BorderColor = Color.WHITE;
table.AddCell(rcolSecLast2);
PdfPCell rcolLast = new PdfPCell(new Phrase("Total Offer :", new Font(Font.HELVETICA, 12f, Font.BOLD, Color.BLACK)));
rcolLast.BorderColor = Color.WHITE;
table.AddCell(rcolLast);
//table.AddCell("Total Offer :");
PdfPCell rcolLast1 = new PdfPCell(new Phrase(String.Format("{0:C}", boxTotal).ToString(), new Font(Font.HELVETICA, 12f, Font.BOLD, Color.BLACK)));
rcolLast1.BorderColor = Color.WHITE;
table.AddCell(rcolLast1);
//table.AddCell(String.Format("{0:C}",boxTotal).ToString());
return table;
}
But, i am Not able to Draw the Box with Orange Border and its contents using the 'PdfPTable'
and align to right as shown in fig.. So, is their any other method to input HTML Markup in to the PdfPTable
?
Please give the suggestions to do..!
Note: when user completes the PDF file is created and saved to a folder and not downloaded or view-able to user.
HTML Markup:
<div style='width: 50%; border: 1px solid #000000; padding-bottom: 100px; padding-left: 100px;
padding-right: 100px; text-align: justify; text-justify: inter-word;'>
<br />
<table>
<tr>
<td>
<div id="divLeft">
<p>
<img src='/images/Logo.png' width="200px" height="100px" /></p>
<h2>
Packing slip</h2>
<h3>
Place this slip inside the box with your device.</h3>
<div id="divDeviceList" style='width: 600px; text-align: left;' border="0" cellpadding="3"
cellspacing="1" rules="BOTH" frame="BOX">
<table style="width: 600px;">
<tr>
<td>
<strong> ITEM</strong>
</td>
<td>
<strong> OFFER</strong>
</td>
</tr>
<tr>
<td>
iPhone 5 32GB (AT&T)
</td>
<td>
$205.00
</td>
</tr>
<tr>
<td align="right">
<hr />
<strong><h3>Total Offer: </h3></strong>
</td>
<td>
<hr />
<strong> <h3> $215.00</h3></strong>
</td>
</tr>
</table>
</div>
<h3>
You have until 01/29/2014 to ship your device.</h3>
<p style="padding:10px;">
<i>If you send your device after the expiration date we cannot honor your initial offer.
We will not accept devices that have been reported lost or stolen.</i></p>
<br />
</div>
</td>
<td>
<div id="divRight">
<div style="text-align:right;padding:15px;"> <img src="../images/barcode.png" alt="barcode" /></div>
<table cellpadding="3" style="border: 1px solid orange;padding:20px;">
</tr>
<tr align="center">
<td>
<img src="../images/pdfiphone.png" alt="iphone" />
</td>
</tr>
<tr>
<td>
<h3>
"Find my iPhone" must be turned off</h3>
</td>
</tr>
<tr>
<td>
This feature locks your device and will delay or reduce payment.
</td>
</tr>
<tr>
<td>
<strong>How to deactivate:</strong></td>
</tr>
<tr>
<td>
1. Tap the “settings” icon on your homescreen.</td>
</tr>
<tr>
<td>
2. Tap iCloud from the settings menu. </td>
</tr>
<tr>
<td>
3. If “Find My iPhone” is on, tap the slider to turn it off.</td>
</tr>
</table>
</div>
Can i use above HTML MARKUP and replace the string and create PDF and save to Folder with out viewing or Downloading by user?