Kopieren von Text ohne Verlust der Formatierung

Setup und Komponenten-übergreifende Probleme.

Moderator: Moderatoren

Grumbleduke
Beiträge: 8
Registriert: Mi, 18.02.2004 02:08
Kontaktdaten:

Kopieren von Text ohne Verlust der Formatierung

Beitrag von Grumbleduke »

Wenn man Artikel aus Open Office in ein anderes Programm kopieren will(GoLive6.0) wie muß man diesen Text formatieren und abspeichern, damit nicht die Formatierung verloren geht.?
(GoLive und andere Webseitenprogramme zerschlagen die Formatierungen und setzen Tabs ein)

Gruß :shock:
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Nicht lösbar.

Textverarbeitung und formatierter HTML Text sind eben zwei verscheidene Schuhe.
Du kannst versuchen, deine Writer-Seite als HTML Seite zu speichern. Dann versucht OOo schon, die bestehende Formatierung auf gültigen HTML-Code umzusetzen. Dieses Ergebnis wiederu kannst du in GoLive einlesen (als HTML-Datei). Das Ergebnis sollte so ähnlich aussehen.
Auch ein Export in .xhtml könnte ein gutes Ergebnis bewirken. Aber, HTML-Formatierungen sind eben schon noch anders als reine Textverarbeitung.
Da GoLive eine klassische Formatierung mit Tabellen erzeugt, wird es kaum eine befreidigende Lösung geben. ( Bleibt wohl nur, intensives Beschäftigen mit HTML und XML, um die Systematik von Web-Pages zu verstehen und dann direkt dort die Lösung zu erstellen)

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
openmind
****
Beiträge: 184
Registriert: So, 29.06.2003 15:00
Wohnort: Schweiz

Beitrag von openmind »

Ich bin mir nicht sicher, ob ein Export nach HTML wirklich das Gelbe vom Ei ist. Der HTML-Code, den OOo erstellt ist voller Müll, welcher nur gebraucht wird wenn man die HTML-Seite wieder mit OOo öffnet.

Ich sehe zwei Möglichkeiten: Der erste ist, dass du auf dem Internet nach einem Export für XHTML suchst, der nicht dem OOo-Export etnspricht, sondern sauberes (v.a. schlankes) (X)HTML erzeugt. Ich hab auf der Malinglist gelesen, dass es sowas gibt. Habe aber keine Ahnung wo. Die andere Möglichkeit ist den Export selbst zu schreiben, z.B. in Basic. Du kannst durch das ganze Dokument-Loopen und dein HTML-Export-Format nach belieben selbst schneidern. ALs kleiner Einstieg eine Basic Funktion, welche ein Writer-Dikument nach Wiki-Code formatiert:

Code: Alles auswählen

