Autore Topic: Writer2ePub  (Letto 164619 volte)

Offline Rollie

  • Amanuense
  • ***
  • Post: 317
Re: OpenOffice to ePub
« Risposta #30 il: 11/02/10 09:36 »
Una applcazione in C  trasfrofmi l' odt in ePub sarebbe molto interessante sopratutto perchè sarebbe velocissima.

Ma a quel punto sarebbe un doppione in locale del bookMaker di Simplicissimus. Qua invece si sta cercando di fare l'embedding dentro open office. O sbaglio?

Offline konigi

  • Digitalizzatore
  • *****
  • Post: 3.000
  • Sesso: Maschio
Re: OpenOffice to ePub
« Risposta #31 il: 11/02/10 09:45 »
SCONFORTO!! :(
Scaricata la patch 0.1.2 ed ecco IL MESSAGGIO DI ERRORE IN ALLEGATO ed il solito copia-incolla:
 
Citazione
Option Explicit
   Public sDocURL As String         '
   Public sDocDir As String         '
   Public sFileExt As String         '
   Public sFileN As String
   Public MyEpub As String
   Public oDoc, fenDoc, oText as object
   
Sub writer2epubMain
   Dim StartTime, EndTime As Long
   Dim oBar As Object
   oDoc=ThisComponent

If NOT GlobalScope.BasicLibraries.isLibraryLoaded( "Tools" ) Then GlobalScope.BasicLibraries.loadLibrary( "Tools" )

   FilePrimer
      
   StartTime = Timer
   oBar = oDoc.CurrentController.getStatusIndicator()
   oBar.start ("Work in progress :       ", 100)
fenDoc = oDoc.CurrentController.Frame.ContainerWindow
oDoc.lockControllers
fenDoc.Enable = False
   CreateFolderStructure(MyEpub)
   oBar.value = 20
'   ExtractWriterGraphics(MyEpub)
   oBar.value = 30
   CreateMimeTypeFile(MyEpub)
   oBar.value = 40
   CreateContainerFile(MyEpub)
   oBar.value = 50
   CreateContentFile(MyEpub)
   oBar.value = 60
   CreateContentOpfFile(MyEpub)
   oBar.value = 70
   CreateTocFile(MyEpub)
   oBar.value = 80
   CreateCSSFile(MyEpub)
   CreateEpub(MyEpub)
   oBar.value = 100
   EndTime = Timer
   oBar.end

fenDoc.Enable = True
oDoc.unlockControllers
   oDoc.Close (True)
   oDoc = starDesktop.loadComponentFromUrl (sFileN & ".odt", "_blank", 0, Array())
   Msgbox "Epub Export Complete" & Chr(13) & Chr(13) & "(Duration: " & EndTime - StartTime & " Second)"
   
End Sub



Sub FilePrimer
   dim Args1(1) as new com.sun.star.beans.PropertyValue
'Before processing check save status
   If oDoc.hasLocation=False Then
      MsgBox ("Please save your text before processing!",16,"Writer2ePub")
      End
   End If
'save before processing!
   If (oDoc.isModified) Then
      MsgBox ("Please save your text before processing!",16,"Writer2ePub")
      End   
'      oDoc.store()
   End If
   sDocURL = oDoc.getURL()
   sDocDir=DirectoryNameoutofPath(sDocURL, "/")
   sFileExt=GetFileNameExtension(sDocURL)
   sFileN=GetFileNamewithoutExtension(sDocURL)      'with path!
   MyEpub = sFileN

'REMOVE PREVIOUS FILE AND FOLDER
   
   If FileExists(MyEpub & ".epub") Then
      Kill (MyEpub & ".epub")
   End If
   
   If FileExists(MyEpub) Then
      RmDir MyEpub
   End If

End Sub





Sub CreateFolderStructure (MyEpub as string)
   MkDir (MyEpub & "/META-INF")
   MkDir (MyEpub & "/OEBPS/text")
End Sub





Sub CreateMimeTypeFile (MyEpub as string)

'---- Create MIMETYPE file ----
   
   Dim content as string
   Dim fileAccessService, textOutputStream, outputStream as Object
   content = "application/epub+zip"
   fileAccessService = createUnoService("com.sun.star.ucb.SimpleFileAccess")
   textOutputStream = createUnoService("com.sun.star.io.TextOutputStream")
   
   outputStream = fileAccessService.openFileWrite(MyEpub + "/mimetype")      
   
   outputStream.truncate()
   textOutputStream.setOutputStream(outputStream)
   textOutputStream.writeString(content)
   textOutputStream.flush()
   textOutputStream.closeOutput()
   
End Sub





Sub CreateContainerFile (MyEpub as string)
'---- Create CONTAINER.XML file ----
   Open MyEpub + "/META-INF/container.xml" For Output As #1
   Print #1, "<?xml version=""1.0""?>"
   Print #1, "<container version=""1.0"" xmlns=""urn:oasis:names:tc:opendocument:xmlns:container"">"
   Print #1, "    <rootfiles>"
   Print #1, "        <rootfile full-path=""OEBPS/content.opf"" media-type=""application/oebps-package+xml""/>"
   Print #1, "   </rootfiles>"
   Print #1, "</container>"
   Close #1
End Sub





Sub CreateContentFile (MyEpub as string)

'---- Create CONTAINER.XML file ----
   TextTagger
   sbTraverseText
'   Repl("</p>", "</p>"&chr(13), 0)
   XhtmlHeader


   dim document   as object
   dim dispatcher as object

   document   = ThisComponent.CurrentController.Frame
   dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")


   dim args1(1) as new com.sun.star.beans.PropertyValue
   args1(0).Name = "URL"
   args1(0).Value = MyEpub + "/OEBPS/text/content001.xhtml"
   args1(1).Name = "FilterName"
   args1(1).Value = "Text"

   dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args1())


