Apr 25, 2017 - You need to use a combination of colspan and LoadTagStyle, both of which are outside the bounds of what I can fit in this textbox. To simplify, iTextSharp treats. Jul 29, 2013 - You can convert your html to pdf with itextsharp dll. Using iTextSharp.text.pdf. String HTML = 'td style= 'width:100px. GetInstance(document, new FileStream(filepath, FileMode.Create)).
Re: ItextSharp PDF Generation Problem
Dec 21, 2012 10:44 AM|amosCabanban86|LINK
Please check the ff sample I Created....
using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using iTextSharp.text;
using iTextSharp.text.html;
using iTextSharp.text.html.simpleparser;
using iTextSharp.text.pdf;
using Font = iTextSharp.text.Font;
using Rectangle = iTextSharp.text.Rectangle;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using iTextSharp.text;
using iTextSharp.text.html;
using iTextSharp.text.html.simpleparser;
using iTextSharp.text.pdf;
using Font = iTextSharp.text.Font;
using Rectangle = iTextSharp.text.Rectangle;
public partial class Test : Page
{
#region PRIVATE PROPERTIES
private string Title
{
get { return 'Summary of Completed Training Courses'; }
}
private string CompanyName { get { return 'Microsoft Inc.'; } }
private string ContactFirstName { get { return 'Amos'; } }
private string ContactLastName { get { return 'Cabanban'; } }
private string ContactEmailAddress { get { return '[email protected]'; } }
private string ContactPhoneNumber { get { return '(502) 298-7947'; } }
#endregion
{
#region PRIVATE PROPERTIES
private string Title
{
get { return 'Summary of Completed Training Courses'; }
}
private string CompanyName { get { return 'Microsoft Inc.'; } }
private string ContactFirstName { get { return 'Amos'; } }
private string ContactLastName { get { return 'Cabanban'; } }
private string ContactEmailAddress { get { return '[email protected]'; } }
private string ContactPhoneNumber { get { return '(502) 298-7947'; } }
#endregion
protected void Page_Load(object sender, EventArgs e)
{
{
}
protected void btnTopDown_Click(object sender, EventArgs e)
{
var document = new Document(PageSize.A4, 50, 50, 25, 25); //Create a new Document Object
{
var document = new Document(PageSize.A4, 50, 50, 25, 25); //Create a new Document Object
var output = new FileStream(Server.MapPath('TopDownTest.pdf'), FileMode.Create); //Create Filestream object
var pdfWriter = PdfWriter.GetInstance(document, output); //Open the document for writing
document.Open(); //OPEN DOC
AddLogo(document);
RegisteredFontsOnMachine(document);
AddDate(document);
AddCompanyDetails(document);
AddCenterTitle(document);
AddTable(document);
pdfWriter.PageEvent = new Footer();
document.Close(); //CLOSE DOC
output.Close(); //DISPOSE FS
output.Close(); //DISPOSE FS
Response.Write(@'<script language='javascript'>alert('Document has been successfully created.');</script>');
}
}
protected void btnHTMLTemplate_Click(object sender, EventArgs e)
{
try
{
var document = new Document(PageSize.A4, 50, 50, 25, 25); //Create a new Document Object
{
try
{
var document = new Document(PageSize.A4, 50, 50, 25, 25); //Create a new Document Object
var output = new FileStream(Server.MapPath('HTMLTest.pdf'), FileMode.Create); //Create Filestream object
var pdfWriter = PdfWriter.GetInstance(document, output);
document.Open(); //OPEN DOC
// Read in the contents of the htm file...
string contents = File.ReadAllText(Server.MapPath('~/Templates/html-template.txt'));
string contents = File.ReadAllText(Server.MapPath('~/Templates/html-template.txt'));
// Replace the placeholders with the user-specified text
contents = contents.Replace('[COMPANYNAME]', CompanyName);
contents = contents.Replace('[CONTACTFIRSTNAME]', ContactFirstName);
contents = contents.Replace('[CONTACTLASTNAME]', ContactLastName);
contents = contents.Replace('[CONTACTEMAIL]', ContactEmailAddress);
contents = contents.Replace('[IMGURL]', Server.MapPath('~/images/untitled.png'));
contents = contents.Replace('[DATE]', DateTime.Now.Date.ToShortDateString());
contents = contents.Replace('[COMPANYNAME]', CompanyName);
contents = contents.Replace('[CONTACTFIRSTNAME]', ContactFirstName);
contents = contents.Replace('[CONTACTLASTNAME]', ContactLastName);
contents = contents.Replace('[CONTACTEMAIL]', ContactEmailAddress);
contents = contents.Replace('[IMGURL]', Server.MapPath('~/images/untitled.png'));
contents = contents.Replace('[DATE]', DateTime.Now.Date.ToShortDateString());
DataTable dt;
StringBuilder sb = new StringBuilder();
SetupTestData(out dt);
sb.Append('<table border='1'>');
sb.Append('<tr> <td colspan='3'>Course Name</td> <td align='center'>Date Completed</td> <td align='center'>Score</td> </tr>');
foreach (DataRow dr in dt.Rows)
{
sb.Append(String.Format('<tr> <td colspan='3'>{0}</td> <td align='center'>{1}</td> <td align='center'>{2}</td> </tr>', dr[0], dr[1], dr[2]));
}
sb.Append('</table>');
contents = contents.Replace('[ITEMS]', sb.ToString());
StringBuilder sb = new StringBuilder();
SetupTestData(out dt);
sb.Append('<table border='1'>');
sb.Append('<tr> <td colspan='3'>Course Name</td> <td align='center'>Date Completed</td> <td align='center'>Score</td> </tr>');
foreach (DataRow dr in dt.Rows)
{
sb.Append(String.Format('<tr> <td colspan='3'>{0}</td> <td align='center'>{1}</td> <td align='center'>{2}</td> </tr>', dr[0], dr[1], dr[2]));
}
sb.Append('</table>');
contents = contents.Replace('[ITEMS]', sb.ToString());
//THIS IS ANOTHER WAY OF STYLING THRU ITEXTSHARP'S API
StyleSheet styles = new StyleSheet();
styles.LoadStyle('TextContent', 'size', '20pt');
styles.LoadStyle('redBigText', 'color', '#ff0000');
styles.LoadStyle('ItemRow', 'width', '100px');
StyleSheet styles = new StyleSheet();
styles.LoadStyle('TextContent', 'size', '20pt');
styles.LoadStyle('redBigText', 'color', '#ff0000');
styles.LoadStyle('ItemRow', 'width', '100px');
var parsedHtmlElements = HTMLWorker.ParseToList(new StringReader(contents), styles);
// Enumerate the elements, adding each one to the Document...
foreach (var htmlElement in parsedHtmlElements) document.Add(htmlElement as IElement);
foreach (var htmlElement in parsedHtmlElements) document.Add(htmlElement as IElement);
document.Close();
output.Close();
output.Close();
Response.Write(@'<script language='javascript'>alert('Document has been successfully created.');</script>');
}
catch (Exception ex)
{
throw;
}
catch (Exception ex)
{
throw;
}
}
#region PRIVATE METHODS
private static void AddTable(Document document)
{
var table = new PdfPTable(4) { SpacingBefore = 20, WidthPercentage = 100 };
private static void AddTable(Document document)
{
var table = new PdfPTable(4) { SpacingBefore = 20, WidthPercentage = 100 };
//SET DEFAULT SETTINGS
table.DefaultCell.PaddingBottom = 10;
table.DefaultCell.PaddingTop = 5;
table.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER;
table.DefaultCell.PaddingBottom = 10;
table.DefaultCell.PaddingTop = 5;
table.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER;
//ADD COLUMN NAME WITH COLSPAN OF 2
var courseNameCell = new PdfPCell(new Phrase('Course Name')) { Colspan = 2, PaddingBottom = 10, PaddingTop = 5 };
table.AddCell(courseNameCell);
var courseNameCell = new PdfPCell(new Phrase('Course Name')) { Colspan = 2, PaddingBottom = 10, PaddingTop = 5 };
table.AddCell(courseNameCell);
table.AddCell('Date Completed');
table.AddCell('Score');
table.AddCell('Score');
//CREATE SAMPLE DATA
DataTable dt;
SetupTestData(out dt);
DataTable dt;
SetupTestData(out dt);
//LOOP THROUGH SAMPLE DATA AND INSERT ROWS TO TABLE
foreach (DataRow dr in dt.Rows)
{
var courseCell = new PdfPCell(new Phrase(dr[0].ToString())) { Colspan = 2 };
table.AddCell(courseCell);
table.AddCell(dr[1].ToString());
table.AddCell(dr[2].ToString());
}
foreach (DataRow dr in dt.Rows)
{
var courseCell = new PdfPCell(new Phrase(dr[0].ToString())) { Colspan = 2 };
table.AddCell(courseCell);
table.AddCell(dr[1].ToString());
table.AddCell(dr[2].ToString());
}
![Itextsharp html to pdf xmlworker Itextsharp html to pdf xmlworker](/uploads/1/2/5/8/125866099/156903732.png)
document.Add(table);
}
}
private static void SetupTestData(out DataTable dt)
{
dt = new DataTable();
dt.Columns.Add('Course Name');
dt.Columns.Add('Date Completed');
dt.Columns.Add('Score');
{
dt = new DataTable();
dt.Columns.Add('Course Name');
dt.Columns.Add('Date Completed');
dt.Columns.Add('Score');
var dr1 = dt.NewRow();
dr1[0] = 'CEO Operations Level 1';
dr1[1] = '1/9/2012';
dr1[2] = '90%';
dt.Rows.Add(dr1);
dr1[0] = 'CEO Operations Level 1';
dr1[1] = '1/9/2012';
dr1[2] = '90%';
dt.Rows.Add(dr1);
var dr2 = dt.NewRow();
dr2[0] = 'Basic Marketing';
dr2[1] = '1/23/2012';
dr2[2] = '80%';
dt.Rows.Add(dr2);
dr2[0] = 'Basic Marketing';
dr2[1] = '1/23/2012';
dr2[2] = '80%';
dt.Rows.Add(dr2);
var dr3 = dt.NewRow();
dr3[0] = 'Managing Vendors and Fulfillment Partners';
dr3[1] = '3/24/2012';
dr3[2] = '70%';
dt.Rows.Add(dr3);
dr3[0] = 'Managing Vendors and Fulfillment Partners';
dr3[1] = '3/24/2012';
dr3[2] = '70%';
dt.Rows.Add(dr3);
var dr4 = dt.NewRow();
dr4[0] = 'Determining Service Delivery Costs';
dr4[1] = '6/9/2012';
dr4[2] = '100%';
dt.Rows.Add(dr4);
dr4[0] = 'Determining Service Delivery Costs';
dr4[1] = '6/9/2012';
dr4[2] = '100%';
dt.Rows.Add(dr4);
var dr5 = dt.NewRow();
dr5[0] = 'Creating a Lean Service Operation';
dr5[1] = '11/22/2012';
dr5[2] = '100%';
dt.Rows.Add(dr5);
dr5[0] = 'Creating a Lean Service Operation';
dr5[1] = '11/22/2012';
dr5[2] = '100%';
dt.Rows.Add(dr5);
var dr6 = dt.NewRow();
dr6[0] = 'Service Dispatcher Level 1';
dr6[1] = '12/3/2012';
dr6[2] = '100%';
dt.Rows.Add(dr6);
dr6[0] = 'Service Dispatcher Level 1';
dr6[1] = '12/3/2012';
dr6[2] = '100%';
dt.Rows.Add(dr6);
var dr7 = dt.NewRow();
dr7[0] = ' Training and Incenting Technical Staff';
dr7[1] = '12/4/2012';
dr7[2] = '100%';
dt.Rows.Add(dr7);
dr7[0] = ' Training and Incenting Technical Staff';
dr7[1] = '12/4/2012';
dr7[2] = '100%';
dt.Rows.Add(dr7);
}
private void AddDate(Document document)
{
var date = new Paragraph(DateTime.Now.Date.ToShortDateString(), new Font(Font.FontFamily.COURIER, 12f, Font.NORMAL))
{
Alignment = Element.ALIGN_RIGHT,
SpacingAfter = 20f,
SpacingBefore = 40f
};
document.Add(date);
}
{
var date = new Paragraph(DateTime.Now.Date.ToShortDateString(), new Font(Font.FontFamily.COURIER, 12f, Font.NORMAL))
{
Alignment = Element.ALIGN_RIGHT,
SpacingAfter = 20f,
SpacingBefore = 40f
};
document.Add(date);
}
private void AddCompanyDetails(Document document)
{
var companyName = new Paragraph(string.Format('{0}{1}{2} {3}{1}{4}{1}{5}', CompanyName, Environment.NewLine, ContactFirstName, ContactLastName, ContactEmailAddress, ContactPhoneNumber), new Font(Font.FontFamily.COURIER, 12f, Font.NORMAL))
{
Alignment = Element.ALIGN_LEFT,
SpacingAfter = 30f
};
document.Add(companyName);
}
{
var companyName = new Paragraph(string.Format('{0}{1}{2} {3}{1}{4}{1}{5}', CompanyName, Environment.NewLine, ContactFirstName, ContactLastName, ContactEmailAddress, ContactPhoneNumber), new Font(Font.FontFamily.COURIER, 12f, Font.NORMAL))
{
Alignment = Element.ALIGN_LEFT,
SpacingAfter = 30f
};
document.Add(companyName);
}
private void AddCenterTitle(Document document)
{
Font tradeGothic = FontFactory.GetFont('trade gothic lt std bold condensed no. 20', 17, BaseColor.DARK_GRAY);
var heading2 = new Paragraph(Title, tradeGothic) { Alignment = Element.ALIGN_CENTER };
document.Add(heading2);
}
{
Font tradeGothic = FontFactory.GetFont('trade gothic lt std bold condensed no. 20', 17, BaseColor.DARK_GRAY);
var heading2 = new Paragraph(Title, tradeGothic) { Alignment = Element.ALIGN_CENTER };
document.Add(heading2);
}
private void AddLogo(Document document)
{
iTextSharp.text.Image png = iTextSharp.text.Image.GetInstance(Server.MapPath('images') + '/untitled.png');
png.ScalePercent(50f);
document.Add(png);
}
{
iTextSharp.text.Image png = iTextSharp.text.Image.GetInstance(Server.MapPath('images') + '/untitled.png');
png.ScalePercent(50f);
document.Add(png);
}
private static void RegisteredFontsOnMachine(Document document)
{
int totalfonts = FontFactory.RegisterDirectory('C:WINDOWSFonts');
{
int totalfonts = FontFactory.RegisterDirectory('C:WINDOWSFonts');
//TO DISPLAY ALL AVAILABLE FONTS ON YOUR MACHINE UNCOMMENT THIS
//StringBuilder sb = new StringBuilder();
//foreach (string fontname in FontFactory.RegisteredFonts)
//{
// sb.Append(fontname + 'n');
//}
//document.Add(new Paragraph('All Fonts:n' + sb.ToString()));
}
#endregion
//StringBuilder sb = new StringBuilder();
//foreach (string fontname in FontFactory.RegisteredFonts)
//{
// sb.Append(fontname + 'n');
//}
//document.Add(new Paragraph('All Fonts:n' + sb.ToString()));
}
#endregion
}
#region HELPER CLASSES
/// <summary>
/// Helper class to create headers
/// </summary>
public class Header : PdfPageEventHelper
{
public override void OnEndPage(PdfWriter writer, Document document)
{
Rectangle pageSize = document.PageSize;
string date = 'Test Header';
Paragraph header = new Paragraph(date, FontFactory.GetFont(FontFactory.TIMES, 10, iTextSharp.text.Font.BOLD, BaseColor.WHITE));
header.Alignment = Element.ALIGN_LEFT;
PdfPTable headerTbl = new PdfPTable(1);
headerTbl.TotalWidth = 600;
headerTbl.HorizontalAlignment = Element.ALIGN_LEFT;
PdfPCell cell = new PdfPCell(header);
cell.Border = 0;
cell.PaddingLeft = 10;
cell.BackgroundColor = BaseColor.GRAY;
headerTbl.AddCell(cell);
headerTbl.WriteSelectedRows(0, -1, pageSize.GetLeft(5), pageSize.GetTop(5), writer.DirectContent);
/// <summary>
/// Helper class to create headers
/// </summary>
public class Header : PdfPageEventHelper
{
public override void OnEndPage(PdfWriter writer, Document document)
{
Rectangle pageSize = document.PageSize;
string date = 'Test Header';
Paragraph header = new Paragraph(date, FontFactory.GetFont(FontFactory.TIMES, 10, iTextSharp.text.Font.BOLD, BaseColor.WHITE));
header.Alignment = Element.ALIGN_LEFT;
PdfPTable headerTbl = new PdfPTable(1);
headerTbl.TotalWidth = 600;
headerTbl.HorizontalAlignment = Element.ALIGN_LEFT;
PdfPCell cell = new PdfPCell(header);
cell.Border = 0;
cell.PaddingLeft = 10;
cell.BackgroundColor = BaseColor.GRAY;
headerTbl.AddCell(cell);
headerTbl.WriteSelectedRows(0, -1, pageSize.GetLeft(5), pageSize.GetTop(5), writer.DirectContent);
}
}
}
/// <summary>
/// Helper class to create footers
/// </summary>
public class Footer : PdfPageEventHelper
{
/// Helper class to create footers
/// </summary>
public class Footer : PdfPageEventHelper
{
public override void OnEndPage(PdfWriter writer, Document doc)
{
{
var grey = new BaseColor(128, 128, 128);
Font font = FontFactory.GetFont('Arial', 9, Font.NORMAL, grey);
var footerTbl = new PdfPTable(1) { TotalWidth = doc.PageSize.Width };
Font font = FontFactory.GetFont('Arial', 9, Font.NORMAL, grey);
var footerTbl = new PdfPTable(1) { TotalWidth = doc.PageSize.Width };
var mspu = new Chunk(string.Format('{0}{1}{1}{2}', 'SPC International 14111 Freeway Drive, Suite 300 Santa Fe Springs, CA 90670', Environment.NewLine, '(855)-772-6778'), FontFactory.GetFont(FontFactory.HELVETICA_OBLIQUE, 8, grey));
var mspuFooter = new PdfPCell(new Phrase(mspu))
{
Border = Rectangle.NO_BORDER,
BorderColor = grey,
HorizontalAlignment = Element.ALIGN_CENTER,
PaddingTop = 40
};
var mspuFooter = new PdfPCell(new Phrase(mspu))
{
Border = Rectangle.NO_BORDER,
BorderColor = grey,
HorizontalAlignment = Element.ALIGN_CENTER,
PaddingTop = 40
};
footerTbl.AddCell(mspuFooter);
footerTbl.WriteSelectedRows(0, -1, 0, (doc.BottomMargin + 55), writer.DirectContent);
}
}
}
#endregion
#endregion