자바 워드 문서 변환 pdf 구현 및 워 터 마크 추가 방법 상세 설명
얼마 전에 프로젝트 는 워드 문 서 를 자동 으로 생 성 해 야 했 습 니 다.워드 프 리 마 커 로 워드 문 서 를 생 성 한 후에 생 성 된 문 서 를 브 라 우 저 에서 탐색 하고 생각 하 며 워드 문 서 를 pdf 로 바 꾸 면 됩 니 다.그래서 연 구 했 습 니 다.
워드 문 서 를 PDF 로 전환 하 는 것 은 프로젝트 에서 흔히 볼 수 있 는 수요 중 하나 이다.현재 주류 의 방법 은 두 가지 로 나 눌 수 있다.하 나 는 각종 Office 응용 프로그램 을 이용 하여 전환 하 는 것 이다.예 를 들 어 Microsoft Office,WPS 와 LiberOffice,다른 하 나 는 각종 언어 로 제공 하 는 Office 문서 에 대한 읽 기 인터페이스(예 를 들 어 Apache POI,jacob,docx4j,openoffice)이다.이런 것들 은 비용 을 받 거나플러그 인 을 설치 하거나 전환 후 스타일 이 바 뀌 거나 코드 가 바 뀌 는 등.
Aspose.Words for Java 를 사용 하면 복잡 한 WORD PDF HTML 의 다양한 데이터 형식 을 내 보 낼 수 있 습 니 다.
공식 다운로드 주소:http://www.aspose.com/java/word-component.aspx
제 가 사용 하 는 버 전 은 aspose-words-14.9.0-jdk 16 입 니 다.필요 한 jar 가방 두 개(필요 한 것jar 패키지 다운로드).
쓸데없는 말 은 그만 하고 코드 를 바로 입력 하 세 요.
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import org.slf4j.Logger;
import com.aspose.words.Document;
import com.aspose.words.SaveFormat;
/**
*
* @ClassName: Word2PdfUtilt
* @Description: PDF
* @author mzl
* @date 2018 7 30 5:26:44
*
*/
public class Word2PdfUtilt {
protected static Logger log = Log.get();
public static void main(String[] args) {
doc2pdf("D:\\Workspaces\\ _20180731094521.doc","D:\\Workspaces\\test.pdf");
}
public static void doc2pdf(String inPath, String outPath) {
FileOutputStream os =null;
try {
File file = new File(outPath); // pdf
os = new FileOutputStream(file);
Document doc = new Document(inPath); // Address word
doc.save(os, SaveFormat.PDF);
} catch (Exception e) {
e.printStackTrace();
}finally{
if(os!=null){
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
PDF 형식 으로 전환 하면 그림 등 스타일 이 흐 트 러 지지 않 습 니 다.이상 은 PDF 를 생산 하 는 절차 입 니 다.그 다음 에 워 터 마크 를 추가 합 니 다.
/**
*
* @Title: insertWatermarkText
* @Description: PDF
* @author mzl
* @param doc
* @param watermarkText
* @throws Exception
* @throws
*/
private static void insertWatermarkText(Document doc, String watermarkText) throws Exception
{
Shape watermark = new Shape(doc, ShapeType.TEXT_PLAIN_TEXT);
//
watermark.getTextPath().setText(watermarkText);
//
watermark.getTextPath().setFontFamily(" ");
//
watermark.setWidth(500);
//
watermark.setHeight(100);
//
watermark.setRotation(-40);
//
watermark.getFill().setColor(Color.lightGray);
watermark.setStrokeColor(Color.lightGray);
watermark.setRelativeHorizontalPosition(RelativeHorizontalPosition.PAGE);
watermark.setRelativeVerticalPosition(RelativeVerticalPosition.PAGE);
watermark.setWrapType(WrapType.NONE);
watermark.setVerticalAlignment(VerticalAlignment.CENTER);
watermark.setHorizontalAlignment(HorizontalAlignment.CENTER);
Paragraph watermarkPara = new Paragraph(doc);
watermarkPara.appendChild(watermark);
for (Section sect : doc.getSections())
{
insertWatermarkIntoHeader(watermarkPara, sect, HeaderFooterType.HEADER_PRIMARY);
insertWatermarkIntoHeader(watermarkPara, sect, HeaderFooterType.HEADER_FIRST);
insertWatermarkIntoHeader(watermarkPara, sect, HeaderFooterType.HEADER_EVEN);
}
System.out.println("Watermark Set");
}
private static void insertWatermarkIntoHeader(Paragraph watermarkPara, Section sect, int headerType) throws Exception
{
HeaderFooter header = sect.getHeadersFooters().getByHeaderFooterType(headerType);
if (header == null)
{
header = new HeaderFooter(sect.getDocument(), headerType);
sect.getHeadersFooters().add(header);
}
header.appendChild(watermarkPara.deepClone(true));
}
효과 도 는 다음 과 같 습 니 다.제 가 추가 한 워 터 마크 는 제 블 로그 닉네임 입 니 다.선택 은 MZL 입 니 다.자바 알고리즘 과 관련 된 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.
본 고 에서 말 한 것 이 여러분 의 자바 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.