2013-04-11 80 views
0

我很新使用iTextSharp生成PDF。我有下面的代碼,將文本從我的表單到PDF輸出。我正在使用短語& ColumnText將文本從特定文本框放到我的pdf輸出中。我將變量以及文本框的text屬性作爲Phrase字符串綁定在一起,但它將兩組相同的文本放在彼此的頂部(屏幕截圖)。 enter image description hereiTextSharp短語字符串翻倍pdf輸出

string oldFile = Path.GetTempPath() + "invoice.pdf"; 
string newFile = Path.GetTempPath() + "NewInvoice.pdf"; 
PdfReader reader = new PdfReader(oldFile); 
iTextSharp.text.Rectangle size = reader.GetPageSize(1); 
Document doc = new Document(size); 
FileStream fs = new FileStream(newFile, FileMode.Create, FileAccess.Write, FileShare.ReadWrite); 
PdfWriter writer = PdfWriter.GetInstance(doc, fs); 
doc.Open(); 
PdfContentByte cb = writer.DirectContent; 
BaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, true); 
cb.SetColorFill(BaseColor.BLACK); 
cb.SetFontAndSize(bf, 12); 
cb.BeginText(); 
cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, invoiceDate, 480, 603, 0); 
cb.EndText(); 
PdfImportedPage page = writer.GetImportedPage(reader, 1); 
cb.AddTemplate(page, 0, 0); 

ColumnText ct = new ColumnText(cb); 
Phrase phrase = new Phrase(textBox1.Text); 
ct.SetSimpleColumn(phrase, 65, 375, 540, 300, 16, Element.ALIGN_LEFT); 
ct.Go(); 
doc.Close(); 
fs.Close(); 
writer.Close(); 
reader.Close(); 
Process.Start(newFile); 

如果我給你一個字符串(字符串不管=「一些文字在這裏......」),並把此一語中的字符串(..新詞(什麼);它工作正常

回答

0

讓我先說,我是iText的原開發商開始。

我希望你能相信我,當我說,你應該使用PdfReader/PdfStamper組合,而不是一個Document/PdfWriter組合。這是記錄在我的書的chapter 6你可能在外面看不到任何差異,但PDF在內部感覺更好。

這是奇怪的,你在絕對位置添加文本。使用在需要文本的位置有一些AcroForm字段的模板不是更好嗎?您的代碼將更容易維護。

我也看到你使用HELVETICA作爲字體,嵌入參數等於true。當然你知道embedded參數將被忽略HELVETICA這是標準的第一種字體之一。

最後,對於你的問題:我不認爲你的代碼是兩次添加短語。我認爲你一直在做實驗,並且你在原始文件「invoice.pdf」中已經存在的短語上添加了一個新短語。如果你100%認爲情況並非如此,那麼你應該分享你的PDF,以便我(或iText的其他人)可以檢查它。

+0

感謝您的回覆。從我通過實驗學到的知識和一般的網絡知識來看,爲了擁有一個有控制權的pdf(接受文本),我需要購買一塊軟件(Adobe專業版等)來完成這個任務,爲我提供一個選擇。所以我在Illustrator中創建了一個。所以我走了一條定位一切的路線。我檢查了保存在我的默認目錄中的「invoice.pdf」,它沒有這個文本,所以它不能複製它。我不明白爲什麼它在我直接給它分配文本時起作用。蜇任何=「什麼」; – KFP 2013-04-11 15:13:44

+0

那麼,Illustator也不是免費的,是嗎?您可以使用Open Office輕鬆創建表單。 Open Office可以免費下載。你可以找到一個例子來解釋如何用我提到的章節6.3.5中的這種控件來創建一個PDF。 – 2013-04-11 15:21:00

+0

另外我不明白你的意思,當你說「我不明白爲什麼它的作品,當我直接給它分配文本」。直接向什麼?直接如何? – 2013-04-11 15:22:16