public static void Main()
{ Document document = new Document();
BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA , BaseFont.CP1252 , BaseFont.NOT_EMBEDDED);
Font font = new Font(bf , , Font.NORMAL);
Color green=new Color( , , ); try
{ PdfWriter writer = PdfWriter.getInstance(document , new FileStream("tpl.pdf" , FileMode.Create)); document.Open(); PdfContentByte cb = writer.DirectContent;
PdfTemplate tpl = cb.createTemplate( , );
PdfTemplate tplCount = cb.createTemplate( , );
Image caesar = Image.getInstance("caesar_coin.jpg"); //Graphic grx = new Graphic();
//grx.setHorizontalLine(2 , 90 , green);
//grx.stroke();
//tpl.Add(grx); tpl.GrayFill = 0.75f;
tpl.moveTo( , );
tpl.lineTo( , );
tpl.lineTo( , );
tpl.closePath();
tpl.moveTo( , );
tpl.lineTo( , );
tpl.moveTo( , );
tpl.lineTo( , );
tpl.stroke(); ColumnText ct = new ColumnText(cb);
ct.addText(new Phrase("\r\nPhrase Title\r\n" , FontFactory.getFont(FontFactory.HELVETICA , ,Font.BOLD,green)));
ct.addText(new Phrase("GALLIA est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur. Hi omnes lingua, institutis, legibus inter se differunt. Gallos ab Aquitanis Garumna flumen, a Belgis Matrona et Sequana dividit. Horum omnium fortissimi sunt Belgae, propterea quod a cultu atque humanitate provinciae longissime absunt, minimeque ad eos mercatores saepe commeant atque ea quae ad effeminandos animos pertinent important, proximique sunt Germanis, qui trans Rhenum incolunt, quibuscum continenter bellum gerunt. Qua de causa Helvetii quoque reliquos Gallos virtute praecedunt, quod fere cotidianis proeliis cum Germanis contendunt, cum aut suis finibus eos prohibent aut ipsi in eorum finibus bellum gerunt.\n" , FontFactory.getFont(FontFactory.HELVETICA , ))); ct.addText(new Phrase("\r\nPhrase Title\r\n" , FontFactory.getFont(FontFactory.HELVETICA , , Font.BOLD , green)));
ct.addText(new Phrase("Eorum una, pars, quam Gallos obtinere dictum est, initium capit a flumine Rhodano, continetur Garumna flumine, Oceano, finibus Belgarum, attingit etiam ab Sequanis et Helvetiis flumen Rhenum, vergit ad septentriones. Belgae ab extremis Galliae finibus oriuntur, pertinent ad inferiorem partem fluminis Rheni, spectant in septentrionem et orientem solem. Aquitania a Garumna flumine ad Pyrenaeos montes et eam partem Oceani quae est ad Hispaniam pertinet; spectat inter occasum solis et septentriones.\n" , FontFactory.getFont(FontFactory.HELVETICA , ))); ct.addText(new Phrase("\r\nPhrase Title:: jpg\r\n" , FontFactory.getFont(FontFactory.HELVETICA , , Font.BOLD , green)));
var ph=new Phrase("Apud Helvetios longe nobilissimus fuit et ditissimus Orgetorix. Is M. Messala, [et P.] M. Pisone consulibus regni cupiditate inductus coniurationem nobilitatis fecit et civitati persuasit ut de finibus suis cum omnibus copiis exirent: perfacile esse, cum virtute omnibus praestarent, totius Galliae imperio potiri. Id hoc facilius iis persuasit, quod undique loci natura Helvetii continentur: una ex parte flumine Rheno latissimo atque altissimo, qui agrum Helvetium a Germanis dividit; altera ex parte monte Iura altissimo, qui est inter Sequanos et Helvetios; tertia lacu Lemanno et flumine Rhodano, qui provinciam nostram ab Helvetiis dividit. His rebus fiebat ut et minus late vagarentur et minus facile finitimis bellum inferre possent; qua ex parte homines bellandi cupidi magno dolore adficiebantur. Pro multitudine autem hominum et pro gloria belli atque fortitudinis angustos se fines habere arbitrabantur, qui in longitudinem milia passuum CCXL, in latitudinem CLXXX patebant.\n" , FontFactory.getFont(FontFactory.HELVETICA , ));
Image image = Image.getInstance("caesar_coin.jpg");
//image.Alignment = Image.RIGHT | Image.TEXTWRAP;
//Chunk bx=new Chunk(image,0,0,true);
//ph.addSpecial(bx);
//ct.addText(ph); cb.addImage(image, , , , , , ); ct.addText(new Phrase("\r\nPhrase Title\r\n" , FontFactory.getFont(FontFactory.HELVETICA , , Font.BOLD , green)));
ct.addText(new Phrase("His rebus adducti et auctoritate Orgetorigis permoti constituerunt ea quae ad proficiscendum pertinerent comparare, iumentorum et carrorum quam maximum numerum coemere, sementes quam maximas facere, ut in itinere copia frumenti suppeteret, cum proximis civitatibus pacem et amicitiam confirmare. Ad eas res conficiendas biennium sibi satis esse duxerunt; in tertium annum profectionem lege confirmant. Ad eas res conficiendas Orgetorix deligitur. Is sibi legationem ad civitates suscipit. In eo itinere persuadet Castico, Catamantaloedis filio, Sequano, cuius pater regnum in Sequanis multos annos obtinuerat et a senatu populi Romani amicus appellatus erat, ut regnum in civitate sua occuparet, quod pater ante habuerit; itemque Dumnorigi Haeduo, fratri Diviciaci, qui eo tempore principatum in civitate obtinebat ac maxime plebi acceptus erat, ut idem conaretur persuadet eique filiam suam in matrimonium dat. Perfacile factu esse illis probat conata perficere, propterea quod ipse suae civitatis imperium obtenturus esset: non esse dubium quin totius Galliae plurimum Helvetii possent; se suis copiis suoque exercitu illis regna conciliaturum confirmat. Hac oratione adducti inter se fidem et ius iurandum dant et regno occupato per tres potentissimos ac firmissimos populos totius Galliae sese potiri posse sperant.\n" , FontFactory.getFont(FontFactory.HELVETICA , ))); ct.addText(new Phrase("\r\nPhrase Title\r\n" , FontFactory.getFont(FontFactory.HELVETICA , , Font.BOLD , green)));
ct.addText(new Phrase("Ea res est Helvetiis per indicium enuntiata. Moribus suis Orgetoricem ex vinculis causam dicere coegerunt; damnatum poenam sequi oportebat, ut igni cremaretur. Die constituta causae dictionis Orgetorix ad iudicium omnem suam familiam, ad hominum milia decem, undique coegit, et omnes clientes obaeratosque suos, quorum magnum numerum habebat, eodem conduxit; per eos ne causam diceret se eripuit. Cum civitas ob eam rem incitata armis ius suum exequi conaretur multitudinemque hominum ex agris magistratus cogerent, Orgetorix mortuus est; neque abest suspicio, ut Helvetii arbitrantur, quin ipse sibi mortem consciverit." , FontFactory.getFont(FontFactory.HELVETICA , ))); float[] left1 = { , , , };
float[] right1 = { , , , , , , , , , , , , , };
float[] left2 = { , , , , , , , , , , , , , };
float[] right2 = { , , , }; int status = ;
int column = ; var header=new Rectangle( , , , );
header.BackgroundColor=green;
header.BorderColor=green;
cb.rectangle(header);
cb.stroke(); var footer=new Rectangle( , , , );
footer.BackgroundColor=green;
footer.BorderColor=green;
cb.rectangle(footer);
cb.stroke(); cb.setRGBColorFill( , , ); cb.beginText();
cb.setFontAndSize(bf , );
cb.setTextMatrix( ,);
cb.showText("U als ondernemer");
cb.setTextMatrix(-bf.getWidthPoint("Resultaten" , ) , );
cb.showText("Resultaten");
cb.endText(); String pageText = "Page " + writer.PageNumber + " of ";
float pageLen = bf.getWidthPoint(pageText , );
cb.beginText();
cb.setFontAndSize(bf , );
cb.setTextMatrix( , );
cb.showText(pageText);
cb.endText(); cb.addTemplate(tplCount , + pageLen , );
cb.resetRGBColorFill(); cb.addTemplate(tpl , , );
cb.addImage(caesar , , , , , , ); while((status & ColumnText.NO_MORE_TEXT) == )
{
if(column == )
{
ct.setColumns(left1 , right1);
column = ;
}
else
{
ct.setColumns(left2 , right2);
column = ;
}
status = ct.go();
ct.YLine = ;
ct.Alignment = Element.ALIGN_JUSTIFIED;
status = ct.go(); if((column == ) && ((status & ColumnText.NO_MORE_COLUMN) != ))
{
document.newPage(); cb.rectangle(header);
cb.stroke(); cb.rectangle(footer);
cb.stroke(); cb.setRGBColorFill( , , ); cb.beginText();
cb.setFontAndSize(bf , );
cb.setTextMatrix( , );
cb.showText("U als ondernemer");
cb.setTextMatrix(-bf.getWidthPoint("Resultaten" , ) , );
cb.showText("Resultaten");
cb.endText(); pageText = "Page " + writer.PageNumber + " of ";
pageLen = bf.getWidthPoint(pageText , ); cb.beginText();
cb.setFontAndSize(bf , );
cb.setTextMatrix( , );
cb.showText(pageText);
cb.endText(); cb.addTemplate(tplCount , + pageLen , );
cb.resetRGBColorFill(); cb.addTemplate(tpl, , );
cb.addImage(caesar , , , , , , ); }
} tplCount.beginText();
tplCount.setFontAndSize(bf , );
tplCount.showText((writer.PageNumber).ToString());
tplCount.endText(); document.Close();
}
catch(DocumentException de)
{
Console.Error.WriteLine(de.Message);
}
catch(IOException ioe)
{
Console.Error.WriteLine(ioe.Message);
}
}

