konverze .pdf do .txt (ebook)
Napsal: 11 úno 2011 19:59
od petrofff
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)
Re: konverze .pdf do .txt (ebook)
Napsal: 13 úno 2011 14:01
od petrofff
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).
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()
Re: konverze .pdf do .txt (ebook)
Napsal: 05 zář 2011 09:37
od petrofff
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.