using System; using System.Collections.Generic; using System.IO; using iText.Highlevel.Util; using iText.IO.Image; using iText.Kernel.Colors; using iText.Kernel.Pdf; using iText.Kernel.Pdf.Action; using iText.Kernel.Pdf.Canvas.Draw; using iText.Layout; using iText.Layout.Borders; using iText.Layout.Element; using iText.Layout.Properties; namespace iText.Highlevel.Chapter04 { /// Bruno Lowagie (iText Software) public class C04E03_LineSeparatorExample { public const String SRC = "../../../resources/data/jekyll_hyde.csv"; public const String DEST = "../../../results/chapter04/jekyll_hyde_overviewV3.pdf"; public static void Main(String[] args) { FileInfo file = new FileInfo(DEST); file.Directory.Create(); new C04E03_LineSeparatorExample().CreatePdf(DEST); } public virtual void CreatePdf(String dest) { PdfDocument pdf = new PdfDocument(new PdfWriter(dest)); Document document = new Document(pdf); SolidLine line = new SolidLine(1f); line.SetColor(ColorConstants.RED); LineSeparator ls = new LineSeparator(line); ls.SetWidth(UnitValue.CreatePercentValue(50)); ls.SetMarginTop(5); IList> resultSet = CsvTo2DList.Convert(SRC, "|"); resultSet.RemoveAt(0); foreach (IList record in resultSet) { String url = String.Format("http://www.imdb.com/title/tt{0}", record[0]); Link movie = new Link(record[2], PdfAction.CreateURI(url)); Div div = new Div().SetKeepTogether(true).SetBorderLeft(new SolidBorder(2)).SetPaddingLeft(3).SetMarginBottom (10).Add(new Paragraph(movie.SetFontSize(14f))).Add(new Paragraph(String.Format("Directed by {0} ({1}, {2})" , record[3], record[4], record[1]))); FileInfo file = new FileInfo(String.Format("../../../resources/img/{0}.jpg", record[0])); if (file.Exists) { iText.Layout.Element.Image img = new Image(ImageDataFactory.Create(file.FullName)); img.ScaleToFit(10000, 120); div.Add(img); } div.Add(ls); document.Add(div); } document.Close(); } } }