dávková konverze .rtf 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

dávková konverze .rtf do .txt (ebook)

Příspěvekod petrofff » 31 srp 2011 11:44

Mám kolekci .rtf souborů (ebooky v češtině).
Doposud jsem konverzi dělal po jednotlivých souborech:
Z MS Word Vieweru (kde je čeština zobrazena správně) jsem přes clipboard přenesl celý text do Notepadu a dal Save as... .TXT [UNICODE]

Záměr vyrobit dávku v OpenOffice maří fakt, že tam je text špatně zobrazen (ř,č,š,ů,ě...). (narozdíl od MS WordVieweru či WordPADu)

PS. Přišel jsem na jediný způsob, jak "ručně" upravit .rtf aby se správně zobrazil v OOo:
Otevřit rtf ve znakovém módu a v záhlaví:
{\rtf1\ansi\ansicpg0\uc1\deff0\deflang0\deflangfe0{\fonttbl{\f0\fnil\fcharset1 Courier New;}{\f1\fnil\fcharset1 Arial;}
nahradit výraz fcharset1 výrazem fcharset238.
Pak při použití Uložit jako...Kódovaný text(.txt) Znaková sada:Unicode proběhne konverze v pořádku...
Nicméně nevím proč tomu tak je, příp.jestli nemám chybu hledat někde u sebe(XP,aplikace...)

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: dávková konverze .rtf do .txt (ebook)

Příspěvekod petrofff » 03 zář 2011 12:46

Nakonec jsem použil nástroj pro hromadný převod - Danny's Document Converter (DocConverter-2006-05-26.odg)

1.První modifikací je procedura která opraví hlavičku rtf souboru (aby se správně načetla čeština):

Kód: Vybrat vše

Sub correctRTF ( cSrcName )
   Dim oImportOptions
   oImportOptions = Array( MakePropertyValue( "Hidden", True ), MakePropertyValue( "FilterName", "Text" ) )
   ' ----------- OTEVŘÍT dokument -----------
   oDoc = StarDesktop.loadComponentFromURL( ConvertToUrl( cSrcName ), "_blank", 0, oImportOptions )
   ' ----------- OPRAVA dokumentu -----------
   Dim vDescriptor
   vDescriptor = odoc.createReplaceDescriptor()
   With vDescriptor
      .SearchString = "fcharset[0-9]+"
      .ReplaceString = "fcharset238"
      .SearchRegularExpression = true
      .SearchWords = true
      .searchAll = true
   End With
   oDoc.ReplaceAll(vDescriptor)
   ' ----------- ULOŽIT dokument -----------
   If (oDoc.isModified) Then oDoc.store()
   oDoc.dispose()
End Sub

2.Ta se volá v upraveném cyklu konverze (pokud je vstupním formátem RTF):

Kód: Vybrat vše

Sub BeginConversion()
   .....................................................................................
   ' This is the actual conversion loop.
   nFileNum = 0
   cFile = Dir$( cSourceFolder + "/*." + LCase(cSourceType) )
   Do While cFile <> ""  And  (Not bInterrupted)
      nFileNum = nFileNum + 1
   .....................................................................................
      ' Build the complete pathname to the source document.
      cSourceName = cSourceFolder + "/" + cFile
'  >>>>>>>>>>>>>>      Correct the heading of RTF source document       <<<<<<<<<<
      if (cSourceType="RTF") then correctRTF ( cSourceName )
      ' Open the source document.
      oDoc = StarDesktop.loadComponentFromURL( ConvertToUrl( cSourceName ), "_blank", 0, oImportOptions )
      ' Build the name of the new document -- with new suffix.   
      cDestName = Left( cFile, Len( cFile ) - 4 )
      cDestName = cDestName + ".txt"
      ' Build the URL of the text/unicode document.
      cDestURL = ConvertToUrl( cDestFolder + "/" + cDestName )
   .....................................................................................   
      ' Save the document in the new destination format.
      oDoc.storeToURL( cDestURL, oExportOptions )
   .....................................................................................   
      ' Close the document.
      oDoc.dispose()
      ' Get name of next file to convert.
      cFile = Dir$
   Loop
   .....................................................................................   
End Sub

3.Nakonec je nutné zajistit jako výstupní formát TXT a kódování UNICODE:

Kód: Vybrat vše

'-----
'   PAGE_WRITER_DEST_TYPE
'-----

Sub pg81_btnBack_Clicked()
   ' Change which dialog page is displayed.
   oDialog.Model.Step = PAGE_WRITER_SOURCE_TYPE
End Sub

Sub pg81_btnNext_Clicked()
   cDestType = "TXT"
   cExportFilter = "Text (encoded)"
   oExportOptions = Array( MakePropertyValue( "FilterName", cExportFilter ), MakePropertyValue( "FilterFlags", "unicode" ) )
   SetupPage_READY_TO_BEGIN()
      ' Change which dialog page is displayed.
   oDialog.Model.Step = PAGE_READY_TO_BEGIN
End Sub


  • 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
    1897
    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: Žádní registrovaní uživatelé a 8 hostů