itextSharp 使用模板(PdfTemplate)不规则分栏(ColumnText)的更多相关文章

  1. ActiveReports 报表应用教程 (4)---分栏报表

    在 ActiveReports 中可以实现分栏报表布局样式,可以设置横向分栏.纵向分栏,同时进行分栏和分组设置,统计分栏分组的小计.合计等.在商业报表系统中常见的分栏报表有商品标签.员工工卡.条码打印 ...

  2. CSS3-column分栏

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  3. 分栏控制器和导航栏目tabBarItem,UINavigationController

    ////  AppDelegate.m//  TabBarControllerDemo////  Created by qianfeng on 15/9/22.//  Copyright (c) 20 ...

  4. WPF中利用后台代码实现窗口分栏动态改变

    在WPF中实现窗口分栏并能够通过鼠标改变大小已经非常容易,例如将一个GRID分成竖排三栏显示,就可以将GRID先分成5列,其中两个固定列放GridSplitter. <Grid Backgrou ...

  5. css3分栏

    <!DOCTYPE HTML> <meta charset="UTF-8"> <title>分栏</title> <style ...

  6. Word分栏

    情景描述 Word分栏在小论文的撰写过程中是很常用的技术.但是,我们经常会遇到很难过的情况: 一段文字本来是连续分布的,可是当选择了分两栏         之后,开始部分在左边一栏,中间在右边一栏. ...

  7. 纯CSS实现侧边栏/分栏高度自动相等

    by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=694 一.为何要分栏高 ...

  8. css3属性:column分栏

    css3选择器中提出了分栏的属性,其浏览器支持情况为:Internet Explorer 10 和 Opera 支持 column 属性,Firefox 支持替代的 -moz-column 属性,Sa ...

  9. Jquery moblie中的分栏布局

    大家好,很高兴又与大家见面了,今天我要给大家展示的是自己对jquery  moblie中网格布局的理解.可能不是尽善尽美,希望大家多多体谅! 在jquery moblie中有两种布局,一种是表格布局( ...

随机推荐

  1. Iterator(迭代器)接口 --对象循环遍历

    <?php class MyIterator implements Iterator { private $var = array(); public function __construct ...

  2. Python IDLE快捷键

    编辑状态时:Ctrl + [ .Ctrl + ] 缩进代码Alt+3 Alt+4 注释.取消注释代码行Alt+5 Alt+6 切换缩进方式 空格<=>TabAlt+/ 单词完成,只要文中出 ...

  3. uvalive 3971 - Assemble(二分搜索 + 贪心)

    题目连接:3971 - Assemble 题目大意:有若干个零件, 每个零件给出的信息有种类, 名称, 价格, 质量,  现在给出一个金额, 要求在这个金额范围内, 将每个种类零件都买一个, 并且尽量 ...

  4. linq中的group by

    现有如下需求,要求统计int数组中每个整数的个数: ,,,,,,,,,,,, }; var linq = from item in arrInt group item by item into g// ...

  5. BZOJ 1978: [BeiJing2010]取数游戏 game( dp )

    dp(x)表示前x个的最大值,  Max(x)表示含有因数x的dp最大值. 然后对第x个数a[x], 分解质因数然后dp(x) = max{Max(t)} + 1, t是x的因数且t>=L -- ...

  6. JavaScript 的数组操作--删除元素

    在JavaScript中,可以很方便的删除指定位置的元素,这个是用到 splice方法, 该方法用于删除或替换数组中的部分数据. 其语法定义是 : splice(start , count [,new ...

  7. UVA 531 - Compromise(dp + LCS打印路径)

      Compromise  In a few months the European Currency Union will become a reality. However, to join th ...

  8. 【转】关于C语言生成不重复的随机数

    一 说起随机函数,恐怕又有人说这是老生长谈了……一般很多人都形成了自己的固定格式,因为随机数用处比较大,用的时候比较多,拿过来就用了.但是新手不这么 干,他们总是抱有疑惑,我就是一个新手,而且较菜…… ...

  9. 完整的yuicompressor单个压缩和批量压缩以及gzip再次压缩,拦截器的配置等

    下载地址:http://yuilibrary.com/download/yuicompressor/ 个人认为现在yuicompressor是最安全,最值得信赖的压缩工具,至少到现在没出现过问题 1. ...

  10. HDU 4738 双连通模版题

    九野的博客,转载请注明出处:http://blog.csdn.net/acmmmm/article/details/11711577 题意:给定n个点,m条无向边 下面m行表示u , v ,边权值 求 ...