- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我没有将文档的内容附加到 CTBody 类,而是使用 XWPFDocument 类将所有数据从 Word 文档传输到空文档,但是我收到如下错误。当我将 XWPFDocument 文档转换为 pdf 时,该错误指向它
fr.opensagres.poi.xwpf.converter.core.XWPFConverterException:org.apache.xmlbeans.XmlException:错误:文件过早结束。
FileInputStream fis = new FileInputStream("1.docx");
FileInputStream fis1 = new FileInputStream("2.docx");
XWPFDocument xdoc = new XWPFDocument(OPCPackage.open(fis));
XWPFDocument xdoc1 = new XWPFDocument(OPCPackage.open(fis1));
CTBody ct = xdoc.getDocument().getBody();
CTBody ct1 = xdoc1.getDocument().getBody();
XWPFDocument doc = new XWPFDocument();
doc.createStyles();
doc.getDocument().addNewBody().set(ct);
doc.getDocument().addNewBody().set(ct1);
FileOutputStream out = new FileOutputStream( new File("test.pdf"));
PdfOptions opt = PdfOptions.create();
PdfConverter.getInstance().convert(doc, out, opt);
doc.write(out);
doc.close();
out.close();
这是堆栈跟踪。
fr.opensagres.poi.xwpf.converter.core.XWPFConverterException: org.apache.xmlbeans.XmlException: error: Premature end of file.
at fr.opensagres.poi.xwpf.converter.pdf.PdfConverter.doConvert(PdfConverter.java:71)
at fr.opensagres.poi.xwpf.converter.pdf.PdfConverter.doConvert(PdfConverter.java:39)
at fr.opensagres.poi.xwpf.converter.core.AbstractXWPFConverter.convert(AbstractXWPFConverter.java:46)
at trafficMan.MainApp.mergeDocument(MainApp.java:513)
at trafficMan.MainApp$2.actionPerformed(MainApp.java:609)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: org.apache.xmlbeans.XmlException: error: Premature end of file.
at org.apache.xmlbeans.impl.store.Locale$SaxLoader.load(Locale.java:3448)
at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:1272)
at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:1259)
at org.apache.xmlbeans.impl.schema.SchemaTypeLoaderBase.parse(SchemaTypeLoaderBase.java:345)
at org.openxmlformats.schemas.wordprocessingml.x2006.main.StylesDocument$Factory.parse(Unknown Source)
at org.apache.poi.xwpf.usermodel.XWPFDocument.getStyle(XWPFDocument.java:557)
at fr.opensagres.poi.xwpf.converter.core.styles.XWPFStylesDocument.<init>(XWPFStylesDocument.java:196)
at fr.opensagres.poi.xwpf.converter.core.styles.XWPFStylesDocument.<init>(XWPFStylesDocument.java:190)
at fr.opensagres.poi.xwpf.converter.core.XWPFDocumentVisitor.createStylesDocument(XWPFDocumentVisitor.java:182)
at fr.opensagres.poi.xwpf.converter.core.XWPFDocumentVisitor.<init>(XWPFDocumentVisitor.java:175)
at fr.opensagres.poi.xwpf.converter.pdf.internal.PdfMapper.<init>(PdfMapper.java:155)
at fr.opensagres.poi.xwpf.converter.pdf.PdfConverter.doConvert(PdfConverter.java:56)
... 40 more
Caused by: org.xml.sax.SAXParseException; systemId: file://; lineNumber: 1; columnNumber: 1; Premature end of file.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at org.apache.xmlbeans.impl.store.Locale$SaxLoader.load(Locale.java:3422)
... 51 more
最佳答案
即使这段代码除了简单地附加多个文档主体之外什么也不做。它首先创建一个新的 XWPFDocument
,其中已包含一个 CTBody
。然后它使用 XWPFDocument.getDocument()
获取新 XWPFDocument
的 org.openxmlformats.schemas.wordprocessingml.x2006.main.CTDocument1
并然后它向其中添加两个新的 CTBody
元素。之后,CTDocument1
将具有三个 CTBody
元素。
但根据 Office Open XML
,CT_Document
只能具有一个类型为 CT_Body
的元素。
以下 XML 架构片段定义了 CT_Document
元素的内容:
<complexType name="CT_Document">
<complexContent>
<extension base="CT_DocumentBase">
<sequence>
<element name="body" type="CT_Body" minOccurs="0" maxOccurs="1"/>
</sequence>
</extension>
</complexContent>
</complexType>
如您所见:CT_Body
最多出现 1 次。
合并两个 Word
文档不仅仅是简单地连接文档正文。正文中的所有元素都需要合并到一个 CTBody
元素中。单个 Word
文件系统的其他部分(主题、样式、字体表、注释、编号、媒体……)也需要合并。除了 OpenOffice
或 LibreOffice
之外,我不知道有任何免费的 Java
库可以正确执行此操作。
关于java - 文件过早结束 - XWPFDocument to PDFConverter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60018163/
我有一个包含项目的表。我想在Word文档中设置项目的名称,但每个项目都在一个新行中。 所以我创建了下面的空白: 当我的文本包含“P01”时,我用名称替换文本,添加新行并设置另一个文本“P01”。 pu
对于旧的 Microsoft 格式 (.doc),APACHE POI 使用 HWPFDocument。要知道此对象的页数,我只需要做: HWPFDocument document = new HW
我想将带有阿拉伯字母的word转换为pdf,经过一番研发后,我决定使用 org.apache.poi.xwpf.converter.pdf.PdfConverter 但是当我写下面的代码时,最终结果是
我没有将文档的内容附加到 CTBody 类,而是使用 XWPFDocument 类将所有数据从 Word 文档传输到空文档,但是我收到如下错误。当我将 XWPFDocument 文档转换为 pdf 时
我现在正在用java生成word文档,并且正在使用POI Apache的XWPFDocument。最终文档必须如下所示 http://sk.uploads.im/t/rtwvm.png 直到一切正常,
我正在尝试从 microsoft-word 中提取数据并将其转换为 sql 语句并将其插入 Oracle 数据库。 当 ms-word 中的数据包含通过 [Shift-Enter] 创建的新行而不只是
我们正在实现一个门户,用于处理修改和生成 Microsoft Office 2007 文档 (docx) 的请求。后端是用 Java 实现的,使用 Apache POI 作为操作 docx 文件内容的
我正在使用 apache poi 3.8 将值写入 word 模板。我用所需的值替换单词文件(键)中的特定字符串,例如word文档有一段包含key %Entry1%,我想用“Entry text li
我实际上是用 Apache POI 生成一个 Word 文档,我需要自动创建一个引用段落的目录 (TOC),以及它们的页面指示。 这是我正在使用的代码(我省略了前提条件和内部方法的主体): XWPFD
我正在对 .docx 文件进行搜索和替换,在某些情况下,替换文本包含换行符。我为此尝试了几种技术。第一个是将替换文本分成几行并执行: run.setText(lines[0], 0); for(int
我正在使用 Apache POI 方法在我的项目中创建和填充 XWPFDocument 对象,就像这样 public XWPFDocument test() { XWPFDocument doc =
我需要知道如何将 multipartFile 转换为 XWPFDocument 以便将其作为 Word 文件读取(我上传的文件实际上是 .docx ),但是我收到错误: org.springframe
我有一个 Microsoft Word .docx 文档上传到 Sharepoint。在我的 java 代码中,我已将此文档下载到一个 byte[] 中。好的。现在,我想要的是处理这个 byte[]
你知道是否有办法在段落填充文档 (XWPFDocument) 中插入段落 (XWPFParagraph) 吗? 有一种方法可以将文档中已经存在的段落“更改”为另一个段落 (XWPFDocument.s
我已经创建了一个代码,可以使用 Apache POI API 动态创建 Word 文档。该文档预计有一些行数不同的表(列数是固定的)。目前我已将每个表格放置在不同的页面上。我需要知道或者有什么方法可以
我想让 XWPFParagraph(开始)内的文本成为指向文档中另一个具体 XWPFParagraph(结束)的超链接。我找到了在 XWPFCell 内创建超链接的代码,但它不起作用(启动链接开始):
我正在尝试将文本和屏幕截图附加到现有的 Word 文件中。但每次执行以下代码时,我都会收到错误: org.apache.poi.EmptyFileException: The supplied fil
为了帮助解决我遇到的另一个问题,我在 POI Word 小部件的 postGenerationProcess 事件中测试以下代码: var jce:writeXWPFDocument = new wr
我正在尝试使用 XWPFDocument.InsertNewParagraph(XmlDocument cursor) 但该方法要求使用 XmlDocument cursor,我不知道在哪里可以找到它
我尝试从我的 Android 应用程序读取 docx 文件,但以下代码给出了 NoClassDefFoundException :org.doc4j.NameSpace try{ InputS
我是一名优秀的程序员,十分优秀!