End Sub





Sub CreateTocFile (MyEpub as string)
End Sub



Sub CreateCSSFile (MyEpub as string)
'---- Create STYLESHEET.CSS file ----
   Open MyEpub + "/OEBPS/css/stylesheet.css" For Output As #1
   Print #1, "   @namespace h ""http://www.w3.org/1999/xhtml"";      "
   Print #1, "   h1      "
   Print #1, "      {margin-top:4em;   "
   Print #1, "      margin-bottom:1,5em;   "
   Print #1, "      page-break-after:avoid;   "
   Print #1, "      font-size:2em;   "
   Print #1, "      font-family: Georgia, Garamond, serif;   "      
   Print #1, "      text-align: center;"
   Print #1, "      color:#000000   "
   Print #1, "      }   "
   Print #1, "   h2      "
   Print #1, "      {margin-top:3em;   "
   Print #1, "      margin-right:0pt;   "
   Print #1, "      margin-bottom:1,5em;   "
   Print #1, "      margin-left:0pt;   "
   Print #1, "      page-break-after:avoid;   "
   Print #1, "      font-size:1,5em;   "
   Print #1, "      font-family:  Georgia, Garamond, serif;   "
   Print #1, "      text-align: center;"
   Print #1, "      color:#000000;   "
   Print #1, "      }   "
   Print #1, "   h3      "
   Print #1, "      {margin-top:2em;   "
   Print #1, "      margin-bottom:1,5em;   "
   Print #1, "      line-height:normal;   "
   Print #1, "      page-break-after:avoid;   "
   Print #1, "      font-size:1,25em;   "
   Print #1, "      font-family: Georgia, Garamond, serif;   "
   Print #1, "      text-align: center;"
   Print #1, "      color:#000000;   "
   Print #1, "      }   "
   Print #1, "   p      "
   Print #1, "      {margin:0pt;   "
   Print #1, "      text-indent:1em;   "
   Print #1, "      font-family: Georgia, Garamond, serif;   "
   Print #1, "      text-align: justify;"
   Print #1, "      color:#000000   "
   Print #1, "      }   "
   Print #1, "   ul      "
   Print #1, "      {text-indent:2em;   "
   Print #1, "      }   "
   Print #1, "   ol      "
   Print #1, "      {text-indent:2em;   "
   Print #1, "      }   "
   Print #1, "   a      "
   Print #1, "      {color:#000000;   "
   Print #1, "      text-decoration: underline   "
   Print #1, "      }   "
   Close #1
End Sub




Sub CreateContentOpfFile (MyEpub as string)
'---- Create CONTENT.OPF file ----
   Open MyEpub + "/OEBPS/content.opf" For Output As #1
   Print #1, "<?xml version=""1.0""?>"
   Print #1, "<package xmlns=""http://www.idpf.org/2007/opf"" unique-identifier=""BookID"" version=""2.0"">"
   Print #1, "    <metadata xmlns:dc=""http://purl.org/dc/elements/1.1/"" xmlns:opf=""http://www.idpf.org/2007/opf"">"
   Print #1, "        <dc:identifier id=""BookID"" opf:scheme=""UUID"">" & UUIDv4() & "</dc:identifier>"
   Print #1, "        <meta name=""writer2epub"" content=""0.1""/>"
   Print #1, "    </metadata>"
   Print #1, "    <manifest>"
