2015-10-30 4 views
10

मुझे पीडीएफ को हर जगह काम करने के साथ एक बहुत ही अजीब समस्या है, लेकिन प्रोड पर नहीं। डेवलपर और परीक्षण वातावरण समस्या के बिना काम कर रहे हैं, लेकिन प्रोड बस इसे संभाल नहीं सकता है। केवल एक ही बदलाव जो प्रोड पर हैं: पिछले युद्ध की तुलना में उच्च Grails संस्करण (2.1.0 ->2.3.8 [लेकिन यह परिवर्तन परीक्षण माहौल ~ 2 महीने पहले पेश किया गया था और तब सभी समस्याओं का समाधान किया गया था]) कुछ अपग्रेड किए गए प्लगइन के साथ, विशेष रूप सेपीडीएफ प्रस्तुत करना प्रोड पर्यावरण पर काम नहीं कर रहा है

compile ":rendering:0.4.3" 

करने के लिए बदल
compile ":rendering:1.0.0" 

स्टैकट्रेस मैं prod पर मिलता है:

java.lang.NullPointerException 
at org.xhtmlrenderer.swing.NaiveUserAgent.getBinaryResource(NaiveUserAgent.java:228) 
at org.xhtmlrenderer.pdf.ITextFontResolver.importFontFaces(ITextFontResolver.java:97) 
at org.xhtmlrenderer.pdf.ITextRenderer.setDocument(ITextRenderer.java:178) 
at org.xhtmlrenderer.pdf.ITextRenderer.setDocument(ITextRenderer.java:142) 
at grails.plugin.rendering.pdf.PdfRenderingService.doRender(PdfRenderingService.groovy:36) 
at grails.plugin.rendering.RenderingService.render(RenderingService.groovy:43) 
at grails.plugin.rendering.RenderingService.render(RenderingService.groovy:37) 
at grails.plugin.rendering.RenderingService.render(RenderingService.groovy:35) 
at grails.plugin.rendering.RenderingService.render(RenderingService.groovy:65) 
at GrailsMelodyGrailsPlugin$_closure4_closure16_closure17.doCall(GrailsMelodyGrailsPlugin.groovy:184) 
at RenderingGrailsPlugin$_closure3.doCall(RenderingGrailsPlugin.groovy:59) 
at com.my.app.ReportController$_closure8.doCall(ReportController.groovy:169) 
at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:200) 
at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63) 
at net.bull.javamelody.JspWrapper.invoke(JspWrapper.java:150) 
at net.bull.javamelody.JdbcWrapper$DelegatingInvocationHandler.invoke(JdbcWrapper.java:285) 
at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:198) 
at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:176) 

मेरेpdfs पैदा करने के लिएविधि (कुछ भी नहीं वास्तव में यहाँ हो रहा है और है, हाँ, pdfShow फ़ाइल एक अंडरस्कोर से शुरू होता है):

def generatePdf = { 
    if (!params.id) { 
     throw new IllegalArgumentException("PDF Generation: an instance identifier has not been passed.") 
    } 
    def reportInstance = Report.findById(params.id) 
    renderPdf(template: "pdfShow", model: [reportInstance: reportInstance], filename: reportInstance?.reportFilename + '.pdf') 
} 

मैं पहले से ही काफी कुछ शोध किया और संकेत मिले हैं कि यह फोंट में घोषित के साथ समस्या हो सकती है मिल गया है। सीएसएस फ़ाइल जो पीडीएफ टेम्पलेट द्वारा उपयोग की जाती है।

खैर, यह .css है:

@font-face { 
    src: url("../fonts/DejaVuSansCondensed.ttf"); 
    -fs-pdf-font-embed: embed; 
    -fs-pdf-font-encoding: Identity-H; 
} 

@font-face { 
    src: url(../fonts/DejaVuSansCondensed-Bold.ttf); 
    -fs-pdf-font-embed: embed; 
    -fs-pdf-font-encoding: Identity-H; 
} 

body { 
    font-family: "DejaVu Sans Condensed", Arial, sans-serif; 
} 

और फोंट दोनों परीक्षण और उत्पादन पर, कर रहे हैं। और अपना स्थान नहीं बदला।

मैं rendering प्लगइन 0.4.3 वापस करने के लिए पदावनति की कोशिश की है, लेकिन यह काम नहीं किया, नहीं उपलब्ध वर्गों के बारे में शिकायत:

BuildConfig.groovy

legacyResolve true 

अंदर grails.project.dependency.resolution { ... में

plugins\rendering-0.4.3\grails-app\services\grails\plugin\rendering\document\XhtmlDocumentService.groovy: 20: unable to resolve class org.xhtmlrenderer.resource.XMLResource 
(...)\plugin\rendering\pdf\PdfRenderingService.groovy: 25: unable to resolve class com.lowagie.text.pdf.BaseFont 
(...)\plugin\rendering\pdf\PdfRenderingService.groovy: 19: unable to resolve class org.xhtmlrenderer.pdf.ITextRenderer 
...and few others etc. 

सेटिंग भी नहीं था काम।

क्या आपको पता है कि क्या गलत हो सकता है?

+0

क्या आपने इसे सीएसएस में '@ font-face' अनुभागों के बिना उत्पादन में चलाने का प्रयास किया है? –

+0

@AshrafPurno अभी तक नहीं (मैं करूँगा), लेकिन अगर मुझे इस फ़ॉन्ट की ज़रूरत है और हमेशा बिना किसी समस्या के इसका इस्तेमाल किया जाए तो क्या होगा? –

+0

क्या कोई सीडीएन या अन्य कैशिंग तंत्र शामिल हैं? –

उत्तर

0

बात जो समस्या हल, Config.groovy करने के लिए एक पंक्ति जोड़कर था:

environments { 
    production { 
     (...) 
     grails.resources.processing.enabled = false 

हम test और development वातावरण में इस लाइन के लिए किया था, लेकिन इससे पहले, Grails के साथ 2.1.0 यह वैसे भी काम किया।

+0

इससे मेरी मदद नहीं हुई। मुझे एक त्वरित फिक्स के रूप में कस्टम फोंट का उपयोग न करने के लिए मजबूर किया गया था ... – kuceram

संबंधित मुद्दे