2013-10-16 106 views
0

我試圖從文本字符串生成條形碼,然後使用iTextSharp PDF生成結果。現在,我有下面的代碼:將itextsharp條形碼圖像添加到PdfPCell

// Create a Document object 
var pdfToCreate = new Document(PageSize.A4, 0, 0, 0, 0); 

// Create a new PdfWrite object, writing the output to a MemoryStream 
var outputStream = new MemoryStream(); 
var pdfWriter = PdfWriter.GetInstance(pdfToCreate, outputStream); 
PdfContentByte cb = new PdfContentByte(pdfWriter); 
// Open the Document for writing 
pdfToCreate.Open(); 

PdfPTable BarCodeTable = new PdfPTable(3); 
// Create barcode 
Barcode128 code128   = new Barcode128(); 
code128.CodeType   = Barcode.CODE128_UCC; 
code128.Code    = "00100370006756555316"; 
// Generate barcode image 
iTextSharp.text.Image image128 = code128.CreateImageWithBarcode(cb, null, null); 
// Add image to table cell 
BarCodeTable.AddCell(image128); 
// Add table to document 
pdfToCreate.Add(BarCodeTable); 

pdfToCreate.Close(); 

當我運行這一點,並試圖以編程方式打開PDF,我收到一個錯誤提示「該文件沒有任何頁面。」

然而,當我使用:

pdfToCreate.Add(image128); 

(而不是添加到表,我把它添加到單元格),條形碼顯示出來(雖然它浮關閉文檔)。

我想將條形碼發送到表格,以便我可以更輕鬆地格式化文檔。最終產品將從數據庫中讀取20-60個條碼。任何想法,我要去哪裏錯了?

回答

3

你是在告訴PdfPTable構造函數來創建一個三列的表,但只提供了一個列:

PdfPTable BarCodeTable = new PdfPTable(3); 

iTextSharp的默認忽略不完整的行。您可以更改構造函數以匹配列數,添加額外的單元格或致電BarCodeTable.CompleteRow(),這將使用默認單元格模板填充空白。

+0

就是這樣!非常感謝,我太急於看到我猜的條形碼。 –