Aspose.Words for Java에서 문서 인쇄하기
Aspose.Words for Java를 사용하여 문서를 인쇄하려는 경우 올바른 위치에 있습니다. 이 단계별 가이드에서는 제공된 소스 코드를 사용하여 Aspose.Words for Java로 문서를 인쇄하는 과정을 안내합니다.
소개
문서 인쇄는 많은 응용 프로그램에서 일반적인 작업입니다. Aspose.Words for Java는 Word 문서 인쇄 기능을 포함하여 작업할 수 있는 강력한 API를 제공합니다. 이 튜토리얼에서는 Word 문서를 인쇄하는 과정을 단계별로 안내합니다.
환경 설정
코드를 살펴보기 전에 다음 전제 조건이 충족되었는지 확인하세요.
- JDK(Java 개발 키트)가 설치되었습니다.
- Java 라이브러리용 Aspose.Words가 다운로드되어 프로젝트에 추가되었습니다.
문서 로드
시작하려면 인쇄하려는 Word 문서를 로드해야 합니다. 바꾸다"Your Document Directory"
문서의 경로와"Your Output Directory"
원하는 출력 디렉토리로.
string dataDir = "Your Document Directory";
string outPath = "Your Output Directory";
Document doc = new Document(dataDir + "Rendering.docx");
인쇄 작업 만들기
다음으로, 로드된 문서를 인쇄하기 위한 인쇄 작업을 생성하겠습니다. 아래 코드 조각은 인쇄 작업을 초기화하고 원하는 프린터 설정을 지정합니다.
// 문서를 인쇄할 인쇄 작업을 만듭니다.
PrinterJob pj = PrinterJob.getPrinterJob();
//문서의 페이지 수로 속성 세트를 초기화합니다.
PrintRequestAttributeSet attributes = new HashPrintRequestAttributeSet();
attributes.add(new PageRanges(1, doc.getPageCount()));
// 다른 매개변수와 함께 프린터 설정을 인쇄 문서에 전달합니다.
MultipagePrintDocument awPrintDoc = new MultipagePrintDocument(doc, 4, true, attributes);
문서 인쇄
이제 인쇄 작업을 설정했으므로 문서를 인쇄할 차례입니다. 다음 코드 조각은 문서를 인쇄 작업과 연결하고 인쇄 프로세스를 시작합니다.
// 인쇄 작업을 사용하여 인쇄할 문서를 전달합니다.
pj.setPrintable(awPrintDoc);
pj.print();
완전한 소스 코드
string dataDir = "Your Document Directory";
Document doc = new Document(dataDir + "Rendering.docx");
// 문서를 인쇄할 인쇄 작업을 만듭니다.
PrinterJob pj = PrinterJob.getPrinterJob();
//문서의 페이지 수로 속성 세트를 초기화합니다.
PrintRequestAttributeSet attributes = new HashPrintRequestAttributeSet();
attributes.add(new PageRanges(1, doc.getPageCount()));
// 다른 매개변수와 함께 프린터 설정을 인쇄 문서에 전달합니다.
MultipagePrintDocument awPrintDoc = new MultipagePrintDocument(doc, 4, true, attributes);
// 인쇄 작업을 사용하여 인쇄할 문서를 전달합니다.
pj.setPrintable(awPrintDoc);
pj.print();
MultipagePrintDocument의 소스 코드
class MultipagePrintDocument implements Printable
{
private final Document mDocument;
private final int mPagesPerSheet;
private final boolean mPrintPageBorders;
private final AttributeSet mAttributeSet;
/// <요약>
/// 사용자 정의 PrintDocument 클래스의 생성자입니다.
// / </summary>
public MultipagePrintDocument(Document document, int pagesPerSheet, boolean printPageBorders,
AttributeSet attributes) {
if (document == null)
throw new IllegalArgumentException("document");
mDocument = document;
mPagesPerSheet = pagesPerSheet;
mPrintPageBorders = printPageBorders;
mAttributeSet = attributes;
}
public int print(Graphics g, PageFormat pf, int page) {
// 속성 세트에 정의된 페이지 시작 및 끝 색인입니다.
int[][] pageRanges = ((PageRanges) mAttributeSet.get(PageRanges.class)).getMembers();
int fromPage = pageRanges[0][0] - 1;
int toPage = pageRanges[0][1] - 1;
Dimension thumbCount = getThumbCount(mPagesPerSheet, pf);
// 다음에 렌더링할 페이지 인덱스를 계산합니다.
int pagesOnCurrentSheet = (int) (page * (thumbCount.getWidth() * thumbCount.getHeight()));
// 페이지 인덱스가 전체 페이지 범위보다 크면 아무것도 없습니다.
// 렌더링할 것이 더 많습니다.
if (pagesOnCurrentSheet > (toPage - fromPage))
return Printable.NO_SUCH_PAGE;
// 각 축소판 자리 표시자의 크기를 포인트 단위로 계산합니다.
Point2D.Float thumbSize = new Point2D.Float((float) (pf.getImageableWidth() / thumbCount.getWidth()),
(float) (pf.getImageableHeight() / thumbCount.getHeight()));
// 이 용지에 인쇄할 첫 번째 페이지의 수를 계산하십시오.
int startPage = pagesOnCurrentSheet + fromPage;
// 이 용지에 인쇄할 마지막 페이지 번호를 선택합니다.
int pageTo = Math.max(startPage + mPagesPerSheet - 1, toPage);
//저장된 현재 페이지에서 선택한 페이지를 반복하여 계산합니다.
// 마지막 페이지.
for (int pageIndex = startPage; pageIndex <= pageTo; pageIndex++) {
// 열과 행 인덱스를 계산합니다.
int rowIdx = (int) Math.floor((pageIndex - startPage) / thumbCount.getWidth());
int columnIdx = (int) Math.floor((pageIndex - startPage) % thumbCount.getWidth());
// 세계 좌표(이 경우 점)에서 썸네일 위치를 정의합니다.
float thumbLeft = columnIdx * thumbSize.x;
float thumbTop = rowIdx * thumbSize.y;
try {
// 왼쪽 및 위쪽 시작 위치를 계산합니다.
int leftPos = (int) (thumbLeft + pf.getImageableX());
int topPos = (int) (thumbTop + pf.getImageableY());
// 계산된 좌표를 사용하여 문서 페이지를 그래픽 객체로 렌더링합니다.
// 및 썸네일 자리 표시자 크기.
// 유용한 반환 값은 페이지가 렌더링된 규모입니다.
float scale = mDocument.renderToSize(pageIndex, (Graphics2D) g, leftPos, topPos, (int) thumbSize.x,
(int) thumbSize.y);
// 페이지 테두리 그리기(페이지 축소판은 축소판보다 작을 수 있음)
// 자리 표시자 크기).
if (mPrintPageBorders) {
// 페이지의 실제 100% 크기를 포인트 단위로 가져옵니다.
Point2D.Float pageSize = mDocument.getPageInfo(pageIndex).getSizeInPoints();
// 알려진 배율 인수를 사용하여 배율이 조정된 페이지 주위에 테두리를 그립니다.
g.setColor(Color.black);
g.drawRect(leftPos, topPos, (int) (pageSize.x * scale), (int) (pageSize.y * scale));
// 축소판 자리 표시자 주위에 테두리를 그립니다.
g.setColor(Color.red);
g.drawRect(leftPos, topPos, (int) thumbSize.x, (int) thumbSize.y);
}
} catch (Exception e) {
// 렌더링 중에 오류가 발생하면 아무 것도 수행하지 마십시오.
// 렌더링 중에 오류가 있으면 빈 페이지가 그려집니다.
}
}
return Printable.PAGE_EXISTS;
}
private Dimension getThumbCount(int pagesPerSheet, PageFormat pf) {
Dimension size;
// 시트의 열과 행 수를 정의합니다.
//가로 방향의 종이.
switch (pagesPerSheet) {
case 16:
size = new Dimension(4, 4);
break;
case 9:
size = new Dimension(3, 3);
break;
case 8:
size = new Dimension(4, 2);
break;
case 6:
size = new Dimension(3, 2);
break;
case 4:
size = new Dimension(2, 2);
break;
case 2:
size = new Dimension(2, 1);
break;
default:
size = new Dimension(1, 1);
break;
}
// 용지가 세로 방향인 경우 너비와 높이를 바꿉니다.
if ((pf.getWidth() - pf.getImageableX()) < (pf.getHeight() - pf.getImageableY()))
return new Dimension((int) size.getHeight(), (int) size.getWidth());
return size;
}
}
결론
축하해요! Aspose.Words for Java를 사용하여 Word 문서를 성공적으로 인쇄했습니다. 이 단계별 가이드는 문서 인쇄를 Java 애플리케이션에 원활하게 통합하는 데 도움이 됩니다.
자주 묻는 질문
Q1: Aspose.Words for Java를 사용하여 문서의 특정 페이지를 인쇄할 수 있나요?
예, 문서를 인쇄할 때 페이지 범위를 지정할 수 있습니다. 코드 예제에서는 다음을 사용했습니다.attributes.add(new PageRanges(1, doc.getPageCount()))
모든 페이지를 인쇄하려면 필요에 따라 페이지 범위를 조정할 수 있습니다.
Q2: Aspose.Words for Java는 배치 인쇄에 적합합니까?
전적으로! Aspose.Words for Java는 배치 인쇄 작업에 매우 적합합니다. 문서 목록을 반복하고 유사한 코드를 사용하여 하나씩 인쇄할 수 있습니다.
Q3: 인쇄 오류나 예외를 어떻게 처리할 수 있나요?
인쇄 프로세스 중에 발생할 수 있는 잠재적인 예외를 처리해야 합니다. 예외 처리에 대한 정보는 Aspose.Words for Java 설명서를 확인하세요.
Q4: 인쇄 설정을 추가로 사용자 정의할 수 있습니까?
예, 특정 요구 사항에 맞게 인쇄 설정을 사용자 정의할 수 있습니다. 사용 가능한 인쇄 옵션에 대해 자세히 알아보려면 Aspose.Words for Java 문서를 살펴보세요.
Q5: Aspose.Words for Java에 대한 추가 도움말과 지원은 어디서 얻을 수 있나요?
추가 지원 및 지원을 받으려면 다음을 방문하세요.Aspose.Words for Java 포럼.
이제 Aspose.Words for Java를 사용하여 문서를 인쇄하는 방법을 성공적으로 배웠으므로 Java 애플리케이션에서 이 기능 구현을 시작할 수 있습니다. 즐거운 코딩하세요!