Ollie Glass से समाधान काम करने के लिए रह गए हैं क्योंकि PApplet/Applet
चेकों के निर्माता है कि क्या पर्यावरण नेतृत्वहीन है या नहीं, अर्थात -Djava.awt.headless=true
है।
तो पहले स्थान पर एक वैध वस्तु बनाने का कोई तरीका नहीं है।
इसके बजाय, सीधे अपना PGraphics
बनाएं। उदाहरण के लिए, एक PDF
PGraphics pdf = new PGraphicsPDF();
pdf.setPrimary(false);
pdf.setPath(filename);
pdf.setSize(sizeX, sizeY);
// pdf.setParent(new PApplet()); This is intentionally NOT called.
pdf.beginDraw();
// draw everything
pdf.dispose();
pdf.endDraw();
जोड़ना पाठ में सब कुछ आकर्षित करने के लिए अभी भी एक अपवाद फेंक जाएगा के बाद से अंतर्निहित PGraphics
अपने parent
(PApplet
) के लिए कुछ सहायक तरीकों कहता है। हालांकि, यह सेट नहीं किया गया है क्योंकि हमें पहले स्थान पर PApplet
बनाने की अनुमति नहीं है।
इन फ़ंक्शन कॉल से छुटकारा पाने का एक समाधान आपको PGraphicsPDF
का अपना संस्करण बना रहा है। उदाहरण के लिए
class MyPGraphicsPDF extends PGraphicsPDF{
@Override
public float textAscent() {
if (textFont == null) {
defaultFontOrDeath("textAscent");
}
Font font = (Font) textFont.getNative();
//if (font != null && (textFont.isStream() || hints[ENABLE_NATIVE_FONTS])) {
if (font != null) {
FontMetrics metrics = this.getFontMetrics(font);
return metrics.getAscent();
}
return super.textAscent();
}
@Override
public float textDescent() {
if (textFont == null) {
defaultFontOrDeath("textDescent");
}
Font font = (Font) textFont.getNative();
//if (font != null && (textFont.isStream() || hints[ENABLE_NATIVE_FONTS])) {
if (font != null) {
FontMetrics metrics = this.getFontMetrics(font);
return metrics.getDescent();
}
return super.textDescent();
}
public FontMetrics getFontMetrics(Font font) {
FontManager fm = FontManagerFactory.getInstance();
return sun.font.FontDesignMetrics.getMetrics(font);
}
}
textAscent()
और textDescent()
ना बुलाने की गैर मौजूदा parent
PApplet
से getFontMetrics(Font font)
के परिवर्तन के साथ PGraphics
से कोड की प्रतियां हैं। इसके बजाय दोनों तीसरे विधि पर रीडायरेक्ट करते हैं जो PApplet
की लापता सहायक विधि को java.awt.Component.getFontMetrics(Font font)
के थोड़ा छोटे संस्करण के रूप में दोहराता है।
उम्मीद है कि मदद करता है।
ड्राइंग बोर्ड के रूप में स्पष्ट रूप से फ़ाइल के लिए कॉल करते समय प्रसंस्करण का देशी हेडलेस संस्करण होना अच्छा लगेगा।
प्रसंस्करण.org पर यह 3 साल पुराना धागा कहता है कि पीजेए प्रसंस्करण के साथ संगत नहीं है: http://processing.org/discourse/yabb2/YaBB.pl?num=1193317878। इस पर कोई विचार है कि क्या यह प्रगति पर है या नहीं? – Maciek
जब मुझे यह समस्या हुई तो मैंने बस बुलेट को थोड़ा सा किया और एक्स सर्वर स्थापित किया। यह सबसे तेज़ और सबसे संगत है - और स्थिति को पहले से कहीं अधिक कठिन क्यों बनाते हैं? मेरी कंपनी में हमने एक साल 'शुद्ध जावा' समाधान बनाने की कोशिश की, जिसे हमने खिड़की से बाहर फेंक दिया क्योंकि यह सभी कोने के मामलों से निपट नहीं सका। आपको नौकरी के लिए सही उपकरण का उपयोग करना होगा। मेरा सुझाव है कि यदि आप बॉक्स पर ग्राफिक्स कार्ड नहीं रखते हैं तो आप एक्स, एक्सवीएफबी के लिए जाते हैं। –
Xvfb हमारे लिनक्स सर्वर के लिए ठीक होगा, लेकिन हमारे कुछ विकास बॉक्स विंडोज-आधारित हैं। क्या सिग्विन पर एक्सवीएफबी चलाने के लिए संभव है? – Maciek