Function selection2Wiki
	Dim selection as Object, oText as Object
	Dim writerDoc as Object
	Dim wiki as String
	Dim elementCount as Integer
	Dim oElement as Object
	Dim oParagraphEnum as Object
	Dim oParagraph as Object
	Dim i as Integer
	Dim sStyleName as String
	
	' textportions variables
       Dim oEnumeration as Object
       Dim oPortion as Object
       Dim sUrl as String
       Dim sPortionString as String
	   Dim sElementString as String
	   
    ' tables variables
    
       Dim nRow as Integer
       Dim sRow as String
       Dim nIndex as Integer
       Dim oCell as Object
       Dim aCellNames as Variant
       Dim bFirstInRow as Boolean
	
	wiki = ""
	
	writerDoc = ThisComponent
	
	
	selection = writerDoc.getCurrentSelection() 
	
	' screen updates ausschalten
	ThisComponent.lockControllers()	
	
	if ( Not IsNull( selection ) ) Then
		elementCount = selection.count
		oText = ThisComponent.Text
	
		For i=0 to elementCount-1
			oElement = selection.getByIndex( i ) 
			
			If oElement.hasElements Then			
				oParagraphEnum = oElement.createEnumeration
				while oParagraphEnum.hasMoreElements
				
					oParagraph = oParagraphEnum.nextElement
					
					' process paragraphs
					if oParagraph.supportsService( "com.sun.star.text.Paragraph" ) Then
						sStyleName = oParagraph.paraStyleName
						
						
						if ( sStyleName = "Heading 1" AND oParagraph.getString() <> "" ) Then
							wiki = wiki & "=" & oParagraph.getString() & chr(13) & chr(13)
							
						Elseif ( sStyleName = "Heading 2" AND oParagraph.getString() <> "" ) Then
							wiki = wiki & "==" & oParagraph.getString() & chr(13) & chr(13)
							
						Elseif ( sStyleName = "Heading 3" AND oParagraph.getString() <> "" ) Then
							wiki = wiki & "===" & oParagraph.getString() & chr(13) & chr(13)
							
						Elseif ( sStyleName = "Heading 4" AND oParagraph.getString() <> "" ) Then
							wiki = wiki & "====" & oParagraph.getString() & chr(13) & chr(13)
							
						Elseif ( sStyleName = "Heading 5" AND oParagraph.getString() <> "" ) Then
							wiki = wiki & "=====" & oParagraph.getString() & chr(13) & chr(13)
							
						Elseif ( sStyleName = "Heading 6" AND oParagraph.getString() <> "" ) Then
							wiki = wiki & "======" & oParagraph.getString() & chr(13) & chr(13)
							
						Elseif ( sStyleName = "Heading 7" AND oParagraph.getString() <> "" ) Then
							wiki = wiki & "=======" & oParagraph.getString() & chr(13) & chr(13)
							
						Elseif ( sStyleName = "Heading 8" AND oParagraph.getString() <> "" ) Then
							wiki = wiki & "========" & oParagraph.getString() & chr(13) & chr(13)
							
						Elseif ( sStyleName = "Heading 9" AND oParagraph.getString() <> "" ) Then
							wiki = wiki & "=========" & oParagraph.getString() & chr(13) & chr(13)
							
						Elseif ( ( sStyleName = "Text body" OR sStyleName = "Standard" ) AND oParagraph.getString() <> "" ) Then

								' list or paragraph?
								if  oParagraph.NumberingIsNumber then
									wiki = wiki & "*" & oParagraph.getString() & chr(13) & chr(13)
								Else 								
						'----------------------------------------------------------------------------------------
									oEnumeration = oParagraph.createEnumeration
									while ( oEnumeration.hasMoreElements )
									
										oPortion = oEnumeration.nextElement
										sUrl = oPortion.HyperlinkURL 
										sPortionString = oPortion.String
										
										if sUrl <> "" AND sPortionString <> "" Then
											wiki = wiki & "[" & sUrl & "|" & oPortion.getString() & "]"
										Elseif sPortionString <> "" Then
											wiki = wiki & oPortion.getString()								
										End If
									Wend
									wiki = wiki & chr(13) & chr(13)							
						'----------------------------------------------------------------------------------------																
								End if
							
						Elseif ( sStyleName = "Code" ) Then
							wiki = wiki & " " & oParagraph.getString() & chr(13) 
							
						Elseif ( oParagraph.getString() <> "" ) Then
							MsgBox "unbekannter Style " & sStyleName
							
						End if
						
					Else oParagraph.supportsService( "com.sun.star.text.TextTable" )					
						' theres a bloody table
						' we need variables !!
						
						' init some stuff
						nRow = 1
						sRow = "0"
						bFirstInRow = true
						wiki = wiki & "||--" & chr(13)
						
						aCellNames = oparagraph.getCellNames						
						for nIndex = LBound( aCellNames ) to UBound( aCellNames )
								oCell = oParagraph.getCellByName( aCellNames( nIndex ) )
								
								' be aware of new row!
								sRow = Right( oCell.CellName, Len( oCell.CellName ) -1 )
								if nRow < CInt(sRow)  Then
									' current cell is on new row
									nRow = CInt(sRow)
									' next row
									wiki = wiki & chr(13)
									bFirstInRow = true
								Else 
									bFirstInRow = false
								End If
								' insert cell cell in wicki
								
								if nRow = 1 Then 
									if Not( bFirstInRow ) Then
										wiki = wiki  & "-||-"
									End If
									wiki = wiki  & oCell.String 
								else 
									wiki = wiki & "||" & oCell.String  
								End If
						Next nIndex 
						wiki = wiki & chr( 13 ) & "--||" & chr( 13 ) & chr( 13 ) 
					End If
				Wend
			End If
		Next i
	End If
	
	' screen updates wieder einschalten
	ThisComponent.unlockControllers()
	selection2Wiki = wiki
End Function
Achja, colspans von Zellen werden ignoriert, genauso wie Rowspans und die unterstützten Formatvorlagen des obigen Skipts sind dünn geät, erweitern aber ziemlich einfach.
Meine Installation: AMD Athlon XP 1600+, 512 MB RAM, SuSE Linux 8.2, OpenOffice 1.1
Kostenlose OOo-CD in der Schweiz: http://www.office-cd.ch/
Antworten