- 1.要动态生成pdf,无非是用第三方或直接代码生成。
- 2.iTextSharp生成pdf问题点记录
- dll相关下载
- https://files.cnblogs.com/files/xlgwr/iTextSharAndcode128i.zip
1.初始化代码
string appDomainPath = AppDomain.CurrentDomain.BaseDirectory + @"\";
if (isWebApp)
{
appDomainPath = System.Web.HttpRuntime.AppDomainAppPath + @"bin\";
}
string SavePath = string.Format(@"{0}pdfTemplate\{1}{2}.{3}", appDomainPath, saveFileName, DateTime.Now.ToString("yyyyMMddHHmmssfff"), "pdf");
string ImageLogoPath = string.Format(@"{0}pdfTemplate\{1}.{2}", appDomainPath, "logo", "jpg");
string ImageLogoERcodePath = string.Format(@"{0}pdfTemplate\{1}.{2}", appDomainPath, "logoErcode", "png");
using (Document document = new Document())
{
//中文字体
string chinese = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "simhei.ttf");
BaseFont baseFont = BaseFont.CreateFont(chinese, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
//文字大小12,文字样式
Font cn = new Font(baseFont, 12, Font.NORMAL);
Font fontToLabel = new Font(baseFont, 10, Font.NORMAL, BaseColor.BLACK);
Font fontToValue = new Font(baseFont, 12, Font.BOLD, BaseColor.BLACK);
Font fontToValue8 = new Font(baseFont, 10, Font.BOLD, BaseColor.BLACK);
Font fontLIGHT_GRAY = new Font(baseFont, 10, Font.NORMAL, BaseColor.LIGHT_GRAY);
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(@SavePath, FileMode.Create));
document.Open();
PdfContentByte ConByte_Up = writer.DirectContent;//当前页
#region header title
//最后一个参数是颜色,这里可以是rgb格式,也可以是默认定义的
Phrase Phr_HeaderTitle = new Phrase("x x 书", new Font(baseFont, 22, Font.BOLD, BaseColor.BLACK));
ColumnText.ShowTextAligned(ConByte_Up, Element.ALIGN_CENTER, Phr_HeaderTitle, 300, 786, 0);
//add logo
Image imgLogo = Image.GetInstance(ImageLogoPath);
AddImageToDoc(writer, imgLogo, 3, 744 + imgLogo.Height);
Image imgLogoERcode = Image.GetInstance(ImageLogoERcodePath);
AddImageToDoc(writer, imgLogoERcode, 510, 720 + imgLogo.Height, 0.4f);
#endregion
#region header 头部内容
AddNewLable(dicTitle, "致:", "QHContactPerson", ConByte_Up, fontToLabel, fontToValue, 3, 720);
AddNewLable(dicTitle, "我司", "JJCompanyNa", ConByte_Up, fontToLabel, fontToValue, 3, 690);
AddNewLable(dicTitle, "委派", "kyename", ConByte_Up, fontToLabel, fontToValue, 180, 690);
AddNewLable(dicTitle, "于", "GoodsTime", ConByte_Up, fontToLabel, fontToValue, 160 * 2, 690, 20);
AddNewLable(dicTitle, "至贵处取货,请予以配合。", "", ConByte_Up, fontToLabel, fontToValue, 150 * 3, 690);
#endregion
float Tleft = 18f;
float TcurrLableYSum = 792 - 72 * 2;
float TcurrLabelWidth = 60f;
float TcurrWidthAdd = 200f;
float TcurrHeigthAdd = 25f;
#region header 头部详细内容 792
#region 加背影
ConByte_Up.SetColorFill(BaseColor.LIGHT_GRAY);
ConByte_Up.Rectangle(6, TcurrLableYSum - TcurrHeigthAdd * 4 + 15, 580, TcurrHeigthAdd * 4.3);
ConByte_Up.Fill();
ConByte_Up.Stroke();
ConByte_Up.SetColorStroke(BaseColor.GRAY);
ConByte_Up.MoveTo(TcurrWidthAdd + Tleft - 8, TcurrLableYSum + 20);
ConByte_Up.SetLineDash(3f, 3f);
ConByte_Up.LineTo(TcurrWidthAdd + Tleft - 8, TcurrLableYSum - TcurrHeigthAdd * 2 - 30);
Con