[
https://issues.apache.org/jira/browse/PDFBOX-4809?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17078913#comment-17078913
]
Arjun Prakash Babu commented on PDFBOX-4809:
--------------------------------------------
Hi Tilman,Hi Tilman,
I create PDPageContentStream in generateTransactionReceiptPDFPage() and pass
that to called methods downstream. In the code we call beginText() many times
before we enter quesAnsRightAlign() where we got nullpointer.
This is how we create PDPageContentStream object. receiptDetail.setTexty(800f);
PDRectangle rec = new PDRectangle(218, 808); PDPage page = new PDPage(rec);
contentStream = new PDPageContentStream(document, page);
Code snippet where we call quesAnsRightAlign(). You can see we call beginText()
method before entering to that method and it worked fine. Thats why I dont
understand why it fails randomly. It is like once in 500 transaction it fails.
contentStream.beginText(); contentStream.setFont(PDType1Font.HELVETICA,
fontSize); receiptDetail.setTexty(receiptDetail.getTexty()-lineSpacing);
contentStream.newLineAtOffset(textx+10, receiptDetail.getTexty());
contentStream.showText("Sold by: "+" "+soldby); contentStream.endText(); //DDF
if(RetailUtils.isNotNull(devicesDetail.getSku()) &&
RetailConstants.GIVEBACK.equalsIgnoreCase(devicesDetail.getSku())) \{
if(RetailUtils.isListNotNull(devicesDetail.getQestionAnsDetailsList())) {
if(receiptDetail.getTexty() <10) { contentStream = newPage(contentStream,
document, receiptDetail); } contentStream.beginText();
contentStream.setFont(PDType1Font.HELVETICA_BOLD, fontSize);
receiptDetail.setTexty(receiptDetail.getTexty()-lineSpacing);
contentStream.newLineAtOffset(textx, receiptDetail.getTexty());
contentStream.showText("Device Evaluation:"); contentStream.endText();
for(QestionAnsDetails qna : devicesDetail.getQestionAnsDetailsList()) \{
receiptDetail.setTexty(receiptDetail.getTexty()-lineSpacing);
quesAnsRightAlign( qna.getQuest(), qna.getAnswer(), receiptDetail,
contentStream, document); } } }
public PDPageContentStream quesAnsRightAlign(String txtRight, String txtLeft,
RmsReceiptDetail receiptDetail, PDPageContentStream contentStream, PDDocument
document) \{ RetailLogger.enterScope(TRACE_TAG + " quesAnsRightAlign()"); try {
if(receiptDetail.getTexty() <10) { contentStream = newPage(contentStream,
document, receiptDetail); } contentStream.beginText();
contentStream.setFont(PDType1Font.HELVETICA, fontSize); //float text_width1 =
(PDType1Font.HELVETICA.getStringWidth(txtRight) / 1000.0f) * fontSize;
contentStream.newLineAtOffset(textx+75, receiptDetail.getTexty());
contentStream.showText(txtRight); contentStream.endText();
contentStream.beginText(); contentStream.setFont(PDType1Font.HELVETICA,
fontSize); float text_width = (PDType1Font.HELVETICA.getStringWidth(txtLeft) /
1000.0f) * fontSize; contentStream.newLineAtOffset(receiptWidth - (text_width+
textx), receiptDetail.getTexty());//Migrating to PDF Print fix
contentStream.showText(txtLeft); contentStream.endText(); }catch(Exception e)\{
RetailLogger.error("Exception in "+ TRACE_TAG+" quesAnsRightAlign() --> " +
e.getMessage(), e); } RetailLogger.exitScope(TRACE_TAG + "
quesAnsRightAlign()"); return contentStream; }
In the next sample log I got, it happened at a different place. So its random.
java.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.generateDetailsPDF(TransactionReceiptsPDFGeneratorService.java:1187)
~[classes:?] Thanks & Regards,Arjun
> 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: [email protected]
For additional commands, e-mail: [email protected]