2012-06-18 4 views
1

Quartz를 사용하여 pdf 파일을 구문 분석합니다.CGPDFScannerScan이 콜백 함수를 실행하지 않습니다.

모든 것이 하나의 파일을 제외하고는 정상적으로 작동합니다. 콜백 함수는 전혀 호출되지 않습니다.

내 연산자 테이블이 만들어졌고, 연산자를 CGPDFOperatorTableSetCallback으로 추가했습니다. 모든 것은 괜찮아 보이고 콜백은 호출되지 않습니다.

이 문제의 원인은 무엇입니까?

+0

검색 프로세스를 시작 했습니까? 어떤 사업자를 찾고 있습니까? 어쩌면 그 특정 페이지에 존재하지 않을 수도 있습니다. – iPDFdev

+0

물론 스캔 프로세스가 시작됩니다. 나는 BT, ET, Tj, TJ, T * ... 등등과 같은 많은 연산자를 추가했다. 최소한 그들은 그 파일에 텍스트가 있기 때문에 BT와 ET를 호출해야합니다. 파일에는 한 페이지가 들어 있습니다. – bob

+0

당신은 말했다 : "하나의 파일을 제외하고는 모든 것이 잘 작동합니다". 이것은 다른 PDF 파일이 작동하고 하나만 작동하지 않는다는 것을 의미합니까? – iPDFdev

답변

2

페이지 내용은 큰 형태의 XObject입니다. 양식 X 객체는 페이지와 같은 콘텐츠 스트림을 사용하는 자체 포함 그래픽 개체입니다.
다음 작업을 수행해야합니다. 스캔 한 운영자 목록에 'Do'연산자를 포함시킵니다. 마주 칠 때 피연산자는 XObject의 기호 이름입니다. 페이지 사전에서 'Resources'사전을 가져옵니다. 'Resources'사전에서 'XObject'사전을 가져옵니다. 'XObject'사전에서 'Do'연산자와 함께 사용 된 기호 이름을 사용하여 xobject를 가져옵니다. xobject에서 'Subtype'키 값을 가져옵니다. '이미지'인 경우 xobject는 이미지이기 때문에 무시합니다. 'Form'인 경우 양식 XObject가 있습니다. xobject에서 스트림을 가져온 다음 페이지 내용 스트림을 스캔 한 것과 같은 방식으로 스캔합니다. 동일한 스캐너 클래스를 재사용 할 수 있으며 스캔하는 객체를 알기 위해 컨텍스트를 유지하면됩니다. 양식 XObjects는 상위 양식 인 XObject '자원'사전에있는 다른 양식 XObjects를 사용할 수 있습니다.
귀하의 페이지 사전은 다음과 같습니다

<< 
/ArtBox[0.0 0.0 768.0 7066.0] 
/BleedBox[0.0 0.0 768.0 7066.0] 
/Contents 29 0 R 
/CropBox[0.0 0.0 768.0 7066.0] 
/Group 62 0 R 
/MediaBox[0.0 0.0 768.0 7066.0] 
/Parent 23 0 R 
/Resources 
<< 
    /ExtGState<</GS0 30 0 R>> 
    /XObject<</Fm0 61 0 R>> 
>> 
/Rotate 0 
/TrimBox[0.0 0.0 768.0 7066.0] 
/Type/Page 
>> 

'FM0'

은 페이지의 콘텐츠 스트림에 사용되는 양식 XObject에의 '마'연산자에 대한 피연산자의 이름입니다. 그 리소스 사전은 다음과 같습니다 :

/Resources 
<< 
    /ColorSpace<</CS0 32 0 R>> 
    /ExtGState<</GS0 34 0 R/GS1 30 0 R>> 
    /Font<</T1_0 38 0 R/T1_1 40 0 R>> 
    /ProcSet[/PDF/Text] 
    /XObject<</Fm0 45 0 R/Fm1 48 0 R/Fm2 51 0 R/Fm3 54 0 R/Fm4 57 0 R/Fm5 60 0 R>> 
>> 

다른 여러 가지 형태의 XObject를 사용합니다.

+0

안녕하세요 @iPDFdev, 귀하의 의견을 보내 주셔서 감사합니다 사실, 내 PDF 파일 "Do"연산자에 응답했습니다. 2 페이지가 있고 각 페이지에 대해 "Do"연산자가 두 번 호출됩니다. PDF는 간단한 텍스트이며,이 텍스트를 신속하게 문자열로 추출하면 어떤 방향으로 할 수 있습니까? 이것은 내 pdf입니다 : http://www.filedropper.com/eula_2 – Dzior

+0

@Dzior PDFKitten과 같은 라이브러리는 텍스트 추출에 도움이 될 수 있습니다. – iPDFdev

+0

답변을 주셔서 감사합니다. 실제로 비즈니스 소유자가 텍스트 파일로 변경했습니다. 고마워! – Dzior

관련 문제