일부 필드는 정적이고 다른 필드는 동적 인 문서 템플릿이 있습니다. 일부 데이터 (이름, 성, 급여)를 대체하고 새 파일을 생성해야합니다. 이 작업을 수행하기 위해 어떤 라이브러리를 권장합니까? 관심 장소가 적절한가요? 저는 Spring, Java EE6 및 Oracle과 협력하고 있습니다.Java로 템플릿 또는 기존 문서에서 Word 문서를 만드는 방법은 무엇입니까?
답변
아파치 POI를 사용해 볼 수도 있지만 POI의 HWPF와 XWPF 부분은 단어 파일을 조작하는 데 정말로 복잡합니다. 단어 파일이 어떻게 구성되어 있는지 잘 이해하고 있어야합니다. 이 iText 및 PDF
를 사용
솔루션 나는 PDF와 비슷한
1) 당신은 Acrobat의 (같은 문서에 필드를 만들 LibreOffice와 사용할 수 있습니다 (이것은 당신을위한 옵션이 될 수 있음) 않았다
- 는 .ODT 파일과 스타일 그것을
- 만들기 또는 MS Word 또는 리브레 오피스 라이터를 사용하여 귀하의 템플릿으로 변환) 프로 > Toolsbars - -
- 그런 다음보기로 이동> 양식 디자인을 지금
- 을 (이 필드의 속성을 엽니 다 더블 클릭) 당신은 당신의 파일에 필드를 추가 할 수 있습니다
- "온/오프 디자인 모드"로 설정 완료 : - :
"파일> 내보내기 PDF로"public byte[] getDocumentAsByteArray(Object dataBean, String pdfTemplateName) throws KkmsException { ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); PdfStamper stamp = null; InputStream templateInputStream = null; Locale local = new Locale(language); try { templateInputStream = // get the file input stream of the pdf PdfReader reader = new PdfReader(templateInputStream); // Create a stamper that will copy the document to a new file stamp = new PdfStamper(reader, outputStream); AcroFields form = stamp.getAcroFields(); // form fields are normal text in the end stamp.setFormFlattening(true); Map<String, AcroFields.Item> map = (Map<String, AcroFields.Item>)form.getFields(); if (map != null) { if (map.size() == 0) { logger.debug("There are no fields in this PDF layout"); } for (Entry<String, AcroFields.Item> e : map.entrySet()) { logger.debug("PDF fieldname = " + e.getKey()); // at the moment we only handle text fields if (AcroFields.FIELD_TYPE_TEXT == form.getFieldType(e.getKey())) { fillForm(dataBean, form, e.getKey(), local); } else { logger.warn("Field type is not supported: "+form.getFieldType(e.getKey())); } } } stamp.close(); } catch (Exception e) { logger.warn("Failed to create PDF document", e); throw new KkmsException("Failed to create PDF document: "+e.getMessage()); } finally { if (templateInputStream != null) { try { templateInputStream.close(); } catch (IOException e) { throw new KkmsException("Failed to close InputStream of PDF document", e); } } } return outputStream.toByteArray(); }
2) 이제 다음 생성 된 필드
채우기 위해 iText를 사용할 수 있습니다 그냥 예제 코드입니다
결국 당신은 PDF를 얻습니다 -> 이것이 당신을 적어도 조금 도와 줄 수 있기를 바랍니다!
또 다른 신속하고 더러운 솔루션
ODT의 전원 또는 DOCX 사용할 수 있을까 - 그래서 압축을 해제> - -> 당신은 것입니다> 당신의 DOCX하는 문서 또는 ODT로 변환 ->의 단지 zip 파일을 우편의 루트에하고 content.xml 파일을 참조 ->이 에있는 모든 문서 내용은 이제 나중에 프로그램에 의해 대체 될 수있는 마법의 태그 (예 : $$$) 여기에 추가 할 수있다
<text:p text:style-name="P3">SAP Customer Number:</text:p>
<text:p text:style-name="P3">SAP Customer Number: $$$sapCustomerNumber$$$</text:p>
이제 odt/docx 파일을 압축 해제하는 프로그램을 작성하십시오 -> 태그를 바꿉니다 -> 파일을 다시 압축합니다
These slides은 OSDC 2012에서 발표 한 프리젠 테이션에서 몇 가지 주요 접근법에 대해 설명합니다.
요즘은 "XHTML로 원하는 것을 생성 한 다음 docx로 내 보냅니다."라고 덧붙였다. CSS @class 값을 Word 스타일로 변환하는 기능을 지원하는 docx4j-ImportXHTML을 도입 한 이후로 우리는이 접근 방식을 점점 더 많이 보았습니다.
- 1. MS Word 문서를 Java로 병합
- 2. vb 또는 C# .net을 사용하여 기존 Microsoft Word 문서에서 .dot 파일을 추가하는 방법은 무엇입니까?
- 3. java로 doc/pdf 문서를 만드는 (복잡한?) 가장 좋은 방법은 무엇입니까?
- 4. Word 문서를 열지 않고 Java로 인쇄하려면 어떻게합니까?
- 5. MS Word 문서에서 데이터베이스를 만드는 가장 좋은 방법은 무엇입니까?
- 6. WinRT에서 Word 문서를 만드는 방법
- 7. Silverlight 4 응용 프로그램에서 Word 문서를 만드는 방법은 무엇입니까?
- 8. Word 문서에서 프로그래밍
- 9. Word 문서에서
- 10. Word 문서에서 페이지 계산하기
- 11. Java로 세션을 만드는 방법은 무엇입니까?
- 12. docx4j를 사용하여 템플릿의 헤더가있는 PDF 문서를 만드는 방법은 무엇입니까?
- 13. Word 문서를 볼 애플릿
- 14. Java로 GUI를 만드는 방법은 무엇입니까?
- 15. Java로 타이머를 만드는 방법은 무엇입니까?
- 16. Java로 테이블을 만드는 방법은 무엇입니까?
- 17. Google 드라이브 API를 통해 MS Word 문서에서 기존 기본 Google 드라이브 문서를 업데이트하십시오.
- 18. Word 문서에서 그림을 추가하고 크기와 위치를 조정하는 방법은 무엇입니까?
- 19. Java로 여러 화면을 만드는 방법은 무엇입니까?
- 20. 사용자 지정 SharePoint 목록의 목록 필드를 포함하는 Word 문서를 자동으로 만드는 방법은 무엇입니까?
- 21. VBA를 사용하여 MS-Word 문서에서 특정 테이블을 추출하는 방법은 무엇입니까?
- 22. Word 문서를 Access VBA로 자동 채우기 : Normal.dotm 템플릿 문제
- 23. Java로 단어 문서를 편집하는 방법
- 24. 문서를 생성 한 후 Word 문서에서 제어 제어 제거
- 25. Word 문서에서 페이지 번호 매기기를 다시 시작하는 방법은 무엇입니까?
- 26. 기존 테이블에서 테이블을 만드는 방법은 무엇입니까?
- 27. Word 템플릿 - 사라지는 텍스트
- 28. C# Word 문서에서 읽음
- 29. Word 문서에서 라인 읽기
- 30. HTML을 MS Word 템플릿
이 질문을보십시오. http://stackoverflow.com/questions/10005678/learning-apache-poi –