Knihy v pdf mají pevnou šířku řádků, což - když dám uložit jako .txt - se projeví zhoršenou čitelností na malé obrazovce kapesního readeru.
Řešil jsem to tak, že jsem všechny výskyty LF odřádkování nahradil skupinou LF o 1 menší (tj. LF => nic, LFLF => LF atd) Tím se řádky spojily do odstavců a vynechaly zbytečné mezery mezi odstavci.
Poněkud krkolomný způsob, pokud neznáte editor, kt. to umí ? (diskové editory umí nahradit jen "na místě"; reg.exp. je výhoda, ne však nutnost)
Ještě lepší by byl program/skript ...ale to by ho někdo musel vytvořit (nevím jak na jiných platformách, ale na windows se používá 0D0A pro LineFeed)
konverze .pdf do .txt (ebook)
-
- Level 2
- Příspěvky: 190
- Registrován: duben 08
- Bydliště: Ostrava-Zábřeh
- Pohlaví:
- Stav:
Offline
Re: konverze .pdf do .txt (ebook)
Nakonec jsem udělal skript v jazyce python, bez vymoženosti dávkového zpracování - stejně se musí .pdf "ručně" načíst do Adobe Readeru a uložit jako .txt (ANSI). PAK PŘETÁHNOUT NA SCRIPT v Pythonu
Výsledek je v požadovaném kódování Unicode (pro můj mp4 Doonio Naut ; pro jiné playery stačí změnit encoding u vystup).
Výsledek je v požadovaném kódování Unicode (pro můj mp4 Doonio Naut ; pro jiné playery stačí změnit encoding u vystup).
Kód: Vybrat vše
# -*- coding: cp1250 -*-
'''
[PYTHON 3.1]
Created on 13.2.2011
------------------------------------------------
1.vynechá text až do místa:
[nová stránka]
Kapitola první
2.zformátuje obsah (na konci) počínaje textem:
[nová stránka]
OBSAH:
3.vypustí řádky se znakem [nová stránka]
4.vynechává znaky [NL] na koncích řádků s textem
5.skupiny řádků s WHITESPACE sloučí do jednoho
6.zformátuje názvy kapitol v díle/obsahu
7.vzniklý soubor obdrží příponu .TXT
8.původní soubor se uloží s příponou .BAK
9.název vých.souboru je vstupním parametrem
------------------------------------------------
@author: Petroff
'''
import sys,os
def zapis(txt):
vystup.write(txt)
alert = "Nezadán vstupní soubor" if len(sys.argv)<2 else "Vstupní soubor neexistuje" if not(os.path.isfile(sys.argv[1])) else ""
if alert:
print (alert)
input("ENTERem ukončit")
quit()
newFname=sys.argv[1]
oldFname,fe=os.path.splitext(newFname)
if fe != ".txt":
newFname = oldFname + ".txt"
oldFname += fe
else:
oldFname += ".bak"
if (os.path.isfile(oldFname)):
os.remove(oldFname)
os.rename(newFname,oldFname)
vstup = open(oldFname,"r",encoding='cp1250')
vystup = open(newFname, "w",encoding='utf-16')
odstavec = stranka = ""
kopiruj = obsah = False
for radek in vstup:
if chr(12) in radek:
stranka = radek
continue
if radek > " \n":
if stranka or obsah:
if "Kapitola" in radek:
if kopiruj:
radek = "\n" + radek
kopiruj = True
if "OBSAH" in radek:
odstavec = "\n\n"
obsah = True
radek = odstavec + radek[:-1]
stranka = odstavec = ""
if kopiruj:
zapis(radek)
else:
odstavec = "\n"
vstup.close()
vystup.close()
-
- Level 2
- Příspěvky: 190
- Registrován: duben 08
- Bydliště: Ostrava-Zábřeh
- Pohlaví:
- Stav:
Offline
Re: konverze .pdf do .txt (ebook)
Hledám program/modul který by převedl pdf do text.formátu - v případě programu aby šel spustit na příkazové řádce.
Dávám dokupy dávkový převodník - realizovaný jako OpenOffice makro(StarBasic) a převod z DOC,RTF,PDB,TXT/ansi/utf8 funguje.
Vyzkoušel jsem i řadu interaktivních popř. dávkových aplikací, a žádná neposkytla korektní výsledek - takový umí jen Adobe Reader >>Uložit jako TEXT. Ve většině případů dělá paseku čeština (znaky jsou kódovány nesprávně, jsou vynechány popř. jsou ve slovech mezery) Jindy vadí vícesloupcový text.
Dávám dokupy dávkový převodník - realizovaný jako OpenOffice makro(StarBasic) a převod z DOC,RTF,PDB,TXT/ansi/utf8 funguje.
Vyzkoušel jsem i řadu interaktivních popř. dávkových aplikací, a žádná neposkytla korektní výsledek - takový umí jen Adobe Reader >>Uložit jako TEXT. Ve většině případů dělá paseku čeština (znaky jsou kódovány nesprávně, jsou vynechány popř. jsou ve slovech mezery) Jindy vadí vícesloupcový text.
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 6 hostů