Python 은 PyPDF 2 를 이용 하여 PDF 문 서 를 빠르게 분할 합 니 다.

"인생 은 짧 으 니 빨리 파 이 썬 을 배 워 라"는 구호 때문에 파 이 썬 을 배 우 는 큰 군대 에 가 입 했 지만,파 이 썬 이 정말 할 수 있 는 일이 너무 많아 잠시 눈 이 멀 어 어느 방향 을 전공 해 야 할 지 몰 랐 다.
여러 방향 으로 탐색 한 결과 저 는 넓 고 깊 지 않 은 웹 개발 을 선 택 했 습 니 다.Python 의 웹 개발 은 유명한 Django 와 떨 어 질 수 없 었 습 니 다.한 번 은 기발 한 생각 이 들 었 습 니 다.Django 의 PDF 버 전 문 서 를 다운로드 하여 쉽게 찾 아 보고 싶 었 습 니 다.그런데 어 리 석 은 것 은 PDF 버 전이 영문 버 전 만 있 고 1900 여 페이지 에 가 까 워 서 어 쩔 수 없 이 플랫폼 의 문서 번역 기능 을 찾 을 수 밖 에 없 었 습 니 다.대부분 비용 을 지불해 야 합 니 다.무료 제한 이 매우 많다.예 를 들 어 무료 사용 자 는 매번 최대 5 페이지 만 번역 할 수 있 고 문서 의 크기 는 최대 5M 에서 10m 를 초과 할 수 없다.
어 떡 하지?파 이 썬 배 우 는 사람 이 이 걸 무서워 할 까?
분할,분할 이 가장 좋 은 해결 방법 입 니 다.인공 적 으로 철거 하 시 겠 습 니까?1900 페이지 가 넘 고 힘 들 어 죽 을 것 같 습 니 다.그러면 Python 에 게 는 아주 간단 합 니 다.오늘 저 를 따라 실전 에 들 어가 서 PyPDF 2 모듈 을 배우 고 분 리 를 신속하게 실현 하여'인생 이 짧 고 나 는 Python 을 사용한다'는 것 을 진정 으로 이해 하 게 해 드 립 니 다!
PyPDF 2 모듈 설치
이 모듈 은 대소 문 자 를 엄 격 히 구분 하고 y 는 소문 자 이 며 나머지 대문자 이다.

pip3 install PyPDF2

설치 가 완료 되면 로 컬 하 드 디스크 에 이 프로젝트 를 저장 하 는 폴 더 를 만 듭 니 다.제 가 있 는 저장 경 로 는 F:\Python\\PyPDF 2 입 니 다.F 디스크 에 Python 폴 더 가 있 는데 그 중에서 이 모듈 이름 을 가 진 폴 더 를 만 들 었 습 니 다.다른 항목 과 따로 저장 하고 구분 합 니 다.
파일 생 성,PDF 문서 준비

Django 홈 페이지 에서 그의 도움말 문 서 를 다운로드 하 였 습 니 다.이 문 서 는 충분히 크 고 1900 여 페이지 입 니 다.연습 자 에 게 는 충분 합 니 다.필요 한 것 은 홈 페이지 에서 다운로드 한 다음 에 PDF.py 프로젝트 파일 을 만 듭 니 다.
만사 가 다 준비 되 어 있 으 니,철거 할 준 비 를 해라.
프로그램 이 두 줄 을 시작 하고 아래 두 문장 을 쓰 세 요.첫 번 째 문장 은 이 파일 의 실행 프로그램 을 지정 하 는 것 입 니 다.두 번 째 문장 은 이 파일 에 대한 설명 입 니 다.이 역할 은 아직 알 수 없 지만 빠 른 실행 프로그램 을 어떻게 계량 화 하 는 지 알 고 있다 면 그 역할 을 알 게 될 것 입 니 다.여 기 는 군말 하지 않 습 니 다.

