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...)
dávková konverze .rtf do .txt (ebook)
-
- Level 2
- Příspěvky: 190
- Registrován: duben 08
- Bydliště: Ostrava-Zábřeh
- Pohlaví:
- Stav:
Offline
Re: dávková konverze .rtf do .txt (ebook)
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):
2.Ta se volá v upraveném cyklu konverze (pokud je vstupním formátem RTF):
3.Nakonec je nutné zajistit jako výstupní formát TXT a kódování UNICODE:
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
-
- 4
- 1897
-
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: Žádní registrovaní uživatelé a 8 hostů