java - How to correctly print out a hard copy of a JTextPane with "text/rtf" content? -


मैं कुछ सरल आरटीएफ-प्रारूपित पाठ को एक लेजर प्रिंटर में मुद्रित करने का प्रयास कर रहा हूं परिणामस्वरूप एक सॉफ्टवेयर पीडीएफ प्रिंटर (फ्री पीडीएफ XP) पर परिणाम ठीक दिखता है, लेकिन पाठ में वास्तविक प्रारूप के बीच उचित स्थान नहीं है, जब एक असली प्रिंटर के लिए प्रिंट होता है।

संपादित करें: मैंने एक उदाहरण आउटपुट अपलोड किया है (नीचे स्कैन प्रिंटआउट है)

यह मुझे लगता है कि वहां RTF कोड के अविभाज्य भागों को चित्रित करने के लिए ग्राफिक्स ऑब्जेक्ट के साथ एक समस्या है। जैसे कि यह समझ नहीं सका कि प्रत्येक भाग को सही तरीके से कैसे रखा जाए (एक्स समन्वय)।

क्या मुझे कुछ प्रकार के समन्वय प्रणाली अनुवाद प्रदान करना है?

सरल परीक्षण कोड इस्तेमाल किया:

<पूर्व> आयात करें java.awt.BorderLayout; आयात java.awt.Graphics; आयात करें java.awt.Graphics2D; आयात करें java.awt.print.PageFormat; आयात करें java.awt.print.Printable; आयात करें java.awt.print.PrinterException; आयात करें java.awt.print.PrinterJob; आयात javax.swing.JFrame; आयात javax.swing.JTextPane; क्लास MyTextComp JTextPane लागू करता है प्रिंट करने योग्य {सार्वजनिक MyTextComp () {setContentType ("text / rtf"); SetText ("{\\ rtf1 HelloWorld! \\ par {\\ i}} स्वरूपित है {\\ b text}।}"); } सार्वजनिक शून्य पेंटघटक (ग्राफिक्स जी) {सुपरपिंटकंपोनेंट (जी); } सार्वजनिक एंट प्रिंट (ग्राफिक्स जी, पेज फॉर्मेट पीएफ, इंट पिंडेक्स) {if (pIndex & gt; 0) रिटर्न Printable.NO_SUCH_PAGE; ग्राफिक्स 2 डी जी 2 डी = (ग्राफिक्स 2 डी) जी; G2d.translate (pf.getImgeableX (), pf.getImageableY ()); / * अब विंडो और उसकी दृश्य सामग्री मुद्रित करें * / printAll (g); रिटर्न प्रिंट करने योग्य। PAGE_EXISTS; }} सार्वजनिक वर्ग TextCompPrint JFrame को बढ़ाता है {सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग [] आर्ग्स) PrinterException फेंकता है {TextCompPrint myFrame = new TextCompPrint (); MyTextComp myComp = नया MyTextComp (); MyFrame.add (myComp, BorderLayout.CENTER); MyFrame.setSize (200, 200); myFrame.setVisible (सही); PrinterJob pj = PrinterJob.getPrinterJob (); pj.setPrintable (myComp); pj.print (); }}

नरक में आपका स्वागत है। थोड़ी देर रहें: -)

जावा प्रिंटर के लिए पाठ को लेआउट करने के लिए कुछ जटिल कोड का उपयोग करता है (इसलिए यह बोल्ड फ़ॉन्ट के साथ print "text" नहीं भेजता है < > टाइम्स-बोल्ड का चयन करें , कर्सर को एक्स, वाई , पत्र "टी" ड्रा करें , x2 पर जाएं, y , "ई", ... "

अपनी समस्या यह है कि जावा और आपके प्रिंटर के अलग-अलग विचार हैं कि वर्ण कितने बड़े हैं। यदि आप बारीकी से देखते हैं, तो बोल्ड चेहरे का पाठ < कोड> टेक्स्ट थोड़ा सा अलग है।

आप इसे कैसे हल कर सकते हैं? जब तक यह काम करता है एक अलग फ़ॉन्ट का प्रयास करें.मैं जावा प्रिंट एपीआई के साथ आउटलाइन फोंट डाउनलोड करने का कोई तरीका नहीं जानता।

या पीडीएफ खुद को बनाने के लिए उपयोग करें।

[संपादित करें] जावा एक डीटीपी प्रणाली नहीं है। प्रिंटिंग समर्थन सबसे कम है।

यदि आपको अधिक आवश्यकता है, तो ओपनऑफिस का इस्तेमाल आरटीएफ से पीडीएफ प्रिंटिंग (देखें और) के लिए करें।

या।


Comments