[ 
https://issues.apache.org/jira/browse/PDFBOX-4809?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17079475#comment-17079475
 ] 

Tilman Hausherr edited comment on PDFBOX-4809 at 4/9/20, 3:20 PM:
------------------------------------------------------------------

Hi Tilman,

Sorry for the last comment being unreadable. I wrote in notepad and copied it 
here.

Coming to your question about close(), I close the PDPageContentStream when I 
finish writing a page. Then we create a new PDPageContentStream after adding 
new page.


{code:java}
        private PDPageContentStream newPage(PDPageContentStream contentStream, 
PDDocument document, RmsReceiptDetail receiptDetail) {
                RetailLogger.enterScope(TRACE_TAG + " newPage()");
                try {
                        contentStream.close();
                        PDRectangle rec = new PDRectangle(218, 808);
                        PDPage page = new PDPage(rec);
                        document.addPage(page);
                        contentStream = new PDPageContentStream(document,page, 
AppendMode.APPEND,true);
        
                        receiptDetail.setTexty(page.getMediaBox().getHeight() - 
lineSpacing);
                        //Return type of this method is modified because we 
have last line issue
                }catch(Exception e){
                        RetailLogger.error("Exception in "+ TRACE_TAG+" 
newPage() --> " + e.getMessage(), e);
                }
                RetailLogger.exitScope(TRACE_TAG + " newPage()");
                return contentStream;
        }
{code}


Not sure about "try-with-resources". 

About your guess, if I would have missed the close(), then it should happen 
consistently right. But this doesn't happen all the time. It never happened in 
our development or test environment where logging in debug level. In production 
only it happened and in production we have error logging level. 


was (Author: arjun2k3407):
Hi Tilman,

Sorry for the last comment being unreadable. I wrote in notepad and copied it 
here.

Coming to your question about close(), I close the PDPageContentStream when I 
finish writing a page. Then we create a new PDPageContentStream after adding 
new page.

        private PDPageContentStream newPage(PDPageContentStream contentStream, 
PDDocument document, RmsReceiptDetail receiptDetail) {
                RetailLogger.enterScope(TRACE_TAG + " newPage()");
                try {
                        contentStream.close();
                        PDRectangle rec = new PDRectangle(218, 808);
                        PDPage page = new PDPage(rec);
                        document.addPage(page);
                        contentStream = new PDPageContentStream(document,page, 
AppendMode.APPEND,true);
        
                        receiptDetail.setTexty(page.getMediaBox().getHeight() - 
lineSpacing);
                        //Return type of this method is modified because we 
have last line issue
                }catch(Exception e){
                        RetailLogger.error("Exception in "+ TRACE_TAG+" 
newPage() --> " + e.getMessage(), e);
                }
                RetailLogger.exitScope(TRACE_TAG + " newPage()");
                return contentStream;
        }

Not sure about "try-with-resources". 

About your guess, if I would have missed the close(), then it should happen 
consistently right. But this doesn't happen all the time. It never happened in 
our development or test environment where logging in debug level. In production 
only it happened and in production we have error logging level. 

> NullPointerException in PDPageContentStream writeOperator
> ---------------------------------------------------------
>
>                 Key: PDFBOX-4809
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-4809
>             Project: PDFBox
>          Issue Type: Bug
>          Components: PDModel
>    Affects Versions: 2.0.18
>            Reporter: Arjun Prakash Babu
>            Priority: Major
>
> Hi Team,
>  
> While creating PDF PDPageContentStream.beginText() suddenly in the middle of 
> creation pdfbox starts giving NullpointerException. It is random. Not always 
> happens. We don't have a single occurrence in DEV environment. But in 
> production we have few occurrence. 
> Error stack trace:
> java.lang.NullPointerException: nulljava.lang.NullPointerException: null at 
> org.apache.pdfbox.pdmodel.PDPageContentStream.writeOperator(PDPageContentStream.java:2509)
>  ~[pdfbox-2.0.18.jar:2.0.18] at 
> org.apache.pdfbox.pdmodel.PDPageContentStream.beginText(PDPageContentStream.java:370)
>  ~[pdfbox-2.0.18.jar:2.0.18] at 
> com.sprint.rhs.web.service.TransactionReceiptsPDFGeneratorService.quesAnsRightAlign(TransactionReceiptsPDFGeneratorService.java:1496)
>  ~[classes:?] at 
> com.sprint.rhs.web.service.TransactionReceiptsPDFGeneratorService.generateDetailsPDF(TransactionReceiptsPDFGeneratorService.java:1303)
>  ~[classes:?] at 
> com.sprint.rhs.web.service.TransactionReceiptsPDFGeneratorService.generateReceiptDetailsPDF(TransactionReceiptsPDFGeneratorService.java:272)
>  ~[classes:?] at 
> com.sprint.rhs.web.service.TransactionReceiptsPDFGeneratorService.generateTransactionReceiptPDFPage(TransactionReceiptsPDFGeneratorService.java:97)
>  ~[classes:?] at 
> com.sprint.rhs.web.service.RmsReceiptService.generateReceiptPdf(RmsReceiptService.java:3113)
>  ~[classes:?] at 
> com.sprint.rhs.web.service.RmsReceiptService.saveTransactionReceipt(RmsReceiptService.java:3078)
>  ~[classes:?] at 
> com.sprint.rhs.web.service.RmsReceiptService.generateRmsReceipt(RmsReceiptService.java:3049)
>  ~[classes:?] at 
> com.sprint.rhs.web.service.TenderSaveFunctionalityService.validateEmailAttachmentFromRMS(TenderSaveFunctionalityService.java:3479)
>  ~[classes:?] at 
> com.sprint.rhs.web.controller.TenderTransactionController.sendEmail(TenderTransactionController.java:4110)
>  ~[classes:?] at sun.reflect.GeneratedMethodAccessor2818.invoke(Unknown 
> Source) ~[?:?] at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>  ~[?:1.8.0_222] at java.lang.reflect.Method.invoke(Method.java:498) 
> ~[?:1.8.0_222] at 
> org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
>  ~[spring-web-4.3.6.RELEASE.jar:4.3.6.RELEASE] at 
> org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
>  ~[spring-web-4.3.6.RELEASE.jar:4.3.6.RELEASE] at 
> org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:116)
>  ~[spring-webmvc-4.3.6.RELEASE.jar:4.3.6.RELEASE] at 
> org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
>  ~[spring-webmvc-4.3.6.RELEASE.jar:4.3.6.RELEASE] at 
> org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
>  ~[spring-webmvc-4.3.6.RELEASE.jar:4.3.6.RELEASE] at 
> org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
>  ~[spring-webmvc-4.3.6.RELEASE.jar:4.3.6.RELEASE] at 
> org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)
>  ~[spring-webmvc-4.3.6.RELEASE.jar:4.3.6.RELEASE] at 
> org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)
>  ~[spring-webmvc-4.3.6.RELEASE.jar:4.3.6.RELEASE] at 
> org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
>  ~[spring-webmvc-4.3.6.RELEASE.jar:4.3.6.RELEASE] at 
> org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
>  ~[spring-webmvc-4.3.6.RELEASE.jar:4.3.6.RELEASE] at 
> javax.servlet.http.HttpServlet.service(HttpServlet.java:686) 
> ~[jboss-servlet-api_4.0_spec-1.0.0.Final-redhat-1.jar!/:1.0.0.Final-redhat-1] 
> at 
> org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
>  ~[spring-webmvc-4.3.6.RELEASE.jar:4.3.6.RELEASE] at 
> javax.servlet.http.HttpServlet.service(HttpServlet.java:791) 
> ~[jboss-servlet-api_4.0_spec-1.0.0.Final-redhat-1.jar!/:1.0.0.Final-redhat-1] 
> at 
> io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
>  ~[undertow-servlet-2.0.28.SP1-redhat-00001.jar!/:2.0.28.SP1-redhat-00001] at 
> io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
>  ~[undertow-servlet-2.0.28.SP1-redhat-00001.jar!/:2.0.28.SP1-redhat-00001] at 
> io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
>  ~[undertow-servlet-2.0.28.SP1-redhat-00001.jar!/:2.0.28.SP1-redhat-00001] at 
> io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
>  ~[undertow-servlet-2.0.28.SP1-redhat-00001.jar!/:2.0.28.SP1-redhat-00001] at 
> org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
>  ~[?:?] at 
> io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
>  ~[undertow-core-2.0.28.SP1-redhat-00001.jar!/:2.0.28.SP1-redhat-00001] at 
> io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)
>  ~[undertow-servlet-2.0.28.SP1-redhat-00001.jar!/:2.0.28.SP1-redhat-00001] at 
> io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132)
>  ~[undertow-servlet-2.0.28.SP1-redhat-00001.jar!/:2.0.28.SP1-redhat-00001] at 
> io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
>  ~[undertow-servlet-2.0.28.SP1-redhat-00001.jar!/:2.0.28.SP1-redhat-00001] at 
> io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
>  ~[undertow-core-2.0.28.SP1-redhat-00001.jar!/:2.0.28.SP1-redhat-00001] at 
> io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
>  ~[undertow-core-2.0.28.SP1-redhat-00001.jar!/:2.0.28.SP1-redhat-00001] at 
> io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
>  ~[undertow-servlet-2.0.28.SP1-redhat-00001.jar!/:2.0.28.SP1-redhat-00001] at 
> io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
>  ~[undertow-core-2.0.28.SP1-redhat-00001.jar!/:2.0.28.SP1-redhat-00001] at 
> io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
>  ~[undertow-servlet-2.0.28.SP1-redhat-00001.jar!/:2.0.28.SP1-redhat-00001] at 
> io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
>  ~[undertow-core-2.0.28.SP1-redhat-00001.jar!/:2.0.28.SP1-redhat-00001] at 
> io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
>  ~[undertow-core-2.0.28.SP1-redhat-00001.jar!/:2.0.28.SP1-redhat-00001] at 
> io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
>  ~[undertow-core-2.0.28.SP1-redhat-00001.jar!/:2.0.28.SP1-redhat-00001] at 
> org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
>  ~[?:?] at 
> io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
>  ~[undertow-core-2.0.28.SP1-redhat-00001.jar!/:2.0.28.SP1-redhat-00001] at 
> org.wildfly.mod_cluster.undertow.metric.RunningRequestsHttpHandler.handleRequest(RunningRequestsHttpHandler.java:65)
>  ~[?:?] at 
> org.wildfly.extension.undertow.deployment.GlobalRequestControllerHandler.handleRequest(GlobalRequestControllerHandler.java:68)
>  ~[?:?] at 
> io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
>  ~[undertow-core-2.0.28.SP1-redhat-00001.jar!/:2.0.28.SP1-redhat-00001] at 
> io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:269)
>  ~[undertow-servlet-2.0.28.SP1-redhat-00001.jar!/:2.0.28.SP1-redhat-00001] at 
> io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:78)
>  ~[undertow-servlet-2.0.28.SP1-redhat-00001.jar!/:2.0.28.SP1-redhat-00001] at 
> io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:133)
>  ~[undertow-servlet-2.0.28.SP1-redhat-00001.jar!/:2.0.28.SP1-redhat-00001] at 
> io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:130)
>  ~[undertow-servlet-2.0.28.SP1-redhat-00001.jar!/:2.0.28.SP1-redhat-00001] at 
> io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
>  ~[undertow-servlet-2.0.28.SP1-redhat-00001.jar!/:2.0.28.SP1-redhat-00001] at 
> io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
>  ~[undertow-servlet-2.0.28.SP1-redhat-00001.jar!/:2.0.28.SP1-redhat-00001] at 
> org.wildfly.extension.undertow.security.SecurityContextThreadSetupAction.lambda$create$0(SecurityContextThreadSetupAction.java:105)
>  ~[?:?] at 
> org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1504)
>  ~[?:?] at 
> org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1504)
>  ~[?:?] at 
> org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1504)
>  ~[?:?] at 
> org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1504)
>  ~[?:?] at 
> io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:249)
>  ~[undertow-servlet-2.0.28.SP1-redhat-00001.jar!/:2.0.28.SP1-redhat-00001] at 
> io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:78)
>  ~[undertow-servlet-2.0.28.SP1-redhat-00001.jar!/:2.0.28.SP1-redhat-00001] at 
> io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:99)
>  ~[undertow-servlet-2.0.28.SP1-redhat-00001.jar!/:2.0.28.SP1-redhat-00001] at 
> io.undertow.server.Connectors.executeRootHandler(Connectors.java:376) 
> ~[undertow-core-2.0.28.SP1-redhat-00001.jar!/:2.0.28.SP1-redhat-00001] at 
> io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830) 
> ~[undertow-core-2.0.28.SP1-redhat-00001.jar!/:2.0.28.SP1-redhat-00001] at 
> org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
>  ~[?:?] at 
> org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1985)
>  ~[?:?] at 
> org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1487)
>  ~[?:?] at 
> org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1378)
>  ~[?:?] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_222]



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@pdfbox.apache.org
For additional commands, e-mail: dev-h...@pdfbox.apache.org

Reply via email to