2014-09-02 65 views
-1
Document doc = new Document(iTextSharp.text.PageSize.LETTER.Rotate(), 10, 10, 5, 5); 
      string nazivPDFa = txt_datumFiskalnogIsecka.Text +" "+ txt_nazivKompanije.Text; 
      PdfWriter pdf = PdfWriter.GetInstance(doc, new FileStream(nazivPDFa + ".pdf", FileMode.CreateNew)); 
      doc.Open(); 

Paragraph klijent = new Paragraph(ispisiKlijenta.Text); 

PdfPTable tabelaNK = new PdfPTable(1); 
PdfPCell kl = new PdfPCell(new Phrase(klijent)); 
kl.BorderColor = BaseColor.BLACK; 
tabelaNK.AddCell(kl); 
doc.Add(tabelaNK); 

我已創建PDF文檔與iTextSharp的,當我填寫PDF一些文字是誰在塞爾維亞,他不告訴我最喜歡S,C,C,DJ,ž字符。如何設置的CurrentCulture對PDF文檔iTextSharp的C#

例如:我寫了「nešto」,我得到了「neto」。

我在那PDF上有很多想法,它將永遠給所有元素當前的文化。

+1

出於好奇:你指的是什麼'CurrentCulture'?是否嘗試翻譯單詞* encoding *?這是一個現有的術語嗎?它是特定於iTextSharp還是.NET? – 2014-09-02 07:39:11

+0

@ReadyToWork,「CurrentCulture」或本地化的.Net概念不存在於PDF視角,您只有「文本」。除此之外,無論您的表單(包括字體)或本地環境具有什麼設置,它們都無關緊要。但只要你不會做奇怪的事情,比如將字符串轉換爲字節或序列化它們,那麼你應該是Unicode安全的。 iTextSharp將採用您的Unicode字符串並正確創建適當的字節序列。然而,要做到這一點,正如布魯諾所說的,你必須手動提供一個字形的字形。我會推薦Arial Unicode MS – 2014-09-02 13:51:45

+0

我有同樣的問題,這就是答案:http://stackoverflow.com/questions/33699295/croatian-letters-in-itextsharp – 2016-08-12 10:38:17

回答

1

當您創建Paragraph時,您沒有使用字體。在這種情況下,標準類型1字體Helvetica將被使用並且不會被嵌入。由於Helvetica只支持一組有限的字符,因此您的字形不會出現。這在the official documentation中有很好的記錄。在你學會如何走路之前,你試圖跑步是件可惜的事情。

有幾件事情可以發揮作用。

  1. 首先,你需要確保的是,編碼ispisiKlijenta.Text是正確的。例如,CP1250Unicode中的字符串是?當您編寫KlijenT.Add("Tekući račun: " +txt_brRacunaKompanije.Text);時,由於您在代碼中引入了特殊字符,可能會編寫錯誤的代碼(至少在編寫Java時),當代碼使用不同的編碼進行編譯或執行時,可能會消失。
  2. 然後,您需要提供一個知道如何繪製所需字形的字體程序。例如:Helvetica不知道CP1250,但是arial.ttf確實如此(還有許多其他字體,但您需要先檢查一下)。
  3. 然後,您需要決定如何使用該字體。你會使用嵌入字體作爲一個簡單的字體,就像我們在EncodingExample中創建this PDF那樣,或者將字體嵌入爲複合字體,就像我們在UnicodeExample中創建this PDF那樣。這兩種PDF可能看起來都和你一樣,但它們不是。您所做的選擇將會對您的應用程序的設計產生影響。
  4. 一旦你做出了關於字體的決定,並且一旦你創建了一個Font對象,例如命名爲font,則需要在創建Paragraph時使用該對象。
+0

對不起,但我嘗試了不成功的分層。我期待您的評論,我嘗試它,並且默認字體是不是Helvetica,它的Microsoft Sans Serif。對於字體系列我不知道要設置什麼。我只有快遞,瑞士,符號,times_roman,undefined和zapfdingbats。你提供的那些例子我不明白。我在rtf上找到了1250「{\\ rtf1 \\ ansi \\ ansicpg1250 \\ deff0 \\ deflang9242 {\\ fonttbl {\\ f0 \\ fnil \\ fcharset238 Microsoft Sans Serif;}} \ r \ n \\ viewkind4 \ \ uc1 \\ pard \\ f0 \\ fs17 \\ par \ r \ n – ReadyToWork 2014-09-02 11:00:13

+0

你爲什麼要重新發明輪子?許多開發人員在成功之前,只是通過嘗試從我寫的書中的示例:http://tinyurl.com/itextsharpIIA2C11如果你不明白這些例子,也許你應該讀這本書。您提到的任何字體(快遞,瑞士,符號等)都不支持CP1250。你需要提供一個字體程序,比如'.ttf'。這個例子顯示你可以在'c:/ windows/fonts'目錄下找到這樣一個文件。一個好的工匠不會責怪他的工具! – 2014-09-02 11:49:48