PDF를 Excel 및 Markdown으로 변환
PDF를 Excel 및 Markdown으로 변환
이 가이드는 PDF를 Excel (.xlsx) 워크북 또는 Markdown으로 변환하는 방법과 두 형식 중 어느 하나에서 PDF를 다시 로드하는 방법을 보여줍니다. Document은 양방향 변환을 수행합니다; ExcelSaveOptions와 MarkdownSaveOptions은 내보내기를 조정하고, ExcelLoadOptions와 MarkdownLoadOptions는 가져오기를 조정합니다. 26.9.0부터.
PDF를 XLSX로
PDF에서 감지된 테이블은 형식이 지정된 셀을 가진 워크시트 그리드로 변환됩니다 — 숫자, 날짜, 불리언, 통화 및 백분율은 텍스트가 아니라 실제 Excel 값으로 기록됩니다 — 그리고 원본 스타일링(글꼴 종류/크기, 텍스트 색상, 셀 채우기, 테두리, 행 높이, 열 너비, 정렬, 병합 셀)이 그대로 유지됩니다. 테이블 셀 내부의 이미지는 그림으로 삽입됩니다.
import org.aspose.pdf.Document;
import org.aspose.pdf.ExcelSaveOptions;
try (Document doc = new Document("report.pdf")) {
ExcelSaveOptions options = new ExcelSaveOptions();
options.setFormat(ExcelSaveOptions.ExcelFormat.XLSX); // default
options.setMinimizeTheNumberOfWorksheets(true); // merge pages onto fewer sheets
options.setInsertBlankColumnAtFirst(false); // no leading spacer column
options.setUniformWorksheets(false); // allow per-sheet column widths
options.setStructuralHeuristics(true); // recover tables on untagged PDFs
options.setSuppressRunningHeadersFooters(true); // drop repeated page furniture
doc.save("report.xlsx", options);
}SaveFormat.Xlsx(별칭인 SaveFormat.Excel도 허용됩니다)는 기본 옵션으로 동일한 결과를 제공합니다: doc.save("report.xlsx", SaveFormat.Xlsx). ExcelSaveOptions의 자체 ExcelFormat 열거형은 XmlSpreadSheet2003, CSV, ODS을 Aspose.PDF API 호환성을 위해 허용하지만, 이 라이브러리는 설정된 값에 관계없이 항상 .xlsx 패키지를 기록합니다. 또한 doc.save(OutputStream, ExcelSaveOptions)를 사용하여 스트림에 기록할 수 있습니다.
XLSX를 PDF로, 실시간 양식 포함
.xlsx 워크북을 ExcelLoadOptions를 받는 Document 생성자를 통해 로드합니다. 각 시트는 내보내기 방향과 동일한 셀 형식 및 스타일 지원을 갖는 PDF 테이블로 변환됩니다.
import org.aspose.pdf.Document;
import org.aspose.pdf.ExcelLoadOptions;
try (Document doc = new Document("book.xlsx", new ExcelLoadOptions())) {
doc.save("book.pdf");
}Setting ExcelLoadOptions.setInteractiveForms(true)은(는) 숫자 및 레이블 셀을 정적 텍스트가 아닌 “실시간” PDF 양식으로 변환합니다: 숫자 셀은 편집 가능한 텍스트 필드가 되고, 수식 셀은 입력값에 따라 재계산되는 읽기 전용 필드가 되며, 레이블 또는 상수 셀은 다른 수식이 참조하지 않는 한 정적 텍스트로 유지됩니다. ExcelFormulaTranslator은 각 수식을 Acrobat JavaScript로 변환합니다; 지원되지 않는 함수가 포함된 수식은 마지막으로 계산된 정적 값으로 대체되어 필드에 올바른 숫자가 표시됩니다. 재계산은 forms/JavaScript 엔진이 있는 뷰어(Adobe Acrobat 또는 Foxit)에서만 실행되며, 해당 엔진이 없는 뷰어는 실시간 재계산 없이 미리 삽입된 값만 표시합니다.
import org.aspose.pdf.Document;
import org.aspose.pdf.ExcelLoadOptions;
ExcelLoadOptions options = new ExcelLoadOptions();
options.setInteractiveForms(true); // cells → fields, formulas → calculate actions
try (Document doc = new Document("invoice.xlsx", options)) {
doc.save("invoice-live.pdf");
}PDF를 Markdown으로
Document은(는) PDF를 CommonMark / GitHub-형식의 Markdown으로 변환합니다: 제목, 단락, 목록, 표, 강조(굵게/기울임/취소선), 인라인 및 블록 코드, 링크, 이미지, 그리고 각주.
import org.aspose.pdf.Document;
import org.aspose.pdf.MarkdownSaveOptions;
try (Document doc = new Document("article.pdf")) {
MarkdownSaveOptions options = new MarkdownSaveOptions();
options.setStructuralHeuristics(true); // recover headings/lists/tables
options.setSuppressRunningHeadersFooters(true); // drop repeated page furniture
options.setRasterizeVectorGraphics(true); // charts/shapes -> referenced images
doc.save("article.md", options);
}SaveFormat.Markdown은(는) 기본 옵션인 doc.save("article.md", SaveFormat.Markdown)을 사용해 동일한 결과를 제공합니다. Document.markdownText(MarkdownSaveOptions)는 파일을 쓰는 대신 Markdown을 String으로 반환합니다(별도의 “Markdown text” 접근자는 없으며, 메모리 내 결과를 얻기 위해 호출해야 하는 메서드입니다).
Markdown을 PDF로
Document 생성자를 통해 MarkdownLoadOptions을(를) 받아 Markdown 파일을 로드합니다. 손으로 작성한 CommonMark/GFM 부분 파서가 소스를 읽어들여 제목, 단락, 목록, 표, 강조, 코드, 링크, 이미지, 인용 블록 및 각주를 처리합니다. Markdown에 포함된 특수 HTML는 완전히 재현되지 않습니다.
import org.aspose.pdf.Document;
import org.aspose.pdf.MarkdownLoadOptions;
try (Document doc = new Document("README.md", new MarkdownLoadOptions())) {
doc.save("README.pdf");
}팁 및 모범 사례
- 정밀도는 구조적이며, 두 형식 모두 픽셀 단위로 정확하지 않습니다: 변환은 내용, 구조, 이미지 및 페이지 기하학을 보존하지만 정확한 렌더링 모습은 유지하지 않습니다.
ExcelSaveOptions.ExcelFormat그리고MarkdownSaveOptions구조 플래그는 오직 output 패키지 형식이나 휴리스틱만 변경합니다 — PDF에 태그된 실제 값이 여전히 표, 헤딩 또는 리스트로 감지되는 방식을 결정합니다.- 실시간 XLSX 양식의 경우, 내장된 셀 값을 올바른 대체값으로 간주하세요: 열 때 수식을 다시 계산하는 것은 양식 지원 뷰어만 가능합니다.
일반적인 문제
| 문제 | 원인 | 수정 |
|---|---|---|
XLSX 출력은 ExcelFormat.CSV 또는 ODS를 설정한 후에도 항상 .xlsx 확장자를 가집니다. | FOSS 라이터는 항상 OOXML .xlsx 패키지를 직렬화합니다; 다른 ExcelFormat 값은 Aspose.PDF API 호환성을 위해서만 존재합니다. | 출력은 설정한 ExcelFormat 값에 관계없이 .xlsx 로 취급합니다. |
| 재계산되는 XLSX 양식이 실시간 수식 대신 정적 숫자를 표시합니다. | PDF 뷰어에는 forms/JavaScript 엔진이 없습니다. | 실시간 재계산을 보려면 파일을 Adobe Acrobat 또는 Foxit에서 엽니다. |
| 수식 셀이 오래된 것처럼 보이는 값을 표시합니다. | ExcelFormulaTranslator은(는) 해당 수식의 기능을 지원하지 않습니다. | 이것이 문서화된 폴백이며, 필드는 마지막으로 계산된 정적 값을 유지합니다. |
FAQ
파일 대신 String 형태의 Markdown을 받을 수 있나요?
네 — Document.markdownText(MarkdownSaveOptions)을 호출하세요; 파일에 쓰는 대신 Markdown 텍스트를 바로 반환합니다.
XLSX 가져오기 도구가 실제 Excel 수식을 지원하나요?
ExcelLoadOptions.setInteractiveForms(true)가 설정된 경우에만, 그리고 ExcelFormulaTranslator이 Acrobat JavaScript로 변환할 수 있는 함수 집합만 지원됩니다. 그 외의 경우는 소스 워크북에서 마지막으로 계산된 정적 값으로 대체됩니다.
API Reference 요약
| 클래스/메서드 | 설명 |
|---|---|
ExcelSaveOptions | PDF를 XLSX로 내보내는 기능을 조정합니다 |
ExcelLoadOptions | XLSX를 PDF로 가져오는 기능을, 실시간 양식을 포함하여 조정합니다 |
ExcelFormat | 대상 스프레드시트 형식은 ExcelSaveOptions에서 허용됩니다 |
ExcelFormulaTranslator | 실시간 양식을 위해 Excel 수식을 Acrobat JavaScript으로 변환합니다 |
MarkdownSaveOptions | PDF를 Markdown으로 내보내는 기능을 조정합니다 |
MarkdownLoadOptions | Markdown을 PDF로 가져오는 기능을 조정합니다 |
Document.save(String, SaveFormat) / `Document.save(String, ExcelSaveOptions | MarkdownSaveOptions)` |
Document.markdownText(MarkdownSaveOptions) | Markdown을 String로 반환합니다. |