java.lang.NullPointerException: Cannot invoke "com.aspose.words.zzYM9.zzWjR()" because the return value of "com.aspose.words.zzby.zzQy()" is null
at com.aspose.words.zzZ4S.zzQy(Unknown Source)
at com.aspose.words.zzWdC$zzoU.zzYms(Unknown Source)
at com.aspose.words.zzWdC.zzqt(Unknown Source)
at com.aspose.words.zzWdC.zzYBs(Unknown Source)
at com.aspose.words.zzX7M.zzYms(Unknown Source)
at com.aspose.words.zzX7M.zzZkr(Unknown Source)
at com.aspose.words.zzXwt.zzXnK(Unknown Source)
at com.aspose.words.zzXwt.zzVZ8(Unknown Source)
at com.aspose.words.zzZSC.zzYms(Unknown Source)
at com.aspose.words.zzZSC.zzY6i(Unknown Source)
at com.aspose.words.zzZSC.zzoU(Unknown Source)
at com.aspose.words.zzXg1.zzYAO(Unknown Source)
at com.aspose.words.zzXg1.zzoU(Unknown Source)
at com.aspose.words.zzXae.zzZVQ(Unknown Source)
at com.aspose.words.zzXae.zzY6i(Unknown Source)
at com.aspose.words.zzXae.zzYms(Unknown Source)
at com.aspose.words.zzhL.zzoU(Unknown Source)
at com.aspose.words.zz3r.zzF5(Unknown Source)
at com.aspose.words.zzXg1.zzZnB(Unknown Source)
at com.aspose.words.zzXg1.zzoU(Unknown Source)
at com.aspose.words.zzXae.zzZVQ(Unknown Source)
at com.aspose.words.zzXae.zzY6i(Unknown Source)
at com.aspose.words.zzXae.zzYms(Unknown Source)
at com.aspose.words.zzXXC.zzXqU(Unknown Source)
at com.aspose.words.zzXXC.zzoU(Unknown Source)
at com.aspose.words.zzXXC.zzYms(Unknown Source)
at com.aspose.words.zzZmx.zzVZ8(Unknown Source)
at com.aspose.words.zzZmx.zzqt(Unknown Source)
at com.aspose.words.zzZmx.zzWCY(Unknown Source)
at com.aspose.words.zzZmx.zzYTQ(Unknown Source)
at com.aspose.words.zzXvL.zzYTQ(Unknown Source)
at com.aspose.words.zzZBz.zzoU(Unknown Source)
at com.aspose.words.zzY1j.zzXyJ(Unknown Source)
at com.aspose.words.zzZiR.zzZYo(Unknown Source)
at com.aspose.words.Document.updatePageLayout(Unknown Source)
at com.aspose.words.LayoutCollector.zzWoj(Unknown Source)
at com.aspose.words.LayoutCollector.getStartPageIndex(Unknown Source)
at com.aspose.words.zzXsJ.zzWM(Unknown Source)
at com.aspose.words.zzXsJ.zzXNB(Unknown Source)
at com.aspose.words.Document.removeBlankPages(Unknown Source)
at cn.df2680.aihomework.service.impl.AnswerSheetUnitServiceImpl.convertDotHtmlToPdf(AnswerSheetUnitServiceImpl.java:383)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:351)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:713)
at cn.df2680.aihomework.service.impl.AnswerSheetUnitServiceImpl$$SpringCGLIB$$0.convertDotHtmlToPdf(<generated>)
at cn.df2680.aihomework.controller.AnswerSheetController.createDotAnswerSheetUnit(AnswerSheetController.java:261)
at cn.df2680.aihomework.controller.AnswerSheetController.createAnswerSheetByPaper(AnswerSheetController.java:230)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:351)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:765)
at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:58)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:173)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:765)
at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:89)
at cn.df2680.aihomework.aop.IdempotentAspect.executeWithIdempotentCheck(IdempotentAspect.java:78)
at cn.df2680.aihomework.aop.IdempotentAspect.aroundIdempotent(IdempotentAspect.java:46)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:637)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:627)
at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:71)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:173)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:765)
at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:89)
at cn.df2680.aihomework.aop.CountTimeAop.around(CountTimeAop.java:30)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:637)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:627)
at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:71)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:173)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:765)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:385)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:765)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:765)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:717)
at cn.df2680.aihomework.controller.AnswerSheetController$$SpringCGLIB$$0.createAnswerSheetByPaper(<generated>)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:261)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:189)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:917)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:829)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at cn.dev33.satoken.filter.SaFirewallCheckFilterForJakartaServlet.doFilter(SaFirewallCheckFilterForJakartaServlet.java:69)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at cn.dev33.satoken.filter.SaTokenCorsFilterForJakartaServlet.doFilter(SaTokenCorsFilterForJakartaServlet.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at cn.dev33.satoken.filter.SaTokenContextFilterForJakartaServlet.doFilter(SaTokenContextFilterForJakartaServlet.java:40)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.springframework.web.filter.ServerHttpObservationFilter.doFilterInternal(ServerHttpObservationFilter.java:109)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:340)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:391)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:896)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1744)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:842)
代码:
DocumentBuilder builder = new DocumentBuilder(document);
Boolean oddOnOuter = answerSheetUnit.getOddOnOuter();
builder.moveToSection(0);
if (Boolean.TRUE.equals(oddOnOuter)) {
builder.moveToHeaderFooter(HeaderFooterType.FOOTER_EVEN);
builder.getParagraphFormat().setAlignment(ParagraphAlignment.LEFT);
builder.insertField("PAGE", "");
builder.moveToHeaderFooter(HeaderFooterType.FOOTER_PRIMARY);
builder.getParagraphFormat().setAlignment(ParagraphAlignment.RIGHT);
builder.insertField("PAGE", "");
} else {
builder.moveToHeaderFooter(HeaderFooterType.FOOTER_EVEN);
builder.getParagraphFormat().setAlignment(ParagraphAlignment.RIGHT);
builder.insertField("PAGE", "");
builder.moveToHeaderFooter(HeaderFooterType.FOOTER_PRIMARY);
builder.getParagraphFormat().setAlignment(ParagraphAlignment.LEFT);
builder.insertField("PAGE", "");
}
builder.moveToDocumentEnd();
Document newDocument = builder.getDocument();
String answerSheetUnitPdfPath = answerSheetUnit.getPdfPath();
if (answerSheetUnitPdfPath != null && !answerSheetUnitPdfPath.isEmpty()) {
answerSheetUnitPdfPath = FileConstants.getAbsolutePath(answerSheetUnit.getPdfPath());
} else {
answerSheetUnitPdfPath = FileConstants.ANSWER_SHEET_NON_SUFFIX + "unit" + File.separator + FileConstants.getDayTime() + File.separator + (answerSheetUnit.getId() == null ? IdWorker.get32UUID() : answerSheetUnit.getId()) + File.separator + IdWorker.get32UUID() + ".pdf";
}
Files.createDirectories(Paths.get(answerSheetUnitPdfPath).getParent());
// newDocument.acceptAllRevisions();
newDocument.updateFields(); //报错
newDocument.removeBlankPages();//报错
@pizhai2
在您提供的代码中,出现了 NullPointerException
错误,通常是因为在尝试访问一个未初始化的对象或字段。根据您描述的情况,问题可能出现在更新字段或删除空白页面的过程中。
解决方案:
-
检查文档内容:确保在调用 updateFields()
和 removeBlankPages()
方法之前,文档中确实有内容和字段。可以在调用这些方法之前打印文档的内容或字段数量。
-
确保字段已正确插入:在插入字段后,确保它们已被正确初始化。您可以在插入字段后立即调用 update()
方法来更新单个字段。
-
使用 try-catch
块:在调用 updateFields()
和 removeBlankPages()
时,使用 try-catch
块来捕获异常并输出详细的错误信息,以便更好地调试。
-
检查文档的状态:在调用这些方法之前,确保文档没有处于不一致的状态,例如在进行其他操作时未完成的更新。
下一步:
请尝试以下简化的代码示例,展示了如何在更新字段之前检查文档状态:
try {
// 确保文档中有字段
if (newDocument.getRange().getFields().getCount() > 0) {
newDocument.updateFields(); // 更新字段
} else {
System.out.println("文档中没有字段需要更新。");
}
newDocument.removeBlankPages(); // 删除空白页面
} catch (Exception e) {
e.printStackTrace(); // 输出异常信息
}
请按照上述步骤进行操作,看看是否能解决问题。如果问题仍然存在,请提供更多的上下文信息,以便我们进行进一步分析。期待您的反馈,希望这些建议对您有所帮助!
测试发现是这段代码导致的错误:
@SneakyThrows
public static Document html2WordDocumentWithLoad(String html) {
Path tempFile = Files.createTempFile(Path.of(FileConstants.RESOURCE_SUFFIX), IdWorker.get32UUID(), ".html");
HtmlUtils.writeHtmlStringToFile(html, tempFile.toAbsolutePath().toString());
InputStream inputStream = new ByteArrayInputStream(html.getBytes(StandardCharsets.UTF_8));
LoadOptions loadOptions = new LoadOptions();
loadOptions.setLoadFormat(LoadFormat.HTML);
Files.deleteIfExists(tempFile);
return new Document(inputStream, loadOptions);
}
由这个方法转换出来的document,有极大概率会在格式调整中和之后出现问题。
@pizhai2 遗憾的是,我无法在最新的 25.7 版本上用提供的文档和代码重现这个问题。您能用这个版本检查一下吗?
@SneakyThrows
public void generateAnswerSheetPdfByHtml() {
String htmlString = HtmlUtils.getHtmlString("/Users/pizhai/Downloads/test.html");
Document document = html2WordDocumentWithLoad(htmlString);
for (Section section : document.getSections()) {
PageSetup pageSetup = section.getPageSetup();
pageSetup.setPaperSize(PaperSize.A4);
pageSetup.setOrientation(Orientation.PORTRAIT);
pageSetup.getTextColumns().setCount(1);
}
divideTextColumn(document, 2, true);
NodeCollection<Table> tables = document.getChildNodes(NodeType.TABLE, true);
for (Table table : tables) {
table.setAllowAutoFit(false);
NodeCollection<Cell> childNodes = table.getChildNodes(NodeType.CELL, true);
for (Cell childNode : childNodes) {
ParagraphCollection paragraphs = childNode.getParagraphs();
for (Paragraph paragraph : paragraphs) {
ParagraphFormat paragraphFormat = paragraph.getParagraphFormat();
paragraphFormat.setFarEastLineBreakControl(true);
paragraphFormat.setWordWrap(false);
paragraphFormat.setHangingPunctuation(true);
paragraphFormat.setBaselineAlignment(BaselineAlignment.CENTER);
paragraphFormat.setAlignment(ParagraphAlignment.JUSTIFY);
}
}
// table.setPreferredWidth(PreferredWidth.fromPercent(100)); // 设置表格总固定宽度
}
SectionCollection sections = document.getSections();
for (Section section : sections) {
ParagraphCollection paragraphs = section.getBody().getParagraphs();
paragraphs.forEach(paragraph -> {
ParagraphFormat paragraphFormat = paragraph.getParagraphFormat();
paragraphFormat.setFarEastLineBreakControl(true);
paragraphFormat.setWordWrap(false);
paragraphFormat.setHangingPunctuation(true);
paragraphFormat.setBaselineAlignment(BaselineAlignment.CENTER);
});
// 获取文档的页面设置
PageSetup pageSetup = section.getPageSetup();
// 设置页脚的下边距
pageSetup.setFooterDistance(35.0);
// 设置页眉的上边距
pageSetup.setHeaderDistance(35.0);
// 设置页面的左边距
pageSetup.setLeftMargin(70.0);
// 设置页面的右边距
pageSetup.setRightMargin(60.0);
// 设置页面的上边距
pageSetup.setTopMargin(54.0);
// 设置页面的下边距
pageSetup.setBottomMargin(54.0);
// 设置分栏间的间距
pageSetup.getTextColumns().setSpacing(20);
// pageSetup.setPageWidth(answerSheetUnit.getPaperWidth());
// pageSetup.setPageHeight(answerSheetUnit.getPaperHeight());
}
Section firstSection = document.getFirstSection();
firstSection.getPageSetup().setOddAndEvenPagesHeaderFooter(true);
DocumentBuilder builder = new DocumentBuilder(document);
builder.moveToSection(0);
builder.moveToHeaderFooter(HeaderFooterType.FOOTER_EVEN);
builder.getParagraphFormat().setAlignment(ParagraphAlignment.LEFT);
builder.insertField("PAGE");
builder.moveToHeaderFooter(HeaderFooterType.FOOTER_PRIMARY);
builder.getParagraphFormat().setAlignment(ParagraphAlignment.RIGHT);
builder.insertField("PAGE");
builder.moveToDocumentEnd();
// document.acceptAllRevisions();
document.updateFields();
document.removeBlankPages();
document.save("test.pdf", SaveFormat.PDF);
}
@SneakyThrows
public Document divideTextColumn(Document doc, Integer textColumnCount, boolean ignoreFirstSection) {
if (ignoreFirstSection) {
return divideTextColumn(doc, textColumnCount, 1);
} else {
return divideTextColumn(doc, textColumnCount, 0);
}
}
@SneakyThrows
public Document divideTextColumn(Document doc, Integer textColumnCount, int... ignoreSectionIndex) {
SectionCollection sections = doc.getSections();
int count = sections.getCount();
List<Integer> indexList = Arrays.stream(ignoreSectionIndex).map(i -> i - 1).boxed().toList();
for (int i = 0; i < count; i++) {
if (indexList.contains(i)) {
continue;
}
Section section = sections.get(i);
TextColumnCollection textColumns = section.getPageSetup().getTextColumns();
textColumns.setCount(textColumnCount);
double columnsWidth = textColumns.getWidth();
// 获取包含图片的节点
NodeCollection shapes = section.getChildNodes(NodeType.SHAPE, true);
// 遍历所有的图片
for (Shape shape : (Iterable<Shape>) shapes) {
if (shape.hasImage()) {
double width = shape.getWidth();
if (width > columnsWidth) {
shape.setWidth(columnsWidth);
}
}
}
}
return doc;
}
@SneakyThrows
public static Document html2WordDocumentWithLoad(String html) {
Path tempFile = Files.createTempFile(Path.of(FileConstants.RESOURCE_SUFFIX), IdWorker.get32UUID(), ".html");
HtmlUtils.writeHtmlStringToFile(html, tempFile.toAbsolutePath().toString());
InputStream inputStream = new ByteArrayInputStream(html.getBytes(StandardCharsets.UTF_8));
LoadOptions loadOptions = new LoadOptions();
loadOptions.setLoadFormat(LoadFormat.HTML);
Files.deleteIfExists(tempFile);
return new Document(inputStream, loadOptions);
}
用到的html文件为:
test.html.zip (10.0 KB)
报错信息为:
java.lang.NullPointerException: Cannot invoke "com.aspose.words.zzXPq.zzW5r()" because the return value of "com.aspose.words.zzXIG.zzXTb()" is null
at com.aspose.words.zzwc.zzXTb(Unknown Source)
at com.aspose.words.zzWzX$zzWod.zzi4(Unknown Source)
at com.aspose.words.zzWzX.zzY0k(Unknown Source)
at com.aspose.words.zzWzX.zzY8T(Unknown Source)
at com.aspose.words.zzXKn.zzi4(Unknown Source)
at com.aspose.words.zzXKn.zz1P(Unknown Source)
at com.aspose.words.zzFa.zzZuQ(Unknown Source)
at com.aspose.words.zzFa.zzF1(Unknown Source)
at com.aspose.words.zzX4z.zzi4(Unknown Source)
at com.aspose.words.zzX4z.zzYqr(Unknown Source)
at com.aspose.words.zzX4z.zzWod(Unknown Source)
at com.aspose.words.zzW4j.zzVUW(Unknown Source)
at com.aspose.words.zzW4j.zzWod(Unknown Source)
at com.aspose.words.zzQ9.zzJR(Unknown Source)
at com.aspose.words.zzQ9.zzYqr(Unknown Source)
at com.aspose.words.zzQ9.zzi4(Unknown Source)
at com.aspose.words.zzVOD.zzWod(Unknown Source)
at com.aspose.words.zzZE1.zzNW(Unknown Source)
at com.aspose.words.zzW4j.zzYiX(Unknown Source)
at com.aspose.words.zzW4j.zzWod(Unknown Source)
at com.aspose.words.zzQ9.zzJR(Unknown Source)
at com.aspose.words.zzQ9.zzYqr(Unknown Source)
at com.aspose.words.zzQ9.zzi4(Unknown Source)
at com.aspose.words.zzYXv.zzkz(Unknown Source)
at com.aspose.words.zzYXv.zzWod(Unknown Source)
at com.aspose.words.zzYXv.zzi4(Unknown Source)
at com.aspose.words.zzMF.zzF1(Unknown Source)
at com.aspose.words.zzMF.zzY0k(Unknown Source)
at com.aspose.words.zzMF.zzej(Unknown Source)
at com.aspose.words.zzMF.zzYUp(Unknown Source)
at com.aspose.words.zzq2.zzYUp(Unknown Source)
at com.aspose.words.zzYSF.zzWod(Unknown Source)
at com.aspose.words.zzVSX.zzZqK(Unknown Source)
at com.aspose.words.zzOe.zzX8f(Unknown Source)
at com.aspose.words.Document.updatePageLayout(Unknown Source)
at com.aspose.words.zzZ32.zzWpG(Unknown Source)
at com.aspose.words.zzXuz.zzYIH(Unknown Source)
at com.aspose.words.zzlz.zz9r(Unknown Source)
at com.aspose.words.zzlz.zzi4(Unknown Source)
at com.aspose.words.zzlz.zzZxB(Unknown Source)
at com.aspose.words.Field.update(Unknown Source)
at com.aspose.words.Field.update(Unknown Source)
at com.aspose.words.zzVOD.zzi4(Unknown Source)
at com.aspose.words.DocumentBuilder.insertField(Unknown Source)
at cn.df2680.aihomework.controller.TestController.generateAnswerSheetPdfByHtml(TestController.java:677)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:569)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:351)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:765)
at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:58)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:173)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:765)
at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:89)
at cn.df2680.aihomework.aop.CountTimeAop.around(CountTimeAop.java:30)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:569)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:637)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:627)
at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:71)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:173)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:765)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:765)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:717)
at cn.df2680.aihomework.controller.TestController$$SpringCGLIB$$0.generateAnswerSheetPdfByHtml(<generated>)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:569)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:261)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:189)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:917)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:829)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at cn.dev33.satoken.filter.SaFirewallCheckFilterForJakartaServlet.doFilter(SaFirewallCheckFilterForJakartaServlet.java:69)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at cn.dev33.satoken.filter.SaTokenCorsFilterForJakartaServlet.doFilter(SaTokenCorsFilterForJakartaServlet.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at cn.dev33.satoken.filter.SaTokenContextFilterForJakartaServlet.doFilter(SaTokenContextFilterForJakartaServlet.java:40)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.springframework.web.filter.ServerHttpObservationFilter.doFilterInternal(ServerHttpObservationFilter.java:109)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:340)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:391)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:896)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1744)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:840)
@pizhai2 我这边的问题与更新字段功能有关。在最新的 .NET 代码中,该问题没有重现,但我为 Java 创建了一个问题,以确保在下一个版本中该问题也不会重现。以下是我的异常情况:
java.lang.NullPointerException
at com.aspose.words.zzZ4S.zzQy(Unknown Source)
at com.aspose.words.zzWdC$zzoU.zzYms(Unknown Source)
at com.aspose.words.zzWdC.zzqt(Unknown Source)
at com.aspose.words.zzWdC.zzYBs(Unknown Source)
at com.aspose.words.zzX7M.zzYms(Unknown Source)
at com.aspose.words.zzX7M.zzZkr(Unknown Source)
at com.aspose.words.zzXwt.zzXnK(Unknown Source)
at com.aspose.words.zzXwt.zzVZ8(Unknown Source)
at com.aspose.words.zzZSC.zzYms(Unknown Source)
at com.aspose.words.zzZSC.zzY6i(Unknown Source)
at com.aspose.words.zzZSC.zzoU(Unknown Source)
at com.aspose.words.zzXg1.zzYAO(Unknown Source)
at com.aspose.words.zzXg1.zzoU(Unknown Source)
at com.aspose.words.zzXae.zzZVQ(Unknown Source)
at com.aspose.words.zzXae.zzY6i(Unknown Source)
at com.aspose.words.zzXae.zzYms(Unknown Source)
at com.aspose.words.zzhL.zzoU(Unknown Source)
at com.aspose.words.zz3r.zzF5(Unknown Source)
at com.aspose.words.zzXg1.zzZnB(Unknown Source)
at com.aspose.words.zzXg1.zzoU(Unknown Source)
at com.aspose.words.zzXae.zzZVQ(Unknown Source)
at com.aspose.words.zzXae.zzY6i(Unknown Source)
at com.aspose.words.zzXae.zzYms(Unknown Source)
at com.aspose.words.zzXXC.zzXqU(Unknown Source)
at com.aspose.words.zzXXC.zzoU(Unknown Source)
at com.aspose.words.zzXXC.zzYms(Unknown Source)
at com.aspose.words.zzZmx.zzVZ8(Unknown Source)
at com.aspose.words.zzZmx.zzqt(Unknown Source)
at com.aspose.words.zzZmx.zzWCY(Unknown Source)
at com.aspose.words.zzZmx.zzYTQ(Unknown Source)
at com.aspose.words.zzXvL.zzYTQ(Unknown Source)
at com.aspose.words.zzZBz.zzoU(Unknown Source)
at com.aspose.words.zzY1j.zzXyJ(Unknown Source)
at com.aspose.words.zzZiR.zzZYo(Unknown Source)
at com.aspose.words.Document.updatePageLayout(Unknown Source)
at com.aspose.words.zzW1w.zzZAC(Unknown Source)
at com.aspose.words.zzVRB.zzWUp(Unknown Source)
at com.aspose.words.zzWXD.zzZbQ(Unknown Source)
at com.aspose.words.zzWXD.zzoU(Unknown Source)
at com.aspose.words.zzWXD.zzYms(Unknown Source)
at com.aspose.words.zzWXD.zzYr2(Unknown Source)
at com.aspose.words.Range.updateFields(Unknown Source)
at com.aspose.words.Document.updateFields(Unknown Source)
此外,在您的代码中,您没有在页面字段前写入任何文本,因此请使用以下代码 builder.insertField("PAGE", "");
以避免任何其他问题。
感谢您报告此问题。 我们已经在我们的内部问题跟踪系统中打开了以下新工单,并将根据 免费支持政策 中提到的条款提供它们的修复:
Issue ID(s): WORDSJAVA-3161
如果您需要优先支持以及直接联系我们的付费支持管理团队,您可以获得 付费支持服务。
The issues you have found earlier (filed as WORDSJAVA-3161) have been fixed in this Aspose.Words for Java 25.8 update.