Excel에서 PDF 만들기 → iText로 태그 정보 가져오기
Java 소스
라이브러리는 iText를 사용.
태그 구조의 로드는 TaggedPdfReaderTool 클래스에서 실시한다.
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.parser.TaggedPdfReaderTool;
public class ReadPdf {
public static void main(String[] args) {
PdfReader reader = null;
try {
// PDFの読み込み
reader = new PdfReader("Book1.pdf");
// 構造化タグの取得
ByteArrayOutputStream out = new ByteArrayOutputStream();
TaggedPdfReaderTool taggedReader = new TaggedPdfReaderTool();
taggedReader.convertToXml(reader, out, "UTF-8");
// DOMの生成
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = builder.parse(new ByteArrayInputStream(out.toByteArray()));
// ファイルに書き込む
Transformer tf = TransformerFactory.newInstance().newTransformer();
tf.setOutputProperty(OutputKeys.INDENT, "yes");
tf.setOutputProperty(OutputKeys.METHOD, "xml");
tf.setOutputProperty("{http://xml.apache.org/xalan}indent-amount", "4");
tf.transform(new DOMSource(doc), new StreamResult(new File("Book1.xml")));
} catch (IOException | ParserConfigurationException | SAXException | TransformerException e) {
e.printStackTrace();
} finally {
if (reader != null) {
reader.close();
}
}
}
}
Excel 파일
다른 이름으로 저장> PDF 마하타 XPS> 옵션> "액세서빌러티 용 문서 구조 태그"를 확인하고 저장.
PDF에서 얻은 태그 구조
HTML 테이블과 같은 태그 구조입니다.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Workbook>
<Worksheet>
<Table>
<TR>
<TD>
<P>ABC Report</P>
</TD>
</TR>
<TR>
<TD>
<P>2014/3/24</P>
</TD>
</TR>
<TR>
<TD>
<P>Goup1</P>
</TD>
</TR>
<TR>
<TD>
<P>Item1-1</P>
</TD>
<TD>
<P>Value1-1</P>
</TD>
</TR>
<TR>
<TD>
<P>Item1-2</P>
</TD>
<TD>
<P>Value1-2</P>
</TD>
</TR>
<TR>
<TD>
<P>Group2</P>
</TD>
</TR>
<TR>
<TD>
<P>Item2-1</P>
</TD>
<TD>
<P>Value2-1</P>
</TD>
</TR>
<TR>
<TD>
<P>Item2-2</P>
</TD>
<TD>
<P>Value2-2</P>
</TD>
</TR>
</Table>
</Worksheet>
</Workbook>
표로하면 이런 느낌
※ 공백 셀은 출력되지 않으므로 열이 어긋나 있음에 주의
열 1
열 2
ABC Report
2014/3/24
Goup1
Item1-1
Value1-1
Item1-2
Value1-2
Goup2
Item2-1
Value2-1
Item2-2
Value2-2
Reference
이 문제에 관하여(Excel에서 PDF 만들기 → iText로 태그 정보 가져오기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tag1216/items/d215f5b3679a37e7e5d7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)