2012-11-21 42 views
5

में दिखाई नहीं दे रहा है IText लाइब्रेरी का उपयोग करके अतिरिक्त जानकारी के साथ एक मौजूदा पीडीएफ फ़ाइल मुद्रित कर रहा हूं। अतिरिक्त जानकारी टेक्स्ट है जो एक कस्टम टीटीएफ फ़ॉन्ट में प्रस्तुत किया जाना चाहिए।iText एम्बेडेड ttf फ़ॉन्ट एडोब रीडर

समस्या यह है कि टेक्स्ट केवल एडोब रीडर में दिखाई नहीं दे रहा है। अन्य पीडीएफ दर्शक, जैसे उबंटू में डिफ़ॉल्ट ईविन्स रीडर और Google ऑनलाइन पीडीएफ रीडर कस्टम एम्बेडेड फ़ॉन्ट में मुद्रित टेक्स्ट को ठीक से प्रस्तुत करते हैं।

मैं ऐसे CP1251, BaseFont.Identity_H, ... के रूप में एक से अधिक एन्कोडिंग की कोशिश की

कोड जहां जादू होता है:

PdfReader pdfReader = new PdfReader(new FileInputStream(inputPdf)); 
PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileOutputStream("stamped.pdf")); 
PdfContentByte canvas = pdfStamper.getOverContent(1); 
String text = "The stamp"; 
BaseFont bf = BaseFont.createFont("assign.ttf", "Cp1251",BaseFont.EMBEDDED); 
canvas.beginText(); 
canvas.setColorFill(BaseColor.BLUE); 
canvas.setFontAndSize(bf, 13); 
canvas.moveText(310, 600); 
canvas.showText(text); 
pdfStamper.close(); 
+0

जब आप दस्तावेज़> गुण पर जाते हैं और फ़ॉन्ट टैब खोलते हैं, तो आप क्या देखते हैं? क्या आप फ़ॉन्ट देखते हैं? –

+0

मुझे समस्या दिखाई देती है: आप शायद iText के अप्रचलित संस्करण का उपयोग कर रहे हैं! –

उत्तर

5

आपने एक सिंटैक्स समस्या है। पीडीएफ में टेक्स्ट स्टेटस BT और ET के साथ चिह्नित है। इन ऑपरेटरों को beginText() और endText() विधियों का उपयोग करके जोड़ा जाता है। आपके पास BT है, लेकिन ET नहीं है। एडोब रीडर अन्य दर्शकों की तुलना में अधिक सख्त है (यही कारण है कि मैं अन्य सभी दर्शकों पर एडोब रीडर पसंद करता हूं: लोगों को कोड लिखते समय वाक्यविन्यास का सम्मान करना चाहिए)।

, इससे पहले कि pdfStamper.close();

canvas.endText(); 

बेहतर निम्नलिखित पंक्ति जोड़ अभी तक पढ़ा मेरी book और आपको पता चल जाएगा कि आप ColumnText.showTextAligned() का उपयोग करके अपने कोड की जटिलता को कम कर सकते हैं।

+1

धन्यवाद ब्रूनो, एंड मार्कर ने एडोब रीडर पर इस मुद्दे को हल किया। भयानक iText लाइब्रेरी के लिए भी kudos। – nkr1pt

+0

उत्तर स्वीकार करने के लिए धन्यवाद: इससे मुझे 2000+ प्रतिष्ठा मिली ;-) –