| categories |
|
||||
|---|---|---|---|---|---|
| date | 2026-01-18 | ||||
| description | GroupDocs.Annotation์ ์ฌ์ฉํ์ฌ Java์์ PDF ํ์ผ์ ๋ฏธ๋ฆฌ ๋ณด๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ์ธ์. ๊ฐ๋จํ ์ฝ๋ ์์ ๋ก PDF, Word ๋ฌธ์ ๋ฑ์์ ๊ณ ํ์ง PNG ์ธ๋ค์ผ์ ์์ฑํฉ๋๋ค. | ||||
| keywords | Java document page preview generator, GroupDocs.Annotation Java tutorial, generate PNG document previews Java, Java document thumbnail creation, how to create document page previews in Java | ||||
| lastmod | 2026-01-18 | ||||
| linktitle | Java Document Page Preview Generator | ||||
| tags |
|
||||
| title | preview pdf java โ Java ๋ฌธ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์์ฑ๊ธฐ (2025) | ||||
| type | docs | ||||
| url | /ko/java/document-preview/groupdocs-annotation-java-document-page-previews/ | ||||
| weight | 1 |
์ ์ฒด ํ์ผ์ ๋ค์ด๋ก๋ํ๊ฒ ํ์ง ์๊ณ ๋ฌธ์์ ๋น ๋ฅธ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ค์ผ ํ๋ ์ ์ด ์๋์? ๋ฌธ์ ๊ด๋ฆฌ ์์คํ ์ ๊ตฌ์ถํ๋ , ํ์ผ ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ง๋ค๋ , ํน์ ๋จ์ํ ์ฌ์ฉ์๊ฐ ์ฝํ ์ธ ๋ฅผ ์ด์ง ์ฟ๋ณผ ์ ์๊ฒ ํ๋ , preview pdf java๋ ๊ฒ์ ์ฒด์ธ์ ์ ๋๋ค.
๋น ๋ฅด๊ฒ preview pdf java ํ์ผ์ ๋ฏธ๋ฆฌ๋ณด๊ณ ์ถ๋ค๋ฉด, ์ด ๊ฐ์ด๋๊ฐ ์ ํํ ์ด๋ป๊ฒ ํ๋์ง ์๋ ค๋๋ฆฝ๋๋ค. ์ฌ์ค, ์ธ๋ค์ผ์ด๋ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ์๋์ผ๋ก ๋ง๋๋ ์ผ์ ์ ๋ชฝ๊ณผ๋ ๊ฐ์ต๋๋ค. ํ์ผ ์ ํ๋ง๋ค ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์ํ๊ณ , ๋ค์ํ ํฌ๋งท์ ์ฒ๋ฆฌํด์ผ ํ๋ฉฐ, ์ฃ์ง ์ผ์ด์ค์ ์จ๋ฆํด์ผ ํฉ๋๋ค. ๋ฐ๋ก ์ฌ๊ธฐ์ GroupDocs.Annotation for Java๊ฐ ๋ฑ์ฅํฉ๋๋ค โ ๋ฌธ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์์ฑ์ ์ํ ์ค์์ค ๊ตฐ์ฉ ๋์ดํ์ ๊ฐ์ต๋๋ค.
์ด ํํ ๋ฆฌ์ผ์์๋ ๋ช ์ค์ Java ์ฝ๋๋ง์ผ๋ก ๊ฑฐ์ ๋ชจ๋ ๋ฌธ์ ์ ํ์์ ๊ณ ํ์ง PNG ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์๋๋ค. ๊ธฐ๋ณธ ์ค์ ๋ถํฐ ๊ณ ๊ธ ์ต์ ํ ๊ธฐ๋ฒ, ์ค์ ํ๋ก์ ํธ์ ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋ ์์ ๊น์ง ๋ชจ๋ ๋ค๋ฃน๋๋ค.
๋ฐฐ์ฐ๊ฒ ๋ ๋ด์ฉ:
- GroupDocs.Annotation for Java ์ค์ ํ๊ธฐ (์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ)
- ์ต์ ์ฝ๋๋ก ์ ๋ช ํ PNG ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์์ฑํ๊ธฐ
- ๋ค์ํ ์ฌ์ฉ ์ฌ๋ก์ ๋ง๋ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ต์ ๋ฏธ์ธ ์กฐ์ ํ๊ธฐ
- ๋ฌธ์ ๋ฐ์ ์ ์ ์ผ๋ฐ์ ์ธ ์ด์ ๋ฏธ๋ฆฌ ์ฒ๋ฆฌํ๊ธฐ
- ํ๋ก๋์ ํ๊ฒฝ์ ์ํ ์ฑ๋ฅ ์ต์ ํ
์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฌธ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ฒ๋ฆฌ ๋ฐฉ์์ ๋ฐ๊ฟ ์ค๋น๊ฐ ๋์ จ๋์? ๋ฐ๋ก ์์ํด๋ด ์๋ค!
- preview pdf java๋ฅผ ์์ฑํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋? GroupDocs.Annotation for Java
- ํ์ํ ์ฝ๋ ๋ผ์ธ ์๋? ๊ธฐ๋ณธ ๋ฏธ๋ฆฌ๋ณด๊ธฐ์ ์ฝ 10โ15์ค
- ์ถ์ฒ ์ด๋ฏธ์ง ํฌ๋งท์? ๋ฌด์์ค ํ์ง์ ์ํ PNG
- ํ ๋ฒ์ ์ฌ๋ฌ ํ์ด์ง๋ฅผ ๋ฏธ๋ฆฌ๋ณผ ์ ์๋์? ์,
PreviewOptions์ ํ์ด์ง ๋ฒํธ๋ฅผ ์ง์ ํ๋ฉด ๋ฉ๋๋ค - ํ๋ก๋์ ์ ๋ผ์ด์ ์ค๊ฐ ํ์ํฉ๋๊น? ์, ์์ฉ ๋ผ์ด์ ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ์ํฐ๋งํฌ๊ฐ ์ ๊ฑฐ๋ฉ๋๋ค
preview pdf java๋ PDF(๋๋ ์ง์๋๋ ๋ค๋ฅธ ๋ฌธ์)์ ๊ฐ ํ์ด์ง๋ฅผ ์ด๋ฏธ์งโ๋ณดํต PNG ๋๋ JPEGโ๋ก ๋ ๋๋งํ๋ ๊ณผ์ ์ ์๋ฏธํฉ๋๋ค. ์ด๋ฅผ ํตํด ์น ์ฑ, ๋ชจ๋ฐ์ผ ์ฑ, ๋ฐ์คํฌํฑ ๋๊ตฌ์์ ์๋ณธ ํ์ผ์ ๋ค์ด๋ก๋ํ๊ฑฐ๋ ์ด์ง ์๊ณ ๋ ๋ฌธ์ ์ธ๋ค์ผ์ ํ์ํ ์ ์์ต๋๋ค.
์ฝ๋ ์์ฑ์ ์์ํ๊ธฐ ์ ์, ๋ฌธ์ ํ์ด์ง ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์์ฑ์ด ๋น์ ๋ฐํ๋ ์ํฉ์ ๋ํด ์ด์ผ๊ธฐํด๋ณด๊ฒ ์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ํนํ ์ ์ฉํฉ๋๋ค:
๋ฌธ์ ๊ด๋ฆฌ ์์คํ โ ์ฌ์ฉ์๋ ๊ฐ ํ์ผ์ ์ด์ง ์๊ณ ๋ ๋น ๋ฅด๊ฒ ์ค์บํ ์ ์์ต๋๋ค. ๊ตฌ๊ธ ๋๋ผ์ด๋ธ๊ฐ ๋ฌธ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๋ฐฉ์์ ๋ ์ฌ๋ ค ๋ณด์ธ์. ๋ฐ๋ก ์ฐ๋ฆฌ๊ฐ ๋ง๋ค๊ณ ์ ํ๋ ๊ฒ์ ๋๋ค.
์ด์ปค๋จธ์ค ํ๋ซํผ โ ์ ์์ฑ , ํ ํ๋ฆฟ, ๋ณด๊ณ ์์ ๊ฐ์ ๋์งํธ ์ ํ์ ํ๋งคํ๋์? ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ด๋ฏธ์ง๋ ๊ณ ๊ฐ์ด ๊ตฌ๋งค ์ ๋ด์ฉ์ ํ์ธํ๊ฒ ํด ์ฃผ์ด ์ ํ์จ์ ํฌ๊ฒ ๋์ผ ์ ์์ต๋๋ค.
๋ฒ๋ฅ ์ํํธ์จ์ด โ ๋ณํธ์ฌ์ ๋ฒ๋ฌด ๋ณด์กฐ์์ ๊ณ์ฝ์, ์ฆ์ธ ๊ธฐ๋ก, ์ฌ๊ฑด ํ์ผ ๋ฑ์์ ํน์ ํ์ด์ง๋ฅผ ๋น ๋ฅด๊ฒ ์ฐธ์กฐํด์ผ ํฉ๋๋ค. ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ธ๋ค์ผ์ ์ด ๊ณผ์ ์ ๋ฒ๊ฐ์ฒ๋ผ ๋น ๋ฅด๊ฒ ๋ง๋ค์ด ์ค๋๋ค.
๊ต์ก ํ๋ซํผ โ ํ์๋ค์ ๊ต๊ณผ์ ํ์ด์ง, ๊ณผ์ , ์ฐธ๊ณ ์๋ฃ ๋ฑ์ ๋ค์ด๋ก๋ํ๊ฑฐ๋ ๊ณต๋ถํ๊ธฐ ์ ์ ๋ฏธ๋ฆฌ๋ณผ ์ ์์ต๋๋ค.
์ฝํ ์ธ ์น์ธ ์ํฌํ๋ก โ ๋ง์ผํ ํ, ์ถํ์ฌ, ์ฝํ ์ธ ์ ์์๋ ์ฌ๋ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด์ง ์๊ณ ๋ ๋ฌธ์ ๋ ์ด์์๊ณผ ๋ด์ฉ์ ํ๋์ ๊ฒํ ํ ์ ์์ต๋๋ค.
GroupDocs.Annotation์ ์ฅ์ ์ ๋ชจ๋ ๋ฌด๊ฑฐ์ด ์์ ์ ๋์ ์ฒ๋ฆฌํ๋ค๋ ์ ์ ๋๋คโPDF, Word, Excel, PowerPoint ๋ฑ ์ด๋ค ํฌ๋งท์ด๋ ์ ๊ฒฝ ์ธ ํ์๊ฐ ์์ต๋๋ค. ํ๋์ API, ๋ชจ๋ ํฌ๋งท.
์ฝ๋ฉ์ ์์ํ๊ธฐ ์ ์ ํ์ํ ๋ชจ๋ ๊ฒ์ด ์ค๋น๋์ด ์๋์ง ํ์ธํด๋ด ์๋ค. ์ค์ ์ ๊ฝค ๊ฐ๋จํฉ๋๋ค.
์ฐ๋ฆฌ์ ์ฃผ์ธ๊ณต์ GroupDocs.Annotation for Java์ ๋๋ค. Maven์ ์ฌ์ฉํด ์ข ์์ฑ์ ๊ด๋ฆฌํ ๊ฒ์ด๋ฉฐ, ์๋์ผ๋ก JAR ํ์ผ์ ๋ค์ด๋ก๋ํ๊ณ ์ค์ ํ๋ ๋ฒ๊ฑฐ๋ก์์ ์ด์ ๊ทธ๋ง.
- Java Development Kit (JDK): JDKโฏ8 ์ด์์ด ํ์ํฉ๋๋ค. ์ค๋๋ ๋ฒ์ ์ ์ฌ์ฉ ์ค์ด๋ผ๋ฉด ์ง๊ธ ์ ๊ทธ๋ ์ด๋ํ๋ ๊ฒ์ด ์ข์ต๋๋คโ์ฑ๋ฅ๊ณผ ๋ณด์์ด ํฅ์๋ฉ๋๋ค.
- ๋น๋ ๋๊ตฌ: Maven ๋๋ Gradle (์์ ๋ Maven ์ฌ์ฉ, ๊ฐ๋ ์ ๋์ผ)
- IDE: ํ ์คํธ ํธ์ง๊ธฐ๋ง ์ฌ์ฉํด๋ ๋์ง๋ง, IntelliJ IDEA ๋๋ Eclipse๋ฅผ ๊ถ์ฅํฉ๋๋ค. ๋๋ฒ๊น ๊ณผ ์๋ ์์ฑ ๊ธฐ๋ฅ์ด ๋ฐ์ด๋ฉ๋๋ค.
๊ธฐ๋ณธ Java ํ๋ก๊ทธ๋๋ฐ์ ์ต์ํ๊ณ Maven ์ข ์์ฑ ๊ด๋ฆฌ ๋ฐฉ๋ฒ์ ์ดํดํ๊ณ ์์ด์ผ ํฉ๋๋ค. Maven์ด ์ฒ์์ด๋ผ๋ฉด ๊ฑฑ์ ๋ง์ธ์โ์ฌ์ฉํ ๊ฐ๋ ์ ๋งค์ฐ ๊ธฐ๋ณธ์ ์ด๋ฉฐ Maven ์์ ๊ฐ์ด๋๋ฅผ ์ฐธ๊ณ ํ๋ฉด ๋ฉ๋๋ค.
์ด์ ์ค์ ์ค์ ๋จ๊ณ๋ก ๋ค์ด๊ฐ๋๋ค. ์ข์ ์์์ GroupDocs๊ฐ ์ด ๊ณผ์ ์ ๋๋ผ์ธ ์ ๋๋ก ๊ฐ๋จํ๊ฒ ๋ง๋ค์ด ์ค๋๋ค.
Maven ์ค์ :
ํ๋ก์ ํธ์ GroupDocs.Annotation์ ํฌํจํ๋ ค๋ฉด pom.xml์ ๋ค์ ๊ตฌ์ฑ์ ์ถ๊ฐํ์ธ์:
<repositories>
<repository>
<id>repository.groupdocs.com</id>
<name>GroupDocs Repository</name>
<url>https://releases.groupdocs.com/annotation/java/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-annotation</artifactId>
<version>25.2</version>
</dependency>
</dependencies>ํ: ์ต์ ๋ฒ์ ๋ฒํธ๋ GroupDocs ์น์ฌ์ดํธ์์ ํ์ธํ์ธ์. ๋ฒ๊ทธ ์์ ๋ฐ ์๋ก์ด ๊ธฐ๋ฅ์ด ์ ๊ธฐ์ ์ผ๋ก ์ ๋ฐ์ดํธ๋ฉ๋๋ค.
๋ผ์ด์ ์ค์ ๋ํด ๊ผญ ์์๋์ด์ผ ํ ์ ์ด ์์ต๋๋ค. GroupDocs.Annotation์ ์์ ์ ์ฌ์ฉ์ ๋ฌด๋ฃ๊ฐ ์๋์ง๋ง, ํ๊ฐ์ฉ์ ์ฝ๊ฒ ํ ์ ์์ต๋๋ค:
- ๋ฌด๋ฃ ์ฒดํ: ํ ์คํธ์ ์๊ท๋ชจ ํ๋ก์ ํธ์ ์ ํฉํฉ๋๋ค. GroupDocs releases page์์ ๋ค์ด๋ก๋ํ์ธ์. ์ฒดํ ๋ฒ์ ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ์ ์ํฐ๋งํฌ๋ฅผ ์ถ๊ฐํ์ง๋ง ๊ฐ๋ฐ ๋จ๊ณ์์๋ ๊ด์ฐฎ์ต๋๋ค.
- ์์ ๋ผ์ด์ ์ค: ํ๊ฐ ๊ธฐ๊ฐ์ ๋ ๋๋ฆฌ๊ณ ์ถ๋์? support forum์์ ์์ฒญํ๋ฉด ์ํฐ๋งํฌ ์์ด ์ฐ์ฅ๋ ์ฒดํ์ ๋ฐ์ ์ ์์ต๋๋ค.
- ์ ์ ๋ผ์ด์ ์ค: ํ๋ก๋์ ์ ์ค๋น๊ฐ ๋์๋ค๋ฉด purchase page์์ ๊ตฌ๋งคํ์ธ์. ์ ๊ณต๋๋ ๊ธฐ๋ฅ์ ๊ณ ๋ คํ๋ฉด ๊ฐ๊ฒฉ์ ํฉ๋ฆฌ์ ์ ๋๋ค.
ํ์ํ ํด๋์ค๋ฅผ ์ํฌํธํ๊ณ Annotator ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ ๊ฒ๋ง์ผ๋ก ์์ํ ์ ์์ต๋๋ค. ๋ค์ ์น์
์์ ์ค์ ์ฌ์ฉ ์๋ฅผ ๋ณด์ฌ์ค ๊ฒ์ด์ง๋ง, ๊ธฐ์ตํ ํต์ฌ์ GroupDocs๊ฐ ํ์ค Java ๊ดํ์ ๋ฐ๋ฅด๋ฉฐ ๋ณต์กํ ์ด๊ธฐํ ์ ์ฐจ๋ ๋ณ๋ ์ค์ ํ์ผ์ด ํ์ ์๋ค๋ ์ ์
๋๋ค.
์ด์ ์ฌ๋ฏธ์๋ ๋ถ๋ถโ๋ฌธ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ์ค์ ๋ก ์์ฑํด๋ด ์๋ค! ๊ณผ์ ์ ์์๋ณด๋ค ๊ฐ๋จํ์ง๋ง, ๋ช ๊ฐ์ง ๋ฏธ๋ฌํ ์ ์ ์ดํดํ๋ฉด ์ข์ต๋๋ค.
๋ฌธ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์์ฑ์ ์ธ ๋จ๊ณ์ ๋์ค์ ๊ฐ์ต๋๋ค:
- ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋ชจ์๊ณผ ์ ์ฅ ์์น๋ฅผ ์ค์
- ๋ฏธ๋ฆฌ๋ณผ ํ์ด์ง๋ฅผ ์ง์
- ์ค์ ์ด๋ฏธ์ง ์์ฑ
GroupDocs.Annotation์ ํฌ๋งท ๊ฐ์ง, ํ์ด์ง ๋ ๋๋ง, ์ด๋ฏธ์ง ์ต์ ํ, ํ์ผ ์ถ๋ ฅ ๋ฑ ๋ณต์กํ ์์ ์ ๋ชจ๋ ๋ด๋ถ์์ ์ฒ๋ฆฌํฉ๋๋ค. ์ฌ๋ฌ๋ถ์ ์ํ๋ ๊ฒฐ๊ณผ๋ง ์๋ ค์ฃผ๋ฉด ๋ฉ๋๋ค.
์ฌ๊ธฐ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์์ฑ ์ฒญ์ฌ์ง์ ์ค์ ํฉ๋๋ค. CreatePageStream ์ธํฐํ์ด์ค๋ ์ฒ์์ ๋ค์ ์ํ์ ์ผ๋ก ๋ณด์ผ ์ ์์ง๋ง, ์ค์ ๋ก๋ ๋งค์ฐ ์ค๋งํธํฉ๋๋คโ๊ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ด๋ฏธ์ง๊ฐ ์ ์ฅ๋ ์์น๋ฅผ ๋์ ์ผ๋ก ๊ฒฐ์ ํ ์ ์๊ฒ ํด ์ค๋๋ค.
import com.groupdocs.annotation.Annotator;
import com.groupdocs.annotation.exception.GroupDocsException;
import com.groupdocs.annotation.options.pagepreview.CreatePageStream;
import com.groupdocs.annotation.options.pagepreview.PreviewFormats;
import com.groupdocs.annotation.options.pagepreview.PreviewOptions;
import java.io.FileOutputStream;
import java.io.OutputStream;
PreviewOptions previewOptions = new PreviewOptions(new CreatePageStream() {
@Override
public OutputStream invoke(int pageNumber) {
String fileName = "YOUR_OUTPUT_DIRECTORY/GenerateDocumentPagesPreview_" + pageNumber + ".png";
try {
return new FileOutputStream(fileName);
} catch (Exception ex) {
throw new GroupDocsException(ex); // Handle exceptions appropriately.
}
}
});๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์? CreatePageStream ์ธํฐํ์ด์ค๋ ๋ฏธ๋ฆฌ๋ณด๊ธฐํ ๊ฐ ํ์ด์ง๋ง๋ค ํธ์ถ๋ฉ๋๋ค. pageNumber ๋งค๊ฐ๋ณ์๋ ํ์ฌ ์ฒ๋ฆฌ ์ค์ธ ํ์ด์ง ๋ฒํธ๋ฅผ ์๋ ค ์ฃผ๋ฏ๋ก ๊ณ ์ ํ์ผ๋ช
์ ๋ง๋ค ์ ์์ต๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ์ต๋ ์ ์ฐ์ฑ์ ์ ๊ณตํ๋ฉฐ, ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ค๋ฅด๊ฒ ์ง์ ํ๊ฑฐ๋, ๋ช
๋ช
๊ท์น์ ๋ฐ๊พธ๊ฑฐ๋, ์น ์๋ต์ผ๋ก ์ง์ ์คํธ๋ฆฌ๋ฐํ๋ ๋ฑ ๋ค์ํ ํ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค.
์ด์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ์ ์ธ๊ด๊ณผ ๋์์ ์ธ๋ฐํ๊ฒ ์กฐ์ ํ ์ ์์ต๋๋ค:
previewOptions.setResolution(85); // Set desired resolution.
previewOptions.setPreviewFormat(PreviewFormats.PNG); // Choose PNG as the output format.
previewOptions.setPageNumbers(new int[]{1, 2}); // Specify pages to generate previews for.ํด์๋ ์ค์: ํด์๋ ์ค์ ์ ์ด๋ฏธ์ง ํ์ง๊ณผ ํ์ผ ํฌ๊ธฐ์ ์ง์ ์ํฅ์ ์ค๋๋ค. ๊ฐ๋จํ ๊ฐ์ด๋:
- 72 DPI: ์น ์ธ๋ค์ผ์ ์ ํฉ, ํ์ผ ํฌ๊ธฐ ์์
- 96 DPI: ๋๋ถ๋ถ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ค, ํ์ง๊ณผ ํฌ๊ธฐ ๊ท ํ
- 150 DPI: ๊ณ ํ์ง, ์ธ์ ๋๋ ์์ธ ๋ณด๊ธฐ์ฉ
- 300 DPI: ์ธ์ ํ์ง, ํ์ผ ํฌ๊ธฐ ํฌ๊ฒ
ํฌ๋งท ์ ํ: ์์ ์์๋ PNG๋ฅผ ์ฌ์ฉํฉ๋๋ค(์ต๊ณ ํ์ง). ํ์ผ ํฌ๊ธฐ๋ฅผ ์ค์ด๊ณ ์์ถ ์ํฐํฉํธ๊ฐ ๊ด์ฐฎ๋ค๋ฉด JPEG๋ ์ง์ํฉ๋๋ค.
ํ์ด์ง ์ ํ: setPageNumbers ๋ฉ์๋๋ก ๋ฏธ๋ฆฌ๋ณผ ํ์ด์ง๋ฅผ ์ง์ ์ง์ ํ ์ ์์ต๋๋ค. ๋๋ ๋ฌธ์์์ ํต์ฌ ํ์ด์ง๋ง ๋ฏธ๋ฆฌ๋ณด๊ธฐํ ๋ ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
์ด์ ๋ง๋ฒ์ด ์ผ์ด๋ฉ๋๋ค:
try (Annotator annotator = new Annotator("YOUR_DOCUMENT_DIRECTORY/input.pdf")) {
annotator.getDocument().generatePreview(previewOptions);
}์ tryโwithโresources๋ฅผ ์ฌ์ฉํ๋์? ๋ฌธ์๊ฐ ์ฒ๋ฆฌ ํ ์ ๋๋ก ๋ซํ๋๋ก ๋ณด์ฅํฉ๋๋ค. ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ํ์ผ ์ ๊ธ ๋ฐฉ์ง์ ํ์์ ์
๋๋ค. Annotator๋ AutoCloseable์ ๊ตฌํํ๋ฏ๋ก ์ด ํจํด์ด ์๋ฒฝํ ๋์ํฉ๋๋ค.
ํ์ผ ๊ฒฝ๋ก ์ฃผ์: ์ ๋ ฅ ํ์ผ ๊ฒฝ๋ก๊ฐ ์ ํํ๊ณ ํ์ผ์ด ์ค์ ์กด์ฌํ๋์ง ํ์ธํ์ธ์. ๋ํ ์ถ๋ ฅ ๋๋ ํฐ๋ฆฌ๊ฐ ๋ฏธ๋ฆฌ ์กด์ฌํด์ผ ํฉ๋๋คโGroupDocs๋ ์๋์ผ๋ก ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ง๋ค์ง ์์ต๋๋ค.
๋ฉ๋ชจ๋ฆฌ ๋ฌธ์ : ๋์ฉ๋ ๋ฌธ์๋ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์์ฑ ์ค ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ง์ด ์ฐจ์งํ ์ ์์ต๋๋ค. ๋ง์ ๋ฌธ์๋ ๋งค์ฐ ํฐ ํ์ผ์ ์ฒ๋ฆฌํ๋ค๋ฉด:
- ๋ฌธ์๋ฅผ ์์ ๋ฐฐ์น๋ก ๋๋ ์ฒ๋ฆฌ
-Xmxํ๋ผ๋ฏธํฐ๋ก JVM ํ ํฌ๊ธฐ ํ๋- ์ด๊ธฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ์ ๋ฎ์ ํด์๋ ์ฌ์ฉ
ํ์ผ ๊ถํ: ์ถ๋ ฅ ๋๋ ํฐ๋ฆฌ์ ์ฐ๊ธฐ ๊ถํ์ด ์๋์ง ํ์ธํ์ธ์. ํนํ ์ปจํ ์ด๋ ํ๊ฒฝ์ด๋ ๋ณด์ ์ ์ฑ ์ด ์๊ฒฉํ ์๋ฒ์์๋ ํ์์ ๋๋ค.
ํฌ๋งท ์ง์: GroupDocs๋ ๋ง์ ํฌ๋งท์ ์ง์ํ์ง๋ง, ์ค์ ์ฌ์ฉ ์ค์ธ ๋ฌธ์ ์ ํ์ผ๋ก ๋ฐ๋์ ํ ์คํธํ์ธ์. ์ผ๋ถ ์ค๋๋๊ฑฐ๋ ํฌ๊ทํ ํฌ๋งท์ ์ง์๋์ง ์์ ์ ์์ผ๋ฉฐ, ์ด๋ฐ ๊ฒฝ์ฐ๋ฅผ ์ฐ์ํ๊ฒ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค.
๋ฌธ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์์ฑ์ ํ ๋จ๊ณ ๋์ด์ฌ๋ฆฌ๋ ๊ณ ๊ธ ๊ธฐ์ ๊ณผ ์ต์ ํ ๋ฐฉ๋ฒ์ ์ดํด๋ด ์๋ค.
๊ธฐ๋ณธ ์์ ๋ ๋จ์ํ ๋ช ๋ช ๊ท์น์ ๋ณด์ฌ์ฃผ์ง๋ง, ์ค์ ์ ํ๋ฆฌ์ผ์ด์ ์์๋ ๋ ์ ๊ตํ ์ ๊ทผ์ด ํ์ํฉ๋๋ค:
PreviewOptions previewOptions = new PreviewOptions(new CreatePageStream() {
@Override
public OutputStream invoke(int pageNumber) {
// Include timestamp for cache busting
String timestamp = String.valueOf(System.currentTimeMillis());
String fileName = String.format("preview_%s_page_%d_%s.png",
documentId, pageNumber, timestamp);
String fullPath = outputDirectory + "/" + fileName;
try {
return new FileOutputStream(fullPath);
} catch (Exception ex) {
throw new GroupDocsException(ex);
}
}
});์ด ์ ๊ทผ ๋ฐฉ์์:
- ์ถฉ๋ ์๋ ๊ณ ์ ํ์ผ๋ช ์ ๊ณต
- ์ด๋ค ๋ฌธ์์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ์ธ์ง ์ฝ๊ฒ ์๋ณ ๊ฐ๋ฅ
- ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ์บ์ ๋ฌดํจํ ์ง์
์ฌ๋ฌ ๋ฌธ์์ ๋ํด ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ์์ฑํด์ผ ํ ๋ ํจ์จ์ฑ์ด ํต์ฌ์ ๋๋ค:
public void generatePreviewsForDocuments(List<String> documentPaths, String outputDir) {
for (String docPath : documentPaths) {
try (Annotator annotator = new Annotator(docPath)) {
String docName = Paths.get(docPath).getFileName().toString();
PreviewOptions options = new PreviewOptions(pageNumber -> {
String fileName = String.format("%s/%s_page_%d.png",
outputDir, docName, pageNumber);
try {
return new FileOutputStream(fileName);
} catch (Exception ex) {
throw new GroupDocsException(ex);
}
});
options.setResolution(96);
options.setPreviewFormat(PreviewFormats.PNG);
annotator.getDocument().generatePreview(options);
} catch (Exception ex) {
// Log error but continue processing other documents
System.err.println("Failed to process " + docPath + ": " + ex.getMessage());
}
}
}๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ: ํ๋ก๋์ ์์๋ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ๋ชจ๋ํฐ๋งํ๊ณ ์ ๋ฆฌ ์ ๋ต์ ๊ตฌํํ์ธ์:
// Force garbage collection after processing large batches
System.gc();๋ณ๋ ฌ ์ฒ๋ฆฌ: ๋์ฉ๋ ๋ฌธ์ ์งํฉ์ ์ฒ๋ฆฌํ ๋๋ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ๊ณ ๋ คํ๋ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์ ์ํ์ธ์:
documentPaths.parallelStream().forEach(this::generatePreviewForDocument);์บ์ ์ ๋ต: ๋ถํ์ํ ์ฌ์์ฑ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ง๋ฅํ ์บ์ฑ์ ๊ตฌํํ์ธ์:
- ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํ์ผ์ด ์ด๋ฏธ ์กด์ฌํ๊ณ ์๋ณธ๋ณด๋ค ์ต์ ์ธ์ง ํ์ธ
- ํ์ผ ์์ ํ์์คํฌํ๋ฅผ ์ฌ์ฉํด ์ฌ์์ฑ ํ์ ์ฌ๋ถ ํ๋จ
- ๋น ๋ฅธ ์กฐํ๋ฅผ ์ํด ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ
๋ฏธ๋ฆฌ๋ณด๊ธฐ ์์ฑ์ด ์ค์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๋ป๊ฒ ๋ค์ด๊ฐ๋์ง ์ดํด๋ด ์๋ค.
Spring Boot ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํตํฉํ๋ ์์์ ๋๋ค:
@RestController
public class DocumentPreviewController {
@GetMapping("/api/documents/{id}/preview/{pageNumber}")
public ResponseEntity<byte[]> getDocumentPreview(
@PathVariable String id,
@PathVariable int pageNumber) {
// Check if preview already exists
String previewPath = getPreviewPath(id, pageNumber);
if (Files.exists(Paths.get(previewPath))) {
byte[] imageBytes = Files.readAllBytes(Paths.get(previewPath));
return ResponseEntity.ok()
.contentType(MediaType.IMAGE_PNG)
.body(imageBytes);
}
// Generate preview if it doesn't exist
generatePreviewForPage(id, pageNumber);
// Return the generated preview
byte[] imageBytes = Files.readAllBytes(Paths.get(previewPath));
return ResponseEntity.ok()
.contentType(MediaType.IMAGE_PNG)
.body(imageBytes);
}
}์ํฐํ๋ผ์ด์ฆ ๋ฌธ์ ๊ด๋ฆฌ ์์คํ ์์๋ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ๋น๋๊ธฐ์ ์ผ๋ก ์์ฑํ ์ ์์ต๋๋ค:
@Service
public class DocumentPreviewService {
@Async
public CompletableFuture<List<String>> generatePreviewsAsync(String documentPath) {
List<String> previewPaths = new ArrayList<>();
try (Annotator annotator = new Annotator(documentPath)) {
// Get total page count first
int pageCount = annotator.getDocument().getPages().size();
PreviewOptions options = new PreviewOptions(pageNumber -> {
String previewPath = generatePreviewPath(documentPath, pageNumber);
previewPaths.add(previewPath);
try {
return new FileOutputStream(previewPath);
} catch (Exception ex) {
throw new GroupDocsException(ex);
}
});
// Generate previews for all pages
int[] allPages = IntStream.rangeClosed(1, pageCount).toArray();
options.setPageNumbers(allPages);
options.setResolution(150);
annotator.getDocument().generatePreview(options);
}
return CompletableFuture.completedFuture(previewPaths);
}
}ํ๋ก๋์ ํ๊ฒฝ์์ ๋ฌธ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์์ฑ์ ๋ค๋ฃฐ ๋๋ ์ฑ๋ฅ์ด ํต์ฌ์ ๋๋ค. ์ง์คํด์ผ ํ ์ฃผ์ ์์ญ์ ์ ๋ฆฌํ์ต๋๋ค.
๋ฌธ์ ํฌ๊ธฐ ์ ํ: ๋์ฉ๋ ๋ฌธ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ธ๊ฒฉํ ์๋ชจํฉ๋๋ค. ํฌ๊ธฐ ๊ฒ์ฌ๋ฅผ ๊ตฌํํ์ธ์:
File documentFile = new File(documentPath);
long fileSizeInMB = documentFile.length() / (1024 * 1024);
if (fileSizeInMB > 50) { // Adjust threshold based on your server capacity
// Process with lower resolution or in smaller chunks
previewOptions.setResolution(72);
}๋ฆฌ์์ค ์ ๋ฆฌ: ํญ์ tryโwithโresources๋ฅผ ์ฌ์ฉํ๊ณ , ์ฅ๊ธฐ ์คํ ํ๋ก์ธ์ค์์๋ ๋ช ์์ ์ ๋ฆฌ๋ฅผ ๊ณ ๋ คํ์ธ์:
try (Annotator annotator = new Annotator(documentPath)) {
// Generate previews
annotator.getDocument().generatePreview(previewOptions);
} // Automatic cleanup happens hereํ ๊ธฐ๋ฐ ์ฒ๋ฆฌ: ๋ง์ ๋ฌธ์๋ฅผ ์ฒ๋ฆฌํด์ผ ํ๋ค๋ฉด ๋ฉ์์ง ํ๋ฅผ ํ์ฉํ์ธ์:
@Component
public class PreviewGenerationWorker {
@RabbitListener(queues = "preview-generation-queue")
public void processPreviewRequest(PreviewRequest request) {
try {
generateDocumentPreviews(request.getDocumentPath(), request.getOutputDir());
} catch (Exception ex) {
// Handle errors, potentially retry or send to dead letter queue
log.error("Failed to generate previews for {}", request.getDocumentPath(), ex);
}
}
}์บ์ฑ ์ ๋ต: ๋ถํ์ํ ์ฌ์์ฑ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ง๋ฅํ ์บ์ฑ์ ๊ตฌํํ์ธ์:
public boolean shouldRegeneratePreview(String documentPath, String previewPath) {
try {
Path docPath = Paths.get(documentPath);
Path prevPath = Paths.get(previewPath);
if (!Files.exists(prevPath)) {
return true; // Preview doesn't exist
}
FileTime docModified = Files.getLastModifiedTime(docPath);
FileTime previewModified = Files.getLastModifiedTime(prevPath);
return docModified.compareTo(previewModified) > 0; // Doc is newer
} catch (Exception ex) {
return true; // When in doubt, regenerate
}
}์ ์ํ ํด์๋: ์ฌ์ฉ ๋ชฉ์ ์ ๋ฐ๋ผ ํด์๋๋ฅผ ์กฐ์ ํ์ธ์:
public int getOptimalResolution(PreviewUsage usage) {
switch (usage) {
case THUMBNAIL: return 72;
case WEB_DISPLAY: return 96;
case DETAILED_REVIEW: return 150;
case PRINT_QUALITY: return 300;
default: return 96;
}
}์ต์ ์ ์ค์ ์ ๊ฐ์ถ์ด๋ ๊ฐ๋ ๋ฌธ์ ์ ์ง๋ฉดํ ์ ์์ต๋๋ค. ๊ฐ์ฅ ํํ ๋ฌธ์ ์ ํด๊ฒฐ์ฑ ์ ์ ๋ฆฌํ์ต๋๋ค.
๋ฌธ์ : "Access denied" ๋๋ "File not found" ์ค๋ฅ
ํด๊ฒฐ:
- ํ์ผ ๊ฒฝ๋ก๊ฐ ์ ํํ๊ณ ํ์ผ์ด ์กด์ฌํ๋์ง ํ์ธ
- ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ณธ ๋ฌธ์์ ๋ํ ์ฝ๊ธฐ ๊ถํ์ด ์๋์ง ํ์ธ
- ์ถ๋ ฅ ๋๋ ํฐ๋ฆฌ์ ์ฐ๊ธฐ ๊ถํ์ด ์๋์ง ํ์ธ
- Linux/Unix ํ๊ฒฝ์์๋ ํ์ผ ์์ ์์ ๊ถํ์ ์ ๊ฒ
๋ฌธ์ : OutOfMemoryError ๋๋ ์ฒ๋ฆฌ ์๋ ์ ํ
ํด๊ฒฐ:
- JVM ํ ํฌ๊ธฐ ํ๋:
-Xmx2048m๋ฑ - ํ ๋ฒ์ ์ฒ๋ฆฌํ๋ ํ์ด์ง ์ ๊ฐ์
- ๋์ฉ๋ ๋ฌธ์์๋ ๋ฎ์ ํด์๋ ์ฌ์ฉ
- (์ ์ฝ๋ ์ค๋ํซ ์ฐธ๊ณ ) ๋ฌธ์ ํฌ๊ธฐ ์ ํ ๊ตฌํ
๋ฌธ์ : ์ผ๋ถ ๋ฌธ์๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๊ฐ ์์ฑ๋์ง ์์
ํด๊ฒฐ:
- ๋ฌธ์๋ฅผ ์๋์ผ๋ก ์ด์ด ์์ ์ฌ๋ถ ํ์ธ
- GroupDocs.Annotation ์ง์ ํฌ๋งท ๋ชฉ๋ก ํ์ธ (50๊ฐ ์ด์ ์ง์)
- ๋น๋ฐ๋ฒํธ ๋ณดํธ ๋ฌธ์๋ ์ถ๊ฐ ์ฒ๋ฆฌ ํ์ (FAQ ์ฐธ๊ณ )
- ์๋ฒ์ ํ์ํ ๋ชจ๋ ํฐํธ๊ฐ ์ค์น๋์ด ์๋์ง ํ์ธ
๋ฌธ์ : ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ด๋ฏธ์ง๊ฐ ํ๋ฆฌ๊ฑฐ๋ ํฝ์
ํ๋จ
ํด๊ฒฐ:
- ํด์๋ ์ค์ ์ ๋์ด๋ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ๊ฐ์
- ํ ์คํธ๊ฐ ๋ง์ ๋ฌธ์๋ JPEG๋ณด๋ค PNG๊ฐ ์ผ๋ฐ์ ์ผ๋ก ๋ ์ข์
- ์๋ณธ ๋ฌธ์ ์์ฒด์ ํ์ง์ ํ์ธ
Q: GroupDocs.Annotation์ด ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์์ฑ์ ์ง์ํ๋ ํ์ผ ํฌ๋งท์?
A: PDF, Word, Excel, PowerPoint, OpenDocument, ์ผ๋ฐ ์ด๋ฏธ์ง ํ์
, DWGยทDXF ๊ฐ์ CAD ํ์ผ ๋ฑ 50๊ฐ ์ด์์ ์ง์ํฉ๋๋ค. ์ ์ฒด ๋ชฉ๋ก์ ๊ณต์ ๋ฌธ์์ ์ ์ง๋ฉ๋๋ค.
Q: ๋น๋ฐ๋ฒํธ ๋ณดํธ ๋ฌธ์์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ์์ฑํ ์ ์๋์?
A: ์. ๋น๋ฐ๋ฒํธ๋ฅผ ํฌํจํ LoadOptions๋ฅผ ์ฌ์ฉํด new Annotator(filePath, new LoadOptions(password))์ ๊ฐ์ด ์์ฑํ๋ฉด ๋ฉ๋๋ค.
Q: ๋งค์ฐ ํฐ ๋ฌธ์๋ฅผ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ์์ด ์ฒ๋ฆฌํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ๋์?
A: ํ์ด์ง๋ฅผ ์์ ๋ฐฐ์น๋ก ๋๋์ด ์ฒ๋ฆฌํ๊ณ , ์ด๊ธฐ ์ธ๋ค์ผ์๋ ๋ฎ์ ํด์๋๋ฅผ ์ฌ์ฉํ๋ฉฐ, JVM ํ์ ๋๋ฆฌ๊ณ , ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ๋ชจ๋ ๋ก๋ํ์ง ์๊ณ ์คํธ๋ฆฌ๋ฐํ๋ ๋ฐฉ์์ ๊ณ ๋ คํ์ธ์.
Q: ์ถ๋ ฅ ๋๋ ํฐ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๋์ ์ผ๋ก ์ปค์คํฐ๋ง์ด์งํ ์ ์๋์?
A: ๋ฌผ๋ก ์
๋๋ค. CreatePageStream ์ธํฐํ์ด์ค๋ฅผ ํตํด ํ์ผ ์ ์ฅ ์์น๋ฅผ ์์ ํ ์ ์ดํ ์ ์์ต๋๋ค. ๋ ์ง, ๋ฌธ์ ์ ํ, ์ฌ์ฉ์ ๋ฑ ์ํ๋ ๊ธฐ์ค์ผ๋ก ๊ฒฝ๋ก ๋ก์ง์ ๊ตฌํํ๋ฉด ๋ฉ๋๋ค.
Q: PNG ์ธ์ ๋ค๋ฅธ ํฌ๋งท์ผ๋ก ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ์์ฑํ ์ ์๋์?
A: ์. JPEG, BMP ๋ฑ๋ ์ง์ํฉ๋๋ค. ํ์ผ ํฌ๊ธฐ๋ฅผ ์ค์ด๊ณ ์์ถ ์ํฐํฉํธ๊ฐ ๊ด์ฐฎ๋ค๋ฉด previewOptions.setPreviewFormat(PreviewFormats.JPEG)์ ๊ฐ์ด ํฌ๋งท์ ์ ํํ๋ฉด ๋ฉ๋๋ค.
์ด์ preview pdf java ์ธ๋ค์ผ์ GroupDocs.Annotation์ผ๋ก ๋ง์คํฐํ์ต๋๋ค! ์ด ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ํ์ผ ๋ธ๋ผ์ฐ์ ๋ถํฐ ๋ณต์กํ ์ํฐํ๋ผ์ด์ฆ ๋ฌธ์ ๊ด๋ฆฌ ์์คํ ๊น์ง, ์ฌ์ฉ์์๊ฒ ์ ๊ณตํ๋ ๋ฌธ์ ๊ฒฝํ์ ํฌ๊ฒ ํฅ์์ํต๋๋ค.
ํต์ฌ ์์ฝ:
- ๋ช ์ค์ Java ์ฝ๋๋ง์ผ๋ก ๊ณ ํ์ง PNG ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ์์ฝ๊ฒ ์์ฑ
- ํด์๋, ํฌ๋งท, ํ์ด์ง ์ ํ ๋ฑ์ ์์ ๋กญ๊ฒ ์กฐ์ ํด ๋ชจ๋ ์ฌ์ฉ ์ฌ๋ก์ ๋ง์ถค ์ ์ฉ
- ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ, ์บ์ฑ, ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ฑ ์ฑ๋ฅ ์ค์ฌ ํ์ผ๋ก ๋๊ท๋ชจ ํ๊ฒฝ์์๋ ์์ ์ ์ด์
- ํ๋ถํ ์ค๋ฅ ์ฒ๋ฆฌ์ ๋ฌธ์ ํด๊ฒฐ ๊ฐ์ด๋๋ฅผ ํตํด ์ผ๋ฐ์ ์ธ ํจ์ ์ ์ฌ์ ์ ์ฐจ๋จ
๋ค์ ๋จ๊ณ: GroupDocs.Annotation์ ์ถ๊ฐ ๊ธฐ๋ฅโ์ฃผ์ ์ถ๊ฐ, ํ ์คํธ ์ถ์ถ, ํฌ๋งท ๋ณํ ๋ฑโ์ ํ์ํด ๋ณด์ธ์. ๊ณต์ ๋ฌธ์์์ ๋ชจ๋ ๊ธฐ๋ฅ์ ๋ํ ์์ธํ ๊ฐ์ด๋๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
์ค์ฒ ๊ณํ:
- ์ํ ํ๋ก์ ํธ๋ฅผ ํด๋ก ํ๊ณ ์ง์ PDF, Word, Excel ํ์ผ๋ก ์ฝ๋๋ฅผ ์คํํด ๋ณด์ธ์.
- UI์ ๋ง๋ ์ต์ ์ ํด์๋์ ํฌ๋งท์ ์คํํด ๋ณด์ธ์.
- ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์์ฑ์ ์น ์๋ํฌ์ธํธ์ ํตํฉํ๊ณ , ๊ฒฐ๊ณผ๋ฅผ ์บ์ํด ๋น ๋ฅธ ์ฌ๋ก๋๋ฅผ ๊ตฌํํ์ธ์.
์ฝ๋ฉ์ ์ฆ๊ธฐ์๊ณ , ์ฌ์ฉ์์๊ฒ ์ ๊ณตํ ๋ถ๋๋ฌ์ด ๋ฌธ์ ๊ฒฝํ์ ๊ธฐ๋ํด ๋ณด์ธ์!
์ต์ข
์
๋ฐ์ดํธ: 2026-01-18
ํ
์คํธ ํ๊ฒฝ: GroupDocs.Annotation 25.2 for Java
์์ฑ์: GroupDocs