![내용에 따라 특정 PDF 페이지 삭제](https://rvso.com/image/97238/%EB%82%B4%EC%9A%A9%EC%97%90%20%EB%94%B0%EB%9D%BC%20%ED%8A%B9%EC%A0%95%20PDF%20%ED%8E%98%EC%9D%B4%EC%A7%80%20%EC%82%AD%EC%A0%9C.png)
고객 계정에 할당해야 하는 PDF 문서가 50,000개 이상 있습니다. 그러나 각 PDF에는 고객이 보지 않기를 원하는 페이지(회사 내부 항목)가 포함되어 있으므로 해당 내용을 기반으로 특정 페이지를 삭제하고(페이지에 "사무실 전용"으로 표시됨) PDF를 저장할 수 있기를 원합니다. 새 파일로.
저는 스크립팅 측면에 익숙합니다. 어떤 소프트웨어가 그러한 작업을 수행할 수 있는지 알아야 합니다.
답변1
유지 관리되지 않는 PDF 파일을 포함하여 PDF 파일을 조작하기 위한 여러 라이브러리가 있습니다.pyPDF그리고 그 포크PyPDF2. 파일을 페이지별로 처리하고, 텍스트를 추출하고, 텍스트가 적합한 페이지를 복사할 수 있습니다.
Python3.6 및 PyPDF2==1.26.0을 사용하여 다음을 실행했습니다.
#!/usr/bin/env python3
import re
import sys
from PyPDF2 import PdfFileWriter, PdfFileReader
pdf_in = PdfFileReader(sys.stdin.buffer)
pdf_out = PdfFileWriter()
for p in [pdf_in.getPage(i) for i in range(0, pdf_in.getNumPages())]:
text = p.extractText()
if not re.search(r'for\s+office\s+use\s+only', text, re.I):
pdf_out.addPage(p)
pdf_out.write(sys.stdout.buffer)
텍스트가 원하는 대로 정확하게 문서에 나타나지 않을 수도 있다는 점에 유의하세요. PDF 문서에서는 줄, 단어, 심지어 문자까지 순서가 뒤바뀌어 나타날 수 있습니다. 텍스트의 흐름이 아닌 특정 좌표에 나타나는 조각으로 문서를 구성할 수도 있습니다.
일반적으로 그렇듯이 텍스트가 순서대로 되어 있더라도 여러 페이지에 걸쳐 있는 텍스트는 중간에 바닥글과 머리글이 있습니다. 여러 줄에 걸쳐 있는 텍스트의 줄 바꿈 주위에는 추가 공백이 있을 수 있습니다. 같은 줄에 있는 텍스트라도 텍스트 정렬로 인해 단어 사이에 여러 개의 공백이 있을 수 있습니다(그래서 \s+
위의 정규식에서 일반 공백 대신 공백을 사용했습니다).
PDF에서 텍스트를 추출하는 도구는 페이지를 텍스트로 재구성하려고 시도하지만 항상 완벽한 작업을 수행하는 것은 아닙니다. pyPdf가 문서에서 제대로 작동하지 않으면 텍스트 추출을 위해 다른 라이브러리를 사용해 볼 수 있습니다. 보다이것그리고이것몇 가지 예를 보려면 스레드를 참조하세요.
답변2
한 가지 옵션은 PDFEdit, Pdftk 또는 PDFSaM과 같은 명령줄 PDF 편집기를 살펴보는 것입니다. pdftotext는 제거할 페이지 번호를 식별하는 간단한 방법으로 유용할 수 있습니다.