将html渲染为球拍gui

问题描述 投票:1回答:1

我正在尝试编写一个WYSIWYG文本编辑器,该编辑器允许我在顶部窗口中编写文本,并在底部窗口中呈现结果的涂鸦文本。我发现执行此操作的方法是定期在后台调用scribble myfile.rkt,然后使用render-html-to-text将结果输出呈现到底部屏幕。我在使渲染正常工作时遇到了一些麻烦。根据我需要的文档

  in : input-port?
  dest : (is-a? html-text<%>)
  load-img? : any/c
  eval-rkt? : any/c

我脚本的相关部分看起来像这样

#lang racket/gui
(require racket/os racket/runtime-path "init.rkt" 
         browser/htmltext)
(require browser)


(define f (new frame% [label (~a "Dremacs" "@" (gethostname))]
                      [width 960]
                      [height 540]))



(define new-cnv (new cnv% [parent f]))


(send t insert ";; This buffer is for text that is not saved, and for Lisp evaluation.
;; To create a file, visit it with C-x C-f and enter text in its buffer.")
(send new-cnv set-editor t)

(define html-renderer%
  (interface (html-text<%>)))



(define viewer (new panel%
                    [parent f]
                    [min-width 300]
                    [min-height 300]))



(render-html-to-text (open-input-file "TODO.html") html-renderer% #t #t)

(send f show #t)

但是我得到了错误

render-html-to-text: expects argument of type <html-text<%> object>; given: '(#<input-port:/home/diego/repos/dremacs/dremacs/TODO.html> #<interface:html-renderer%>)
  context...:
   /usr/share/racket/pkgs/drracket/browser/htmltext.rkt:61:0: render-html-to-text
   "/home/diego/repos/dremacs/dremacs/editor.rkt": [running body]
   temp37_0

而且我不确定我在做什么错。有人可以帮忙吗?

html user-interface racket
1个回答
0
投票

没有正确创建html-renderer%。

使用html-text-mixin将文本%转换为可处理html-text的东西。

但是...不要期望html渲染器太多。它很旧,不支持样式表。以前,它被用来显示DrRacket的文档。

© www.soinside.com 2019 - 2024. All rights reserved.