'   Print #1, "        <item id=""ncx"" href=""toc.ncx"" media-type=""application/x-dtbncx+xml""/>"
   Print #1, "        <item id=""content001.xhtml"" href=""text/content001.xhtml"" media-type=""application/xhtml+xml""/>"
   Print #1, "        <item id=""style"" href=""css/stylesheet.css"" media-type=""text/css"" />"
   Print #1, "    </manifest>"
   Print #1, "    <spine toc=""ncx"">"
   Print #1, "        <itemref idref=""content001.xhtml""/>"
   Print #1, "    </spine>"
   Print #1, "    <guide>"
   Print #1, "        <reference type=""cover"" title=""Cover Page"" href=""text/content001.xhtml""/>"
   Print #1, "    </guide>"
   Print #1, "</package>"
   Close #1
End Sub





Sub CreateEpub(MyEpub as String)
   
  Dim sFileToZipUrl As String
  Dim sZipPackageUrl As String
  sFileToZipUrl = ConvertToUrl( MyEpub)
  sZipPackageUrl = ConvertToUrl( MyEpub & ".epub" )
  ZipFolder(sFileToZipUrl, sZipPackageUrl )
  'RmDir sFileToZipUrl
End sub





Sub EditMacros            'Opens the macro editor ###### DEVELOPER USE ONLY! #######
   dim document   as object
   dim dispatcher as object
   document   = ThisComponent.CurrentController.Frame
   dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
   dispatcher.executeDispatch(document, ".uno:MacroDialog", "", 0, Array())
End Sub

Offline konigi

  • Digitalizzatore
  • *****
  • Post: 3.000
  • Sesso: Maschio
Re: OpenOffice to ePub
« Risposta #32 il: 11/02/10 11:20 »
Oh bella questa! Ero tanto occupato a lamentarmi dell'errore che non mi ero accorto che in effetti..la conversione era stata eseguita! :-[ (A mie difesa devo dire che comunque office SI ERA PIANTATO e può darsi che la conversione sia durata parecchio tempo ma io avevo ridotto tutte le finestre).
Devo dire alcune cose:
- Il reflowing è ottimo e ben gestito
- Ovviamente le immagini sono state eliminate nella conversione
- Ogni grassetto è al suo posto, ma sono scombinate le dimensioni dei caratteri: i titoli grandi sono stati ridotti.
-L'elenco puntato è stato sostituito da un punto interrogativo
-Tabelle scomparse
-All'inizio e alla fine della sezione "bibliografia" è presente un doppio \t \t che non riesco ad immaginare che funzione richiami...però devo dire che a differenza dell'elenco puntato, l'elenco numerato qua è presente.

In allegato il doc originale, lo zip della cartella metadata (?) ed infine l'epub. :)

Offline Luke

  • eBook Club Italian co-founder
  • Super Moderator
  • Digitalizzatore
  • *****
  • Post: 5.505
  • Sesso: Maschio
  • …tanto più che danni non posso fare…
    • eBook Club Italia
Re: OpenOffice to ePub
« Risposta #33 il: 11/02/10 11:27 »
In allegato il doc originale, lo zip della cartella metadata (?) ed infine l'epub. :)

Grandioso!

Anche col tuo malloppone di file l'ha convertito :)
Una domanda: quando si pianta con l'errore e ti mostra il listato che hai riportato, in genere viene evidenziata la riga incriminata. Potresti riprovare la conversione e passarmi solo quella riga (e magari quelle subito prima, per riuscire a capire dove si trova)?

Grazie

Luke

Juda

  • Visitatore
Re: OpenOffice to ePub
« Risposta #34 il: 11/02/10 11:35 »
-All'inizio e alla fine della sezione "bibliografia" è presente un doppio \t \t che non riesco ad immaginare che funzione richiami...però devo dire che a differenza dell'elenco puntato, l'elenco numerato qua è presente.

il \t\t dovrebbe essere un doppio tab.

Juda

  • Visitatore
Re: OpenOffice to ePub
« Risposta #35 il: 11/02/10 11:39 »
Una domanda: quando si pianta con l'errore e ti mostra il listato che hai riportato, in genere viene evidenziata la riga incriminata. Potresti riprovare la conversione e passarmi solo quella riga (e magari quelle subito prima, per riuscire a capire dove si trova)?

oDoc = starDesktop.loadComponentFromUrl (sFileN & ".odt", "_blank", 0, Array())

Offline konigi

  • Digitalizzatore
  • *****
  • Post: 3.000
  • Sesso: Maschio
