Exclua páginas PDF específicas dependendo do conteúdo

1

Tenho mais de 50.000 documentos PDF que precisam ser alocados para contas de clientes. No entanto, cada PDF contém páginas que não quero que o cliente veja (material interno da empresa) e, portanto, gostaria de poder excluir páginas específicas com base em seu conteúdo ("apenas para uso de escritório", exibido na página) e salvar o PDF como um novo arquivo.

Estou confortável com o lado do script, só preciso saber qual software é capaz de realizar tal tarefa.

    
por Reado 25.10.2016 / 17:01

2 respostas

1

Python!

Existem várias bibliotecas para manipular arquivos PDF, incluindo pyPdf e é derivativo PyPDF2 . Você pode processar um arquivo, página por página, extrair o texto e copiar as páginas cujo texto é adequado. Código não testado:

#!/usr/bin/env python
import re, sys
from pyPdf import PdfFileWriter, PdfFileReader
input = PdfFileReader(sys.stdin)
output = PdfFileWriter()
for p in [input.getPage(i) for i in range(0,input.getNumPages())]:
    text = p.extractText()
    if not re.search(r'for\s+office\s+use\s+only', text, re.I):
        output.addPage(p)
output.write(sys.stdout)

Tenha em atenção que o texto pode não aparecer no documento exactamente como pretende. Em um documento PDF, linhas, palavras ou até mesmo caracteres podem aparecer fora de ordem: em vez de um fluxo de texto, o documento pode ser construído com partes que aparecem em determinadas coordenadas. Mesmo se o texto estiver em ordem, o que geralmente é o caso, o texto que abrange várias páginas terá um rodapé e um cabeçalho no meio. O texto que abrange várias linhas pode ter espaços extras ao redor das quebras de linha. Mesmo texto nas mesmas linhas pode ter vários espaços entre as palavras, devido à justificação do texto (é por isso que usei \s+ em vez de um espaço simples na expressão regular acima). As ferramentas que extraem texto do PDF tentam reconstruir a página como texto, mas nem sempre fazem um trabalho perfeito. Se pyPdf não funcionar bem com seus documentos, você pode tentar outras bibliotecas para extração de texto; veja este e este tópico para alguns exemplos.

    
por 26.10.2016 / 02:03
-1

Uma opção seria examinar os editores de PDF de linha de comando, como PDFEdit, Pdftk ou PDFSaM. O pdftotext pode ser útil como uma maneira simples de identificar os números de páginas a serem removidos.

    
por 26.10.2016 / 00:49

Tags