2011-05-24 14 views
13

मैं ढूँढने में सक्षम नहीं गूगल पर एक बहुत कोशिश की है, लेकिन ..itextsharp का उपयोग कर एक पीडीएफ फ़ाइल में यूटीएफ -8 अक्षरों को कैसे लिखें?

किसी भी मदद की सराहना की है ..

Plz मदद ..

कृपया नीचे दिए गए कोड को खोजने के: -

protected void Page_Load(object sender, EventArgs e) 
    { 
     StreamReader read = new StreamReader(@"D:\queryUnicode.txt", Encoding.Unicode); 
     string str = read.ReadToEnd(); 

     Paragraph para = new Paragraph(str); 

     FileStream file = new FileStream(@"D:\Query.pdf",FileMode.Create); 

     Document pdfDoc = new Document(); 
     PdfWriter writer = PdfWriter.GetInstance(pdfDoc, file); 

     pdfDoc.Open(); 
     pdfDoc.Add(para); 
     pdfDoc.Close(); 

     Response.Write("Pdf file generated"); 
    } 
+0

आप क्या समस्याएं देख रहे हैं? यदि इसमें वर्ण गुम हैं तो यहां एक नज़र डालें: http://stackoverflow.com/questions/1322303/html-to-pdf-some-characters-are-missing-itextsharp – Nick

+0

हां, वर्ण पीडीएफ में गायब हैं, लेकिन मेरे पास है पहले से ही देखा और इस लिंक को आजमाया, जब मैंने itextsharp के स्रोत कोड को डाउनलोड किया, तो इसमें 'FactorySettings.cs' फ़ाइल नहीं थी। और, वह "arial.ttf" का उपयोग कर रहा है, मुझे यूटीएफ -8 अक्षर चाहिए। – teenup

+0

असल में, जिस नोटपैड से मैं स्ट्रिंग ला रहा था उसे एएनएसआई कोड के रूप में सहेजा गया था, जब मैंने इसे "यूटीएफ -8" कोड के रूप में बदल दिया, तो अब वे वर्ण पीडीएफ में 'æ' के रूप में दिखाई दे रहे हैं। – teenup

उत्तर

19

क्या आप एचटीएमएल को पीडीएफ में परिवर्तित कर रहे हैं? यदि ऐसा है, तो आपको ध्यान रखना चाहिए कि अन्यथा कभी भी ध्यान न दें। एकमात्र कारण मैं पूछता हूं कि æ प्राप्त करने के बारे में आपकी आखिरी टिप्पणी मुझे यह सोचती है। कभी कभी जब लोग कहते हैं iTextSharp 5 polish character

इसके अलावा, "यूनिकोड" वे वास्तव में क्या करने के लिए कोशिश कर रहे हैं एक पीडीएफ में विंगडिंग्स जैसे प्रतीकों प्राप्त करने के लिए है: आप कर रहे हैं, इस पोस्ट की जाँच करें। यदि आपका मतलब है कि इस पोस्ट को देखें और जानें कि यूनिकोड और विंगडिंग प्रतीक वास्तव में संबंधित नहीं हैं। Unicode symbols in iTextSharp

यहां एक पूर्ण कामकाजी उदाहरण है जो यूनिकोड वर्ण लिखने के दो तरीकों का उपयोग करता है, एक चरित्र का उपयोग करके और सी # एस्केप अनुक्रम का उपयोग करके। अपनी फ़ाइल को ऐसे प्रारूप में सहेजना सुनिश्चित करें जो विस्तृत वर्णों का समर्थन करता हो। यह नमूना iTextSharp 5.0.5 का उपयोग करता है।

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using iTextSharp.text; 
using iTextSharp.text.pdf; 
using System.IO; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      //Create our document object 
      Document Doc = new Document(PageSize.LETTER); 

      //Create our file stream 
      using (FileStream fs = new FileStream(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Test.pdf"), FileMode.Create, FileAccess.Write, FileShare.Read)) 
      { 
       //Bind PDF writer to document and stream 
       PdfWriter writer = PdfWriter.GetInstance(Doc, fs); 

       //Open document for writing 
       Doc.Open(); 

       //Add a page 
       Doc.NewPage(); 

       //Full path to the Unicode Arial file 
       string ARIALUNI_TFF = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "ARIALUNI.TTF"); 

       //Create a base font object making sure to specify IDENTITY-H 
       BaseFont bf = BaseFont.CreateFont(ARIALUNI_TFF, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); 

       //Create a specific font object 
       Font f = new Font(bf, 12, Font.NORMAL); 

       //Write some text, the last character is 0x0278 - LATIN SMALL LETTER PHI 
       Doc.Add(new Phrase("This is a test ɸ", f)); 

       //Write some more text, the last character is 0x0682 - ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE 
       Doc.Add(new Phrase("Hello\u0682", f)); 

       //Close the PDF 
       Doc.Close(); 
      } 
     } 
    } 
} 

जब iTextSharp के साथ काम कर आप यकीन है कि तुम कि यूनिकोड कोड अंक है कि आप उपयोग करना चाहते हैं का समर्थन करता है एक फ़ॉन्ट उपयोग कर रहे हैं करने के लिए है। अपने फ़ॉन्ट का उपयोग करते समय आपको IDENTITY-H निर्दिष्ट करने की भी आवश्यकता है। मुझे पूरी तरह से पता नहीं है इसका मतलब क्या है लेकिन इसके बारे में कुछ बात यहां है: iTextSharp international text

+0

@ क्रिस, आपके द्वारा लिखे गए अक्षर i.e. ɸ और \ u0682 सही आ रहे हैं लेकिन मेरी फ़ाइल में वर्ण अभी भी कोड फ़ॉर्म में आ रहे हैं। जैसे कैरेक्टर 'æ'' æ 'के रूप में आ रहा है, 'ø'' ø 'के रूप में आ रहा है। ये ग्रिड व्यू में वेब पेज पर ठीक आ रहे हैं और मैंने प्रतिक्रिया सामग्री प्रकार में यूटीएफ -8 का उपयोग किया है। – teenup

+0

@Chris, अगर मैं कोड का उपयोग कर इन वर्णों को लिखता हूं i'e 'नया वाक्यांश ("æ ø å", फ़ॉन्ट)', तो वे ठीक आते हैं। लेकिन मैं यूटीएफ 8 एन्कोडेड के रूप में सहेजी गई एक टेक्स्ट फ़ाइल से पाठ ला रहा हूं, इसे स्ट्रीमराइडर का उपयोग करके स्ट्रिंग में परिवर्तित कर रहा हूं और फिर इस स्ट्रिंग को 'वाक्यांश निर्माता' में भेज रहा हूं। – teenup

+0

@ पुनीत दुदेजा, आप एक ग्रिडव्यू और एक टेक्स्ट फ़ाइल के बारे में बात कर रहे हैं, जिसके साथ आप काम कर रहे हैं? ये दो अलग-अलग चीजें हैं जिन्हें आपको अपने प्रश्न में आगे बताने की आवश्यकता है। टेक्स्ट फ़ाइल के लिए, क्या आप सुनिश्चित हैं कि इसके यूटीएफ -8 एन्कोड किए गए हैं (आपने इसे हेक्स संपादक के साथ चेक किया है)? आप टेक्स्ट फ़ाइल कैसे ला रहे हैं? फाइल सिस्टम या वेब? ग्रिडव्यू के लिए, आप इसे कैसे ला रहे हैं? कृपया अपनी पोस्ट को कुछ कोड के साथ संपादित करें ताकि हम आपकी मदद कर सकें। –