Avatar billede riversen Nybegynder
29. september 2008 - 20:38 Der er 17 kommentarer og
1 løsning

html til rtf

Hej,

nogen der har nogle guldkorn omkring konvertering af en html streng til rtf format.

Har fundet http://rbytes.net/software/html-to-rtf-pro-dll-review/, men det har ikke interesse.
Avatar billede olebole Juniormester
29. september 2008 - 20:54 #1
Avatar billede olebole Juniormester
29. september 2008 - 20:54 #2
- venlig hilsen, deres private Google-betjener  ;D
Avatar billede olebole Juniormester
29. september 2008 - 20:55 #3
Ups ... sorry, jeg troede, jeg var et andet sted, riversen  ;D
Avatar billede arne_v Ekspert
30. september 2008 - 04:05 #4
Jeg kan heller ikke finde nogle gode libs til en generel HTML->RTF konvertering.

Men hvis det er meget simpel HTML så kunne du måske lave din egen parser og
generere RTF med iText lib'et.
Avatar billede arne_v Ekspert
30. september 2008 - 04:05 #5
demo kode:

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import com.lowagie.text.Chunk;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Font;
import com.lowagie.text.rtf.RtfWriter2;

public class HTML2RTF {
    private static Pattern re = Pattern.compile("([^<>]+)|((<[^>]+>)([^<>]+)(</[^>]+>))");
    public static void write(String html, String fnm) throws IOException, DocumentException {
        Document doc = new Document();
        RtfWriter2.getInstance(doc, new FileOutputStream(fnm));
        doc.open();
        Matcher m = re.matcher(html);
        while(m.find()) {
            if(m.group(1) != null) {
                Chunk ch = new Chunk(m.group(1));
                ch.setFont(new Font(Font.TIMES_ROMAN, 12.0f, Font.NORMAL));
                doc.add(ch);
            }
            if(m.group(4) != null) {
                if(m.group(3).toLowerCase().startsWith("<b")) {
                    Chunk ch = new Chunk(m.group(4));
                    ch.setFont(new Font(Font.TIMES_ROMAN, 12.0f, Font.BOLD));
                    doc.add(ch);
                } else if(m.group(3).toLowerCase().startsWith("<i")) {
                    Chunk ch = new Chunk(m.group(4));
                    ch.setFont(new Font(Font.TIMES_ROMAN, 12.0f, Font.ITALIC));
                    doc.add(ch);
                }
            }
        }
        doc.close();
    }
    public static void main(String[] args) throws Exception {
        write("foo <b>bar</b> bla <i>bla</i> etc.", "C:\\z.rtf");
    }
}
Avatar billede riversen Nybegynder
30. september 2008 - 06:19 #6
ole: signeret, uforbeholden undskyldning for upassende kækhed afventes med posten ;)

arne: prøver lige at lege med det.
Avatar billede arne_v Ekspert
28. oktober 2008 - 23:37 #7
Kommet videre ?
Avatar billede riversen Nybegynder
29. oktober 2008 - 06:01 #8
ikke endnu... satser på at prøve det af i løbet af weekenden.
Avatar billede riversen Nybegynder
15. december 2008 - 19:47 #9
jeg har ikke kunnet finde noget helt godt endnu, så jeg har tænkt mig at prøve med dll'en, jeg linker til i spørgsmålet.

Kan jeg kalde funktionerne vha. JNI?
Jeg har prøvet følgende:
public class Test
{

    static
    {
        System.loadLibrary( "SautinSoft.HtmlToRtf" );
    }

    public static void main( String[] args ) throws Exception
    {
        String s = "hej<br /><b>med dig</b><br><hr /><div align=\"right\">din javatosse</div>";
        Test t= new Test();
        System.out.println( t.ConvertString( s ) );
    }

    public native String ConvertString( String text );

men får java.lang.UnsatisfiedLinkError: ConvertString
Avatar billede arne_v Ekspert
15. december 2008 - 20:18 #10
Det der kraever at SautinSoft.HtmlToRtf.dll er en Win32 DLL beregnet til brug via
JNI, da JNI laver om paa baade navne og antal parametre.
Avatar billede riversen Nybegynder
15. december 2008 - 20:39 #11
ja, så dutter den ikke.
Avatar billede arne_v Ekspert
15. december 2008 - 20:57 #12
Problemet loeses nogen gange med en af:

Java---(JNI)---Win32 DLL i C---(normal kald)---Win32 DLL

Java---(JNI)---Win32 DLL i C++---(COM kald)---COM DLL
Avatar billede riversen Nybegynder
16. december 2008 - 06:19 #13
Det er nok nemmere, hvis du lige laver en komplet html-to-rtf klasse istedet. Giver du lige besked når den er klar
Avatar billede arne_v Ekspert
20. december 2008 - 21:48 #14
Det var vel en joke ...
Avatar billede arne_v Ekspert
20. december 2008 - 21:51 #15
Men nu hentede jeg lige det du linkede til.

De har lavet alt arbejdet for dig.

Put htmltortf.jar i classpath og kod som:

using com.sautinsoft.HtmlToRtf;
...
HtmlToRtf cvt = new HtmLToRtf();
String html = "...";
String rtf = cvt.convertHtmlToRtf(html);

(de to DLL filer skal nok være i PATH for at det virker)
Avatar billede riversen Nybegynder
21. december 2008 - 05:50 #16
hva' f..... havde slet ikke set den .jar fil.
Avatar billede riversen Nybegynder
21. december 2008 - 06:18 #17
smid et svar så får du point for det :)
Avatar billede arne_v Ekspert
21. december 2008 - 15:18 #18
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester