Carinha, o PDF é um formato com especificação , você pode procurar na especificação e ver como a quebra de página é feita, para daí você quebrar o arquivo.
P.S.: estou olhando a especificação agora, e vi que especificação no dos outros é refresco. Mal aê…
E
entanglement
Instale o Ghostscript e chame o comando gs (no Linux ou MacOSX) ou gswin32 ou gswin64 (no Windows). Ele é muito rápido, não tem problemas de memória, cria os nomes dos arquivos automaticamente, e existe para os principais sistemas operacionais, sem contar que é de graça.
Aqui ele ensina a fazer no Linux e no Mac, mas você pode usar um comando muito semelhante no Windows (só o nome do executável é que é um pouco diferente).
Seria interessante saber algumas coisas a mais sobre o que você quer:
Que tipo de documento é esse PDF? É um documento vindo de um scanner? É uma “impressão para PDF”? Ou é realmente algo imprevisível?
Outra coisa: qual o critério que você pretende utilizar para dividir o PDF em pedaços menores?
Estive olhando a especificação do arquivo PDF e, dependendo do que você realmente necessita, talvez a minha idéia original de utilizar a especificação não seja “tãaaao” absurda assim… (ainda assim, é meio pesado, sim…)
E
entanglement
Uma vez eu peguei esse GhostScript e usei para gerar vários PNGs (um por página) a partir de um PDF. Foi super-rápido e não gastou nenhuma memória.
D
dsrodrigues
Estou fazendo uma aplicação web para estudos.
Em que o usuário irá enviar um pdf (de qualquer tamanho e qualquer padrão).
O a minha página irá quebrar esse pdf em páginas menores para visualizar depois no navegador.
Essa seria a minha primeira parte, depois vou evoluir ele, como pegar o texto e indexar o mesmo com lucene. (mas isso é futuro)
O que quero é pegar o pdf (geralmente scanneado) e quebrar em partes menores para que possa ficar leve na sua visualização.
Para isso quero quebrar ele por páginas. Ler a especificação não seria uma coisa habil, mas válida.
Estou atraz de uma api que eu possa usar, passando ele como um File ou o caminho dele temporário.
E
entanglement
Existem 2 tipos de PDFs escaneados.
Alguns deles são texto puro e obviamente irão necessitar de OCR para poderem ser indexados.
Outros (normalmente quando o scanner que gerou o PDF é um programa como o Adobe Acrobat ou o ABBYY FineReader) contém as páginas como imagens e ao mesmo tempo como texto. Nesse caso é possível a indexação.
E
entanglement
Eu recomendaria usar o GhostScript. Basta instalá-lo e chamar (via Runtime.exec) o comando com meia dúzia de parâmetros (os quais foram mostrados nesse blog cujo link postei).
O GhostScript é muito rápido e você vai ver que muitos outros programas (por exemplo, aqueles que você acha na Internet e dizem que fazem “split de arquivos PDF”) chamam o GhostScript indiretamente (tradução: não reinvente a roda).
E
entanglement
Se for um PDF escaneado (só imagens) você pode gerar é imagens, não pequenos PDFs, certo?
D
dsrodrigues
entanglement:
Se for um PDF escaneado (só imagens) você pode gerar é imagens, não pequenos PDFs, certo?
Sim,mas não vi uma diferença grande de bytes para mandar para imagem e deixar em pdf.
Sem falar se deixar no pdf, tenho a facilidade do proprio componente do adobe dar zoom, imprimir, salvar, … (posso esta falando besteira, mas tenho somente esse conhecimento).
Vou realizar uns testes com esse aplicativo que vc mencionou e dependendo do resultado utilizo ele. quero ver como é o retorno dele para o java, se consigo pegar os arquivos diretamente ou tenho que varrer a pasta especifica, pois pretendo salvar em banco e não deixar em arquivo fisico.
E
entanglement
Você vai ter de pegar os arquivos que ele gerou (por exemplo, se você especificou o nome ARQUIVO%05d.pdf, ele vai gerar ARQUIVO00001.pdf, ARQUIVO00002.pdf etc.)
O bom é que é fácil conferir se ele fez tudo direitinho.