Можно ли преобразовать XWPFDocument в байт [] без предварительного сохранения его в файл? - PullRequest
0 голосов
/ 24 октября 2019

возможно ли преобразовать XWPFDocument в byte[]? Я не хочу сохранять его в файл, потому что он мне не нужен. если есть способ сделать это, это поможет

1 Ответ

2 голосов
/ 24 октября 2019

A XWPFDocument расширяет POIXMLDocument , а метод write принимает в качестве параметра java.io.OutputStream. Это также может быть ByteArrayOutputStream. Поэтому, если нужно получить XWPFDocument в виде байтового массива, запишите его в ByteArrayOutputStream, а затем получите массив из метода ByteArrayOutputStream.toByteArray .

Пример:

import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;

import org.apache.poi.xwpf.usermodel.*;

public class CreateXWPFDocumentAsByteArray {

 public static void main(String[] args) throws Exception {

  XWPFDocument document = new XWPFDocument();
  XWPFParagraph paragraph = document.createParagraph();
  XWPFRun run=paragraph.createRun(); 
  run.setBold(true);
  run.setFontSize(22);
  run.setText("The paragraph content ...");
  paragraph = document.createParagraph();

  ByteArrayOutputStream out = new ByteArrayOutputStream();
  document.write(out);
  out.close();
  document.close();

  byte[] xwpfDocumentBytes = out.toByteArray();
  // do something with the byte array
  System.out.println(xwpfDocumentBytes);

  // to prove that the byte array really contains the XWPFDocument 
  try (FileOutputStream stream = new FileOutputStream("./XWPFDocument.docx")) {
    stream.write(xwpfDocumentBytes);
  } 

 }
}
...