Java에서 벡터 그래픽 작업
Contents
[
Hide
]
Aspose.PDF for Java는 GraphicsAbsorber 및 GraphicElement 개체를 통해 벡터 콘텐츠를 노출합니다. 이를 통해 페이지의 하위 수준 벡터 요소를 검사한 다음 이를 업데이트, 제거, 복사 또는 내보낼 수 있습니다.
페이지의 벡터 그래픽 검사
벡터 요소를 열거하고 해당 페이지, 위치 및 연산자 수를 검사해야 할 때 이 예를 사용하세요.
- 원본 PDF
Document를 여세요. GraphicsAbsorber를 만들고 대상 페이지를 방문하세요.- 흡수된
GraphicElement개체를 반복하고 해당 속성을 출력하세요.
public static void usingGraphicsAbsorber(Path inputFile) {
try (Document document = new Document(inputFile.toString())) {
GraphicsAbsorber graphicsAbsorber = new GraphicsAbsorber();
try {
Page page = document.getPages().get_Item(1);
graphicsAbsorber.visit(page);
for (GraphicElement element : graphicsAbsorber.getElements()) {
System.out.println("Page Number: " + element.getSourcePage().getNumber());
System.out.println("Position: (" + element.getPosition().getX() + ", "
+ element.getPosition().getY() + ")");
System.out.println("Number of Operators: " + element.getOperators().size());
}
} finally {
graphicsAbsorber.dispose();
}
}
}
페이지에서 벡터 그래픽 이동
감지된 모든 벡터 요소를 새 위치로 이동해야 하는 경우 이 예를 사용하세요.
- 원본 PDF
Document를 여세요. GraphicsAbsorber를 사용하여 대상 페이지를 방문하고 일시적으로 업데이트를 억제하세요.- 흡수된 각 요소의 위치를 변경하고, 업데이트를 재개하고, 문서를 저장하세요.
public static void moveGraphics(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
GraphicsAbsorber graphicsAbsorber = new GraphicsAbsorber();
try {
Page page = document.getPages().get_Item(1);
graphicsAbsorber.visit(page);
graphicsAbsorber.suppressUpdate();
for (GraphicElement element : graphicsAbsorber.getElements()) {
Point position = element.getPosition();
element.setPosition(new Point(position.getX() + 150, position.getY() - 10));
}
graphicsAbsorber.resumeUpdate();
} finally {
graphicsAbsorber.dispose();
}
document.save(outputFile.toString());
}
System.out.println("Vector graphics moved in " + outputFile);
}
요소 제거를 통해 위치별 벡터 그래픽 제거
특정 직사각형 내부의 벡터 요소를 하나씩 삭제해야 하는 경우 이 예를 사용하세요.
- 원본 PDF
Document를 여세요. GraphicsAbsorber가 있는 페이지를 방문하여 대상Rectangle을 정의하세요.- 일치하는 요소를 제거하고 업데이트를 재개하고 문서를 저장하세요.
public static void removeGraphicsMethod1(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
GraphicsAbsorber graphicsAbsorber = new GraphicsAbsorber();
try {
Page page = document.getPages().get_Item(1);
Rectangle rectangle = new Rectangle(70, 248, 170, 252, true);
graphicsAbsorber.visit(page);
graphicsAbsorber.suppressUpdate();
for (GraphicElement element : graphicsAbsorber.getElements()) {
if (rectangle.contains(element.getPosition(), false)) {
element.remove();
}
}
graphicsAbsorber.resumeUpdate();
} finally {
graphicsAbsorber.dispose();
}
document.save(outputFile.toString());
}
System.out.println("Vector graphics removed with method 1 in " + outputFile);
}
컬렉션을 삭제하여 벡터 그래픽 제거
일치하는 벡터 요소를 먼저 수집한 다음 한 번의 페이지 작업으로 제거해야 하는 경우 이 예를 사용하세요.
- 원본 PDF
Document를 여세요. GraphicsAbsorber페이지를 방문하여 일치하는 요소를 수집하세요.- 페이지 콘텐츠에서 수집된 그래픽을 삭제하고 업데이트된 문서를 저장하세요.
public static void removeGraphicsMethod2(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
GraphicsAbsorber graphicsAbsorber = new GraphicsAbsorber();
try {
Page page = document.getPages().get_Item(1);
Rectangle rectangle = new Rectangle(70, 248, 170, 252, true);
graphicsAbsorber.visit(page);
GraphicElementCollection removedElements = new GraphicElementCollection();
for (GraphicElement element : graphicsAbsorber.getElements()) {
if (rectangle.contains(element.getPosition(), false)) {
removedElements.add(element);
}
}
page.getContents().suppressUpdate();
page.deleteGraphics(removedElements);
page.getContents().resumeUpdate();
} finally {
graphicsAbsorber.dispose();
}
document.save(outputFile.toString());
}
System.out.println("Vector graphics removed with method 2 in " + outputFile);
}
벡터 그래픽을 요소별로 다른 페이지 요소에 복사
흡수된 각 벡터 요소를 새 페이지에 개별적으로 추가해야 하는 경우 이 예를 사용하세요.
- 원본 PDF
Document를 열고 대상 페이지를 추가하세요. GraphicsAbsorber를 사용하여 소스 페이지를 방문하세요.- 대상 페이지에 각
GraphicElement을 추가하고 문서를 저장하세요.
public static void addToAnotherPageMethod1(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
GraphicsAbsorber graphicsAbsorber = new GraphicsAbsorber();
try {
Page page1 = document.getPages().get_Item(1);
Page page2 = document.getPages().add();
graphicsAbsorber.visit(page1);
page2.getContents().suppressUpdate();
for (GraphicElement element : graphicsAbsorber.getElements()) {
element.addOnPage(page2);
}
page2.getContents().resumeUpdate();
} finally {
graphicsAbsorber.dispose();
}
document.save(outputFile.toString());
}
System.out.println("Vector graphics copied with method 1 in " + outputFile);
}
벡터 그래픽을 컬렉션으로 다른 페이지에 복사
한 번의 호출로 전체 흡수된 벡터 그래픽 컬렉션을 새 페이지에 복사해야 하는 경우 이 예를 사용하세요.
- 원본 PDF
Document를 열고 대상 페이지를 추가하세요. GraphicsAbsorber를 사용하여 소스 페이지를 방문하세요.- 흡수된 그래픽 컬렉션을 대상 페이지에 추가하고 문서를 저장하세요.
public static void addToAnotherPageMethod2(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
GraphicsAbsorber graphicsAbsorber = new GraphicsAbsorber();
try {
Page page1 = document.getPages().get_Item(1);
Page page2 = document.getPages().add();
graphicsAbsorber.visit(page1);
page2.getContents().suppressUpdate();
page2.addGraphics(graphicsAbsorber.getElements());
page2.getContents().resumeUpdate();
} finally {
graphicsAbsorber.dispose();
}
document.save(outputFile.toString());
}
System.out.println("Vector graphics copied with method 2 in " + outputFile);
}