Re: OpenOffice to ePub
« Risposta #36 il: 11/02/10 11:54 »
oDoc = starDesktop.loadComponentFromUrl (sFileN & ".odt", "_blank", 0, Array())
Esatto! L'ha rifatto anche a te col mio file .doc o l'hai estrapolato in altra maniera?

Juda

  • Visitatore
Re: OpenOffice to ePub
« Risposta #37 il: 11/02/10 11:57 »
Ti tradirei mai? :-*

Juda

  • Visitatore
Re: OpenOffice to ePub
« Risposta #38 il: 11/02/10 12:03 »
E' chiaro l'intento ed ho trovato il pezzo da sostituire.
Per il pomeriggio dovrei postare la correzione.

Offline max

  • Scalpellino
  • *
  • Post: 91
  • Sesso: Maschio
Re: OpenOffice to ePub
« Risposta #39 il: 11/02/10 12:18 »
se lo dovessi cercare con un motore di ricerca scriverei epubwriter .

Juda

  • Visitatore
Re: OpenOffice to ePub
« Risposta #40 il: 11/02/10 14:34 »
Sotituire:

oDoc = starDesktop.loadComponentFromUrl (sFileN & ".odt", "_blank", 0, Array())

con:

oDoc = starDesktop.loadComponentFromUrl (sDocURL, "_blank", 0, Array())

Konigi carica un doc, non un odt, quindi non si può prescindere dall'estensione.

Offline max

  • Scalpellino
  • *
  • Post: 91
  • Sesso: Maschio
Re: OpenOffice to ePub
« Risposta #41 il: 11/02/10 16:26 »
l'ho scaricato e installato nell'ultima versione di O.O.
Ho aperto un file txt con a capo ogni linea (proviene da un pdf)

Ma si è impiantato subito segnalando errore (con una finestra diceva che mancava qualcosa riguardo le immagini) ora sono 20 minuti che gira e non riesco a chiuderlo, la barra è sempre a metà

Offline konigi

  • Digitalizzatore
  • *****
  • Post: 3.000
  • Sesso: Maschio
Re: OpenOffice to ePub
« Risposta #42 il: 11/02/10 16:30 »
La stessa cosa che è successa a me, Max... :( ma la patch è la 0.1.2 o quella precedente?

Offline max

  • Scalpellino
  • *
  • Post: 91
  • Sesso: Maschio
Re: OpenOffice to ePub
« Risposta #43 il: 11/02/10 16:32 »
La stessa cosa che è successa a me, Max... :( ma la patch è la 0.1.2 o quella precedente?

L'ho scaricata mezzora fa suppongo sia l'ultima
Questi sono i messaggi (si impianta subito):
OPTION EXPLICIT

Sub ExtractWriterGraphics (MyEpub As String)


   Dim oDocument as Object
   Dim oGraphics as Object

   Dim oZipArchive as Object
   Dim oPictures as Object
   Dim mZipFile(0) as Variant
   Dim mFiles() as String

   Dim oFileAccess as Object
   Dim oFile as Object
   Dim oInputStream as Object
   Dim oOutputStream as Object
   Dim mData() as Variant
   Dim sDestFolder as String
   Dim sGraphicName as String
   Dim sGraphicURL as String
   Dim sTmp as String

   Dim oUrl as New com.sun.star.util.URL
   Dim oTransformer as Object

   Dim n as Long
   Dim i as Integer
   Dim j as Integer
   Dim k as Integer
   
   oDocument = StarDesktop.getCurrentComponent
   oZipArchive = CreateUnoService("com.sun.star.packages.Package")
   oFileAccess = CreateUnoService("com.sun.star.ucb.SimpleFileAccess")   
   ' create destination folder relative to document ...
   oTransformer = createUnoService("com.sun.star.util.URLTransformer")
'   oUrl = createUnoService("com.sun.star.util.URL")
   oUrl.Complete = oDocument.URL
   oTransformer.parsestrict(oUrl)
   sDestfolder = MyEpub & "/OEBPS/images/"      'file://" & oURL.Path & "Pictures/"

   ' open zip file and get content of "Pictures" folder ...
    oZipArchive = createUnoService("com.sun.star.packages.Package")
   mZipFile(0) = oDocument.URL
   oZipArchive.initialize(mZipFile())

Offline max

  • Scalpellino
  • *
  • Post: 91
  • Sesso: Maschio
Re: OpenOffice to ePub
« Risposta #44 il: 11/02/10 16:37 »
Mi scuso ho installato la versione 1, non avevo visto la 2 nascosta a metà di pagina 2