2017-01-19 1 views
0

많은 PDF 파일을 별도의 파일로 압축하여 처리합니다. 그리고 때때로 우리는이 이상한 문제를 만난다. 추출 된 모든 페이지는 전체 파일 크기와 거의 같습니다. 예를 들어 pdf가 500MB이고 1000 페이지가있는 경우 별도의 페이지를 추출하면 500MB 당 1000 개의 파일이 생성됩니다. 별도의 페이지 파일을 열 때도 한 페이지 만 볼 수 있습니다.이상한 손상된 PDF 문제를 해결하는 방법

Adobe Acrobat의 파일 크기 줄이기 기능을 사용할 때 Adobe Acrobat은 시간이 좀 걸리고 더 작은 파일을 생성합니다. 그 후 페이지를 추출하는 문제가 수정되었습니다. 페이지가 올바르게 추출되기 시작하여 크기가 작습니다.

지금까지 몇 개의 파일이 있었는데 더 많은 파일이 있습니다.

필자는 이러한 파일을 자동으로 복구하는 도구를 찾으려고 노력했으며 Pdflib PLOP 도구를 다운로드하여 사용해 보았습니다. 불행히도 파일을 고치지는 않았지만 적용 가능한 모든 수리 및 최적화 옵션을 선택 했더라도.

~/--outputopt 최적화 "= 힘을 수리를 제거 = xmppolicy"-v 4 --inputopt을 풍덩 = 그것은하지 않았다 모든 --outfile fixed.pdf의 bad.pdf

: 여기에 명령 내가 사용하는 라인이다 전혀 문제를 해결하십시오.

혹시 이러한 문제가 발생 했습니까? 그리고 pdflib 라이브러리 또는 다른 라이브러리 또는 도구를 사용하여 수정하는 방법에 대한 예제가 있습니까?

+0

어떻게 프로그래밍 질문입니까? 가장 좋은 점은 [su]에 더 적합한 일반적인 소프트웨어 질문입니다. 최악의 경우, [도움말/주제에 따라] 여기에서 특별히 주제를 벗어난 도구 권장 사항에 대한 요청입니다. –

+0

이 문제점에 대한 해결책은 pdflib와 같은 일부 라이브러리에있을 수 있습니다. 그리고 솔루션은 자동화 (수동 작업이 아닌)에 필요합니다. 따라서 최상의 대답은 프로그래밍 응답입니다. 이것이 바로 수퍼 유저가 아닌 여기에있는 이유입니다. –

+0

귀하의 질문에 프로그래밍에 관한 내용이 전혀 없으므로 도구 또는 라이브러리를 추천 할 수 없습니다. 질문을 수정하거나 [su]로 옮겨야합니다. –

답변

1

이러한 파일은 PDF 파일 복구 프로그램을 고정하지 않는 이유는 그들이 로 시작하는 깨진 아니라는 것이다. 그들은 단순한 PDF 분할기가 소스 pdf에서 모든 자원 (이미지, 글꼴, ...)을 각 분할 pdf로 복사하는 방식으로 구축됩니다.

자세히, pdf는 문자열과 숫자와 같은 원시 개체와 배열 및 사전과 같은 더 복잡한 개체로 구성됩니다.

각 페이지는 페이지 트리에서 참조되는 사전으로 표시됩니다. 이 페이지 사전은 페이지를 작성하기위한 지시 사항이 들어있는 각각의 컨텐츠 스트림을 참조합니다. 이 지침은 모두 자체적으로 포함되는 것은 아니지만 글꼴 및 비트 맵 이미지와 같은 리소스를 이름으로 참조 할 수 있습니다. 이러한 리소스는 페이지 사전에서 참조되는 리소스 사전에서 조회됩니다.

그러나 리소스 사전은 참조하는 바로 그 페이지에 대한 리소스 만 포함 할 필요는 없으며 페이지에서 사용되지 않는 추가 항목이있을 수 있습니다.

이것은 PDF 생산은 단순히 모든 페이지 사전을 참조하는 하나의 리소스 사전에 전체 PDF에 대한 모든 자원을 넣을 수 있으며, 일부 PDF 생산자는 실제로 그렇게. 이처럼 구축 된 Pdfs는 여러분을 괴롭히는 pdf입니다. 반면 PDF 스플리터

은 일반적으로 는 페이지에서 참조 된 리소스 사전은 따라서 단순히 페이지의 분할 파일로 전체 리소스 사전을 복사, 바로 그 페이지에 대한 자원을 포함하고 가정합니다.

단일 리소스 사전을 사용하여 빌드 된 pdf의 경우 모든 소스 pdf 리소스가 각 페이지에 복사되므로 일반적으로 리소스에는 큰 데이터 모양이 포함되어 있으므로 각 페이지의 분할 파일은 각각 거의 동일합니다. 소스 파일로.

하나가 구현해야 어떤 스택 오버 플로우, 프로그래밍,의 초점으로 돌아가려면 각 페이지에 대해

  • 는 PDF 파일을 읽는 루틴,

  • 는 사용되는 리소스의 콘텐츠 스트림을 구문 분석입니다

  • 은 각 페이지의 각 리소스 사전을 해당 페이지에서 사용되는 항목 만 포함하는 것으로 바꿉니다.

  • 이 변경된 pdf를 다시 저장합니다.

분할하기 전에 pdf에 이러한 프로그램을 적용하면 문제를 즉시 방지 할 수 있습니다.


P.S : 실제로는 상황이 조금 더 복잡뿐만 아니라 페이지 리소스 사전뿐만 아니라 주석, 양식 XObjects 및 패턴과 같은 다른 요소를 가지고있다. 이들은 마찬가지로 처리되어야합니다. 또한 페이지 정보는 페이지 사전 자체에 나타날뿐만 아니라 조상에서 페이지 트리의 루트까지 상속 될 수도 있습니다. 하지만 이것들은 단순한 세부 사항에 불과합니다 ...

관련 문제