<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <font size="-1"><font face="Helvetica, Arial, sans-serif">Hi Carlos,<br>
        <br>
        <font size="-1">Thanks for your compatibility fixes. <br>
          I pushed them to github.<br>
          <br>
          <font size="-1">Marc<br>
            <br>
          </font></font></font></font>
    <div class="moz-cite-prefix">On 31/3/13 17:52 , Carlos Ungil wrote:<br>
    </div>
    <blockquote cite="mid:D8A7BFDC-AD08-4DE5-ACFB-20A641136138@mac.com"
      type="cite">
      <pre wrap="">Hello,

I was able to make cl-pdf work on many lisps (tested on macos and windows only) using the following definitions for +external-format+ and *default-charset* in config.lisp (CMUCL is not listed explicitly, but it works as well):

(defconstant +external-format+
  #-(or sbcl lispworks clisp allegro ccl abcl ecl) :default
  #+abcl '(:iso-8859-1 :eol-style :lf)
  #+ecl '(:latin-1 :lf)
  #+ccl :latin1
  #+sbcl :latin-1
  #+allegro :octets
  #+lispworks '(:latin-1 :eol-style :lf)
  #+clisp (ext:make-encoding :charset 'charset:iso-8859-1 :line-terminator :unix))

(defvar *default-charset*
  #+(and lispworks5 win32) (ef::ef-coded-character-set win32:*multibyte-code-page-ef*)
  #-(and lispworks5 win32) *char-single-byte-codes*)    ; last resort

It seems that the form #+clisp (setf *default-file-encoding* ...) be safely removed. By the way, the code recently added to set data directories at runtime raises an error in clisp (probe-file can't handle directories on that platform).


Adding :use-salza2-zlib to *features* compressed files can be created in all the implementations (ECL tested only on macos) if string-to-octets is defined in zlib.lisp as follows:

#+use-salza2-zlib
(defun string-to-octets (string start end)
  "Convert STRING to a sequence of octets, if possible."
  (declare (type string string)
           (type buffer-offset start end)
           (optimize (speed 3) (safety 0)))
  #+(and sbcl (not octet-characters))
  (sb-ext:string-to-octets string :external-format :iso-8859-1 :start start :end end)
  #+(and allegro (not octet-characters))
  (excl:string-to-octets string :external-format :octets :start start :end end :null-terminate nil)
  #+(and clisp (not octet-characters))
  (ext:convert-string-to-bytes string custom:*default-file-encoding* :start start :end end)
  #+(and ccl (not octet-characters))
  (ccl:encode-string-to-octets string :external-format :latin-1 :start start :end end)
  #+(and cmu (not octet-characters))
  (ext:string-to-octets string :external-format :iso-8859-1 :start start :end end)
  #+(or octet-characters lispworks abcl ecl)
  (let* ((length (- end start))
         (result (make-array length :element-type 'salza2::octet)))
    (loop for i fixnum from start below end
          for j fixnum from 0
          do (setf (aref result j) (char-code (aref string i))))
    result)
  #+(and (not octet-characters) (not (or sbcl allegro clisp ccl cmu lispworks abcl ecl)))
  (error "Do not know how to convert a string to octets."))


ECL support requires as well making a couple of changes to pdf.lisp to make the conditionals #+allegro, #-allegro refer to (or allegro ecl) instead:

#-(or allegro ecl) ;; line 575
 (defmethod write-document ((filename pathname) &optional (document *document*))
 
#+(or allegro ecl) ;; line 585
 (defmethod write-document ((filename pathname) &optional (document *document*))


I also found a minor bug in example10 (the write-document is inside the dolist loop):
examples/examples.lisp
@@ -551,5 +551,5 @@
                 (apply #'pdf:set-rgb-fill (hsv->rgb (/ x 9.1) 1 1))
                 (pdf:set-transparency (/ y 9.0) bm)
                 (pdf:circle (* x 50) (* y 80) 30)
-                (pdf:fill-path))))))
-      (pdf:write-document file))))
+                (pdf:fill-path)))))))
+    (pdf:write-document file)))


Best regards,

Carlos
_______________________________________________
cl-pdf-devel site list
<a class="moz-txt-link-abbreviated" href="mailto:cl-pdf-devel@common-lisp.net">cl-pdf-devel@common-lisp.net</a>
<a class="moz-txt-link-freetext" href="http://common-lisp.net/mailman/listinfo/cl-pdf-devel">http://common-lisp.net/mailman/listinfo/cl-pdf-devel</a>

</pre>
    </blockquote>
    <br>
  </body>
</html>