2013-09-26 48 views
0

我有这样的代码:iTextSharp的ColumnText上没有显示PDF

var doc = new Document(); 
var pdf = "C:/pdfs/" + DateTime.Now.ToString("yyyymmdd") + ".pdf"; 
PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(pdf, FileMode.Create)); 
doc.Open();  
ColumnText ct = new ColumnText(cb); 
Phrase myText = new Phrase("TEST paragraph\nNewline"); 
ct.SetSimpleColumn(myText, 34, 750, 580, 317, 15, Element.ALIGN_LEFT); 
ct.Go(); 
doc.Close(); 

但是当我运行应用程序,它没有显示在PDF吗?我错过了什么?

+1

哪里CB从何而来?应该有一个PdfContentByte cb = writer.DirectContent; – tofutim

回答

3

这为我工作:

var doc = new Document(); 
var pdf = "D:/Temp/pdfs/" + DateTime.Now.ToString("yyyymmdd") + ".pdf"; // mm ?? 
var fi = new FileInfo(pdf); 
var di = fi.Directory; 
if (!di.Exists) 
{ 
    di.Create(); 
} 
PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(pdf, FileMode.Create)); 
doc.Open(); 
PdfContentByte cb = writer.DirectContent; 
ColumnText ct = new ColumnText(cb); 
Phrase myText = new Phrase("TEST paragraph\nNewline"); 
ct.SetSimpleColumn(myText, 34, 750, 580, 317, 15, Element.ALIGN_LEFT); 
ct.Go(); 
doc.Close(); 

也许你有一个旧版本的输出是不被覆盖?或者您正在查看错误的输出?我跑了两遍,它创建了两个文件,20135826和20135926.大概在DateTime.Now.ToString(“年月日”)是你真正想要的,而不是分钟!

var pdf = "D:/Temp/pdfs/" + DateTime.Now.ToString("yyyyMMdd") + ".pdf"; 
+0

我缺少'PdfContentByte CB = writer.DirectContent;'而且很可能旧版本没有被覆盖。 – mpora