konverze .pdf do .txt (ebook)

...

Moderátor: Mods_senior

petrofff
Level 2
Level 2
Příspěvky: 190
Registrován: duben 08
Bydliště: Ostrava-Zábřeh
Pohlaví: Muž
Stav:
Offline

konverze .pdf do .txt (ebook)

Příspěvekod petrofff » 11 úno 2011 19:59

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)

Reklama
petrofff
Level 2
Level 2
Příspěvky: 190
Registrován: duben 08
Bydliště: Ostrava-Zábřeh
Pohlaví: Muž
Stav:
Offline

Re: konverze .pdf do .txt (ebook)

Příspěvekod petrofff » 13 úno 2011 14:01

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()

petrofff
Level 2
Level 2
Příspěvky: 190
Registrován: duben 08
Bydliště: Ostrava-Zábřeh
Pohlaví: Muž
Stav:
Offline

Re: konverze .pdf do .txt (ebook)

Příspěvekod petrofff » 05 zář 2011 09:37

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.


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • DVD konverze
    od Aschonfeld » 01 bře 2024 09:13 » v Multimédia (filmy, hudba, CDs/DVDs)
    4
    1523
    od petr22 Zobrazit poslední příspěvek
    02 bře 2024 12:20

Zpět na “Vše ostatní (sw)”

Kdo je online

Uživatelé prohlížející si toto fórum: Google [Bot] a 7 hostů