En primer lugar, tienes que entender lo que es un PDF. Los PDF están diseñados para imitar una página impresa, y están diseñados sólo como un formato de salida, no como un formato de entrada. un PDF es básicamente un mapa que contiene la ubicación exacta de los caracteres (letras individuales o puntuación, etc.) o imágenes. En la mayoría de los casos, un PDF ni siquiera almacena información sobre dónde termina una _palabra y comienza otra, y mucho menos cosas como roturas suaves frente a roturas duras para los finales de los párrafos.
(Algunos PDF recientes sí almacenan alguna información sobre estas cosas, pero eso es una nueva tecnología, y tendrías suerte si encontraras PDFs así. Incluso si lo hicieras, tu visor de PDF podría no saberlo)
De todos modos, depende de tu software implementar algún tipo de “inteligencia artificial” para extraer simplemente de las ubicaciones de los caracteres individuales lo que es una palabra, lo que es un párrafo, y así sucesivamente. Diferentes programas van a hacer esto mejor que otros, y también va a depender de cómo se hizo el PDF. En cualquier caso, no se debe nunca esperar resultados perfectos. Tener el PDF de salida no es lo mismo que tener el documento de origen. Es mucho mejor tratar de obtenerlo si se puede.
La solución estándar a tu tipo de problema es usar Adobe Acrobat Professional (el caro, no el lector gratuito) para convertir el PDF a HTML. Incluso eso no va a obtener resultados perfectos.
Hay software gratuito que puede ser usado para extraer texto de los PDFs con algo de formato intacto, pero de nuevo, no esperes resultados perfectos. Véase, por ejemplo, calibre (que puede convertirse al formato RTF), pdftohtml/pdfreflow o el procesador de texto AbiWord (con todos los plugins de importación/exportación habilitados). También hay un plugin de importación de PDF para OpenOffice.
Pero por favor no esperes la perfección con ninguno de estos resultados. Vais a contracorriente aquí. El PDF no es un formato de entrada editable.