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.
-
- Mohlo by vás zajímat
- Odpovědi
- Zobrazení
- Poslední příspěvek
-
- 4
- 1523
-
od petr22
Zobrazit poslední příspěvek
02 bře 2024 12:20
Kdo je online
Uživatelé prohlížející si toto fórum: Google [Bot] a 7 hostů