>

단어 문서의 머리글에 그림을 추가하고 있습니다. 이미지의 프레임이 표시되고 "현재 이미지를 표시 할 수 없습니다"라고 표시됩니다. 헤더에 텍스트를 추가하면 텍스트가 표시되고 문서 본문에 이미지를 추가하면 이미지도 표시됩니다. 이미지를 가져오고 헤더에 텍스트를 표시하지만 이미지는 표시하지 않습니다.

확인이 부족합니다. 누구든지이 점을 조언 해 줄 수 있습니까?

감사합니다!

public static void createHeaderAndFotter(XWPFDocument document) throws IOException, BadElementException, InvalidFormatException {
    XWPFHeaderFooterPolicy headerFooterPolicy = document.getHeaderFooterPolicy();
    if (headerFooterPolicy == null) headerFooterPolicy = document.createHeaderFooterPolicy();
    File image = new ClassPathResource("/static/images/NIAB_Header.bmp").getFile();
    BufferedImage bimg1 = ImageIO.read(image);
    int width = bimg1.getWidth();
    int height = bimg1.getHeight();
    String imageName= image.getName();
    XWPFHeader header = headerFooterPolicy.createHeader(XWPFHeaderFooterPolicy.DEFAULT);
    XWPFParagraph paragraph = header.createParagraph();
//        XWPFParagraph paragraph = document.createParagraph();
    paragraph.setAlignment(ParagraphAlignment.CENTER);
    XWPFRun run = paragraph.createRun();
    run.addPicture(new FileInputStream(image), XWPFDocument.PICTURE_TYPE_PNG, imageName, Units.toEMU(width), Units.toEMU(height));
    run.setText("HEADER"); 
}

이 줄에서 주석을 제거하고 이전에 주석을 달면 이미지를 추가합니다

       XWPFParagraph paragraph = document.createParagraph();

  • 답변 # 1

    나는 이것이 작동하는지 아닌지는 apache poi 에 달려 있다고 믿는다. 사용 된 버전. 이전 apache poi 에서 머리글/바닥 글의 사진에 여러 문제가있었습니다.  버전.

    다음은 apache poi 4.0.1 를 사용하는 가장 작은 작업 코드입니다. . 항상 최신 안정 버전을 사용하는 것이 좋습니다. :

    코드 :

    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import org.apache.poi.xwpf.usermodel.*;
    import org.apache.poi.wp.usermodel.HeaderFooterType;
    import org.apache.poi.util.Units;
    public class CreateWordHeaderWithImage {
     public static void main(String[] args) throws Exception {
      XWPFDocument doc = new XWPFDocument();
      // the body content
      XWPFParagraph paragraph = doc.createParagraph();
      XWPFRun run = paragraph.createRun();  
      run.setText("The Body...");
      // create header
      XWPFHeader header = doc.createHeader(HeaderFooterType.DEFAULT);
      // header's first paragraph
      paragraph = header.getParagraphArray(0);
      if (paragraph == null) paragraph = header.createParagraph();
      paragraph.setAlignment(ParagraphAlignment.CENTER);
      run = paragraph.createRun();
      FileInputStream in = new FileInputStream("samplePict.jpeg");
      run.addPicture(in, Document.PICTURE_TYPE_JPEG, "samplePict.jpeg", Units.toEMU(100), Units.toEMU(50));
      in.close();  
      run.setText("HEADER"); 
      FileOutputStream out = new FileOutputStream("CreateWordHeaderWithImage.docx");
      doc.write(out);
      doc.close();
      out.close();
     }
    }
    
    

    결과 :

관련 자료

  • 이전 c# - 워터 마크 위치 문제를 어떻게 해결합니까?
  • 다음 selenium - Java 값이 수행보다 큰 경우