Hi,
setting non standard page dimensions (with paper-width, paper-height)
works in the ps output, but does not in the pdf or png, because of the
"-sPAPERSIZE" option passed to the "gs" command. I've made a patch to
invoke gs with "-dDEVICEWIDTHPOINTS" and "dDEVICEHEIGHTPOINTS".
Ciao,
Guido Amoruso
Index: scm/backend-library.scm
===================================================================
RCS file: /cvsroot/lilypond/lilypond/scm/backend-library.scm,v
retrieving revision 1.45
diff -u -3 -p -r1.45 backend-library.scm
--- scm/backend-library.scm 7 Apr 2006 01:00:15 -0000 1.45
+++ scm/backend-library.scm 27 Jun 2006 14:15:57 -0000
@@ -49,14 +49,14 @@
;; must be sure that we don't catch stuff from old GUBs.
(search-executable '("gs")))
-(define-public (postscript->pdf papersizename name)
+(define-public (postscript->pdf paper-width paper-height name)
(let* ((pdf-name (string-append (basename name ".ps") ".pdf"))
(cmd (format #f
"~a\
~a\
~a\
-dCompatibilityLevel=1.4 \
- -sPAPERSIZE=~a\
+ -dDEVICEWIDTHPOINTS=~,2f -dDEVICEHEIGHTPOINTS=~,2f\
-dNOPAUSE\
-dBATCH\
-r1200 \
@@ -70,7 +70,8 @@
(if (ly:get-option 'gs-font-load)
" -dNOSAFER "
" -dSAFER ")
- (sanitize-command-option papersizename)
+ paper-width
+ paper-height
pdf-name
name)))
;; The wrapper on windows cannot handle `=' signs,
@@ -90,17 +91,16 @@
(use-modules (scm ps-to-png))
-(define-public (postscript->png resolution paper-size-name name)
+(define-public (postscript->png resolution paper-width paper-height name)
;; Do not try to guess the name of the png file,
;; GS produces PNG files like BASE-page%d.png.
;;(ly:message (_ "Converting to `~a'...")
;; (string-append (basename name ".ps") "-page1.png" )))
- (let ((paper-size (sanitize-command-option paper-size-name))
- (verbose (ly:get-option 'verbose))
+ (let ((verbose (ly:get-option 'verbose))
(rename-page-1 #f))
(ly:message (_ "Converting to ~a...") "PNG")
- (make-ps-images name resolution paper-size rename-page-1 verbose
+ (make-ps-images name resolution paper-width paper-height rename-page-1 verbose
(ly:get-option 'anti-alias-factor))
(ly:progress "\n")))
Index: scm/framework-ps.scm
===================================================================
RCS file: /cvsroot/lilypond/lilypond/scm/framework-ps.scm,v
retrieving revision 1.166
diff -u -3 -p -r1.166 framework-ps.scm
--- scm/framework-ps.scm 18 Jun 2006 12:57:37 -0000 1.166
+++ scm/framework-ps.scm 27 Jun 2006 14:15:57 -0000
@@ -590,11 +590,14 @@
(define-public (convert-to-pdf book name)
(let* ((defs (ly:paper-book-paper book))
- (papersizename (ly:output-def-lookup defs 'papersizename)))
+ (paper-width (ly:output-def-lookup defs 'paper-width))
+ (paper-height (ly:output-def-lookup defs 'paper-height))
+ (output-scale (ly:output-def-lookup defs 'output-scale)))
(if (equal? (basename name ".ps") "-")
(ly:warning (_ "can't convert <stdout> to ~S" "PDF"))
- (postscript->pdf (if (string? papersizename) papersizename "a4")
+ (postscript->pdf (* paper-width output-scale (/ (ly:bp 1)))
+ (* paper-height output-scale (/ (ly:bp 1)))
name))))
(define-public (convert-to-png book name)
@@ -603,10 +606,13 @@
(resolution (if (number? defs-resolution)
defs-resolution
(ly:get-option 'resolution)))
- (papersizename (ly:output-def-lookup defs 'papersizename)))
+ (paper-width (ly:output-def-lookup defs 'paper-width))
+ (paper-height (ly:output-def-lookup defs 'paper-height))
+ (output-scale (ly:output-def-lookup defs 'output-scale)))
(postscript->png resolution
- (if (string? papersizename) papersizename "a4")
+ (* paper-width output-scale (/ (ly:bp 1)))
+ (* paper-height output-scale (/ (ly:bp 1)))
name)))
(define-public (convert-to-dvi book name)
Index: scm/framework-tex.scm
===================================================================
RCS file: /cvsroot/lilypond/lilypond/scm/framework-tex.scm,v
retrieving revision 1.94
diff -u -3 -p -r1.94 framework-tex.scm
--- scm/framework-tex.scm 6 Feb 2006 01:13:58 -0000 1.94
+++ scm/framework-tex.scm 27 Jun 2006 14:15:57 -0000
@@ -290,23 +290,27 @@
(define-public (convert-to-pdf book name)
(let* ((defs (ly:paper-book-paper book))
- (papersizename (ly:output-def-lookup defs 'papersizename)))
- (postscript->pdf (if (string? papersizename) papersizename "a4")
+ (paper-width (ly:output-def-lookup defs 'paper-width))
+ (paper-height (ly:output-def-lookup defs 'paper-height))
+ (output-scale (ly:output-def-lookup defs 'output-scale)))
+ (postscript->pdf (* paper-width output-scale (/ (ly:bp 1)))
+ (* paper-height output-scale (/ (ly:bp 1)))
(string-append (basename name ".tex") ".ps"))))
(define-public (convert-to-png book name)
(let* ((defs (ly:paper-book-paper book))
(resolution (ly:output-def-lookup defs 'pngresolution))
- (papersizename (ly:output-def-lookup defs 'papersizename)))
+ (paper-width (ly:output-def-lookup defs 'paper-width))
+ (paper-height (ly:output-def-lookup defs 'paper-height))
+ (output-scale (ly:output-def-lookup defs 'output-scale)))
(postscript->png
(if (number? resolution)
resolution
(ly:get-option 'resolution))
- (if (string? papersizename)
- papersizename
- "a4")
-
+ (* paper-width output-scale (/ (ly:bp 1)))
+ (* paper-height output-scale (/ (ly:bp 1)))
+
(string-append (basename name ".tex") ".ps"))))
(define-public (convert-to-ps book name)
Index: scm/ps-to-png.scm
===================================================================
RCS file: /cvsroot/lilypond/lilypond/scm/ps-to-png.scm,v
retrieving revision 1.24
diff -u -3 -p -r1.24 ps-to-png.scm
--- scm/ps-to-png.scm 1 Mar 2006 15:41:27 -0000 1.24
+++ scm/ps-to-png.scm 27 Jun 2006 14:15:57 -0000
@@ -129,12 +129,13 @@
(define-public (make-ps-images ps-name . rest)
(let-optional
rest ((resolution 90)
- (paper-size "a4")
+ page-width
+ page-height
(rename-page-1? #f)
(verbose? #f)
(aa-factor 1)
)
-
+
(let* ((base (basename (re-sub "[.]e?ps" "" ps-name)))
(png1 (string-append base ".png"))
(pngn (string-append base "-page%d.png"))
@@ -148,7 +149,7 @@
;;
(gs-variable-options
(if multi-page?
- (format #f "-sPAPERSIZE=~a" paper-size)
+ (format #f "-dDEVICEWIDTHPOINTS=~,2f -dDEVICEHEIGHTPOINTS=~,2f" page-width page-height)
"-dEPSCrop"))
(cmd (format #f "~a\
_______________________________________________
lilypond-devel mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/lilypond-devel