#! python
# PDFCF.py - pdf      
문서 의 분할 사고
몇 부 로 나 누 지 는 않 지만 한 부 를 몇 페이지 로 구성 하 는 지 고정 시 킨 다음 에 동태 적 으로 분 리 된 부 수 를 계산 하고 분 리 된 사고 가 생 겼 다.그러면 계산 공식 을 열거 하 는 것 이다. = / pdf 예 를 들 어:
만약 에 우리 가 전체 페이지 수가 35 페이지 인 pdf 문 서 를 나 누 려 면 10 페이지 마다 새 문 서 를 구성 하려 면 몇 개의 계산 공식 으로 나 눌 수 있 습 니까?3.5 = 35 / 10이때 모두 주의 하 세 요.나머지 0.5 를 제외 하고 무엇 을 설명 합 니까?이 예 를 들 어 3 부 로 나 누고 5 페이지 가 남 았 다 는 것 이다.그러면 나머지 가 얼마 든 1 로 나 아가 야 전체 분 리 를 완성 할 수 있다.이 문 서 를 나 눈 결 과 는 앞의 3 개 문 서 는 각각 10 페이지 로 구성 되 고 네 번 째 문 서 는 마지막 5 페이지 로 구성 되 며 정리 할 수 있 으 면 결 과 는 바로 분 리 된 부분 이다.
python 분할 계산 공식:

if 35 % 10:        #        
    35 // 10 + 1   #         1
else:
    0              #         0
  
#          
4 = 35 // 10 + 1 if 35 % 10 else 0
구체 적 으로 어떻게 뜯 어 요?
아니면 이 35 페이지 의 문 서 를 예 로 들 면:
각 페이지 의 데이터 for num in range(35)를 반복 해서 옮 겨 다 니 며 각 페이지 의 데 이 터 를 얻 은 다음 페이지 의 범 위 를 지정 하여 분할 합 니 다.
  • 첫 번 째 문 서 는 0-10 에서 10
  • 을 포함 하지 않 습 니 다.
  • 두 번 째 문 서 는 10-20 에서 20
  • 을 포함 하지 않 습 니 다.
  • 세 번 째 문 서 는 20-30 에서 30
  • 을 포함 하지 않 습 니 다.
  • 네 번 째 문 서 는 30-35 에서 35
  • 를 포함 하지 않 습 니 다.
    우 리 는 규칙 을 발견 했다.매번 첫 번 째 숫자 를 옮 겨 다 니 는 규칙 은 문서 의 페이지 이 고 자신 이 몇 번 째 에 속 하 는 지 곱 하면 얻 을 수 있다.두 번 째 숫자 는 우리 가 불규칙 하 다 는 것 을 발견 했다.사실 자세히 관찰 해도 규칙 이 있다.만약 에 우리 가 개 수 를 나 누 어 정렬 하면 이 예 는 1-4 이다.두 번 째 숫자 는 현재 몇 번 째 분해 점수 에 각 문서 로 구 성 된 페이지(페이지 수 는 고정된 10)에 속 하 는 것 이다.
    그러나 우리 가 처음 옮 겨 다 닐 때 0 부터 num 을 통용 되 지 않 게 만 들 었 습 니 다.그러면 우 리 는 1 부터 옮 겨 다 니 기 시 작 했 습 니 다.range(1,35)는 처음부터 옮 겨 다 녔 습 니 다.range 는 그 자체 의 마지막 특성 을 포함 하지 않 습 니 다.이렇게 옮 겨 다 니 면 문서 가 한 페이지 가 빠 졌 습 니 다.그러면 우 리 는 그 에 게 1 을 더 해서 변 했 습 니 다.
  • for num in range(1, 35+1)
  • 첫 번 째 문 서 는 10*(1-1)-10*1 에서 10
  • 을 포함 하지 않 습 니 다.
  • 두 번 째 문 서 는 10*(2-1)-10*2 에서 20
  • 을 포함 하지 않 습 니 다.
  • 세 번 째 문 서 는 10*(3-1)-10*3 에서 30
  • 을 포함 하지 않 습 니 다.
  • 네 번 째 문 서 는 10(4-1)-35
  • 에서
    구체 적 인 스 트 리밍 코드 는 다음 과 같 습 니 다.
    
    for num in range(1,35+1):
        pass
        for i in range(10 * (num-1), 10 * num if num != 4 else 35):
            pass
    
    메모:num=4(마지막 문서 정렬 수)를 옮 겨 다 닐 때 총 페이지 수 35 로 돌아 가면 됩 니 다.여기 서 옮 겨 다 니 면 끝 납 니 다.여 기 는 왜 35+1 이 아 닌 총 페이지 35 일 까요?이번에 우리 가 0 부터 옮 겨 다 니 기 시 작 했 기 때문에 페이지 는 0 부터 시작 하기 때문에 1 을 추가 할 필요 가 없다.
    전체 분할 프로그램:
    
    import PyPDF2
    
    #        pdf  
    pdfReader = PyPDF2.PdfFileReader('django.pdf')
    #   pdf   
    pdfnums = pdfReader.numPages
    #             
    innumber = 100
    #       
    outnums = pdfnums // innumber + 1 if pdfnums % innumber else 0
    
    for num in range(1,pdfnums):
        #      pdf
        pdfWriter = PyPDF2.PdfFileWriter()
        #         
        for pageNum in range(innumber * (num - 1), innumber * num if num != outnums else pdfnums):
            #          
            pageObj = pdfReader.getPage(pageNum)
            #                          
            pdfWriter.addPage(pageObj)
        #          ,         
        with open('PDFREAD %s' % num + '.pdf', 'wb') as pdfOutputFile:
            pdfWriter.write(pdfOutputFile)
    
    
    주의:위의 이러한 분할 사고 에 대해 저 는 개인 적 으로 복잡 하 게 생각 합 니 다.만약 에 Python 목록 의 절 변 과 보폭 개념 에 대해 잘 이해 하면 이렇게 복잡 할 필요 가 없다 고 생각 합 니 다.전체 페이지 를 큰 목록 으로 만 들 고 이 목록 을 슬라이스 하 는 방법 으로 여러 개의 작은 목록 으로 나 누 어야 한다 고 생각 합 니 다.그 후에 각 분 리 된 pdf 페이지 의 범 위 는 모든 작은 목록 의 첫 번 째 숫자 인 마지막 숫자+1 입 니 다.제 가 목록 방법 으로 실현 한 코드 도 여러분 께 참고 하도록 붙 여 드 리 겠 습 니 다.
    리스트 분할 PDF 구현
    
    #! python
    # PDFCF.py - pdf      
    
    import PyPDF2
    # import LISTCF
    
    #        pdf  
    pdfReader = PyPDF2.PdfFileReader('django.pdf')
    #   pdf   
    pdfnums = pdfReader.numPages
      
    
    #             
    pagenum_list = list(range(pdfnums))
    
    n = 100
    
    #                   
    page_list = [pagenum_list[i:i + n] for i in range(0, len(pagenum_list), n)]
    
    for i in range(len(page_list)):
      #        pdf
      pdfWriter = PyPDF2.PdfFileWriter()
      #       
      for pageNum in range(page_list[i][1], page_list[i][-1]+1):
        pageObj = pdfReader.getPage(pageNum)
        pdfWriter.addPage(pageObj)
    
      with open('PDFREAD %s' % i + '.pdf', 'wb') as pdfOutputFile:
        pdfWriter.write(pdfOutputFile)
    
    
    어떻게?
    프로젝트 폴 더 내부 에서 Shift 키 를 누 르 고 마우스 오른쪽 단 추 를 누 르 고 명령 창 을 여 는 것 을 선택 하고 PDFCF.py 를 입력 하고 차 로 돌아 가면 n 의 값 을 원 하 는 대로 변경 할 수 있 습 니 다.

    마지막 에 쓰다
    여러분 께 제 학습 방법 을 알려 드 리 겠 습 니 다.보통 프로그램 을 쓸 때 손 으로 쓰 지 않 고 생각 을 정리 하 는 것 이 좋 습 니 다.그러면 글 을 쓰 는 과정 에서 얽 히 는 상황 을 피 할 수 있 습 니 다.이 프로그램 은 완벽 하지 않 고 절 분 된 수량 도 지정 할 수 있 습 니 다.각 페이지 에 얼마나 포함 되 는 지 자동 으로 계산 할 수 있 고 여러 페이지 에서 몇 페이지 까지 만 추출 할 수 있 습 니 다.그래서 뒤에 있 는 이 두 가지 수 요 는 여러분 에 게 생각 하고 완성 하도록 남 겨 두 고 뒤에 저 는 자신의 코드 와 생각 을 붙 일 것 입 니 다.
    파 이 썬 이 PyPDF 2 를 이용 하여 PDF 문 서 를 빠르게 나 누 는 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 파 이 썬 이 PDF 내용 을 나 누 는 것 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

    좋은 웹페이지 즐겨찾기