나는 각각 150 ~ 200,000 페이지를 포함하는 매우 큰 PDF 파일을 분할해야하는 프로젝트가 있습니다. 현재 iTextSharp DLL을 사용하여 Adobe Reader에서 만들 수있는 "표준"책갈피가있는 일부 PDF를 분할합니다. 또한 PDFsharp를 사용하여 이러한 "표준"책갈피가없는 PDF에서 텍스트를 추출하면 데이터베이스에서 키워드를 파싱하고 더 작은 PDF로 분할합니다. 그러나 첫 번째 방법과는 반대로 은 매우입니다.iTextSharp 및 PDFsharp를 사용하여 PDF의 내부에서 값의 사전을 가져 오기
"표준"책갈피가없는 PDF에는 색인/책갈피가 있습니다. 문제는 SOLindexer (Link to product page)에 의해 생성된다는 것입니다. 내부 COS 트리에서 이러한 색인/책갈피를 찾을 수있었습니다. PDF의 내부 구조 내에서 내가 원하는 곳으로가는 경로는 "trailer/Info/SSEDictionary/Document_MemberStatements"입니다. 이 전화 번호부 안에 (나는 전화 할 수있는 경우에) 나는 - DATA-를 클릭 할 수 있고 필요한 계좌 번호, 이름, 모든 것을 포함하는 메모장 파일을 열 수있다. (물론 형식은 이상하지만 읽을 수있다.) 나는 이것이 내가 사전에 넣을 수있는 가치라고 믿는다. 나는에서 SSEDictionary 내용을 얻기 위해 아무것도 할 수 있기
당신은, 예를 들어, 수행하여var stuff = reader.Info.Values
혹은
var stuff = reader.Info.Keys
을 정보 섹션에 액세스 할 수있어 iTextSharp 및 PDFsharp에서
하지만, 사람들은 막 다른 골목 될 듯 그곳에. iTextSharp는 예고편을 볼 수있게 해 주었고 거기에서 열쇠를 얻을 수 있었지만 과거에는 가장 낮은 수준까지 드릴 다운하지 못했습니다.
PdfSharp.Pdf.PdfDocument inputDocument = PdfSharp.Pdf.IO.PdfReader.Open(MapPath("PDFs/Member Statements/06-2012.pdf"), PdfDocumentOpenMode.ReadOnly);
PdfSharp.Pdf.PdfDictionary dictionary = (PdfSharp.Pdf.PdfDictionary)inputDocument.Internals.Catalog.Elements.GetObject("/Outlines");
그러나
, 내 현재의 상황과 경로를이 적응하는 방법을 알아낼 수있게되지 않은 : 나는 내부에서 일을과 같이 PDFsharp 사용하여 얻을 수있는 방법이 있다는 것을 알고있다 또한, 나는 iTextSharp (두 라이브러리 중 가장 좋아하는 것)에서 이것을 정확하게 수행하는 방법을 확실히 알지 못합니다. 따라서, 내 질문은 : 어떻게 정확히 당신이 사전에 코드를 (내가 열어 본 텍스트 파일에있는 모든 것들을 믿는) 얻을 것이라고? 또한, 그 코드는 어떻게 생겼을까요? 필자는 PDF의 내부 구조를 제대로 이해하고 있지만 필자는 거기에 도달하는 방법을 잘 모르고 있습니다. 감사!
짧고 간결한 프로그래밍 관련 질문으로이 벽을 바꾸시겠습니까? –
나는 그 일을하는 동안 그것에 대해 생각했지만 더 이상 내 상황을 더 자세히 설명 할 수는 없다고 생각합니다. –
별개의 단락으로 나누는 비트는 이미 다소 도움이 될 것입니다 ... –