commit bd0510b08ff6f80f40b436738da1c4e758d28f74
Author: Pavel Sanda <[email protected]>
Date: Fri Aug 12 01:03:09 2022 +0200
configure.py: sanitize restrictive policies of IM on some distributions.
Some distros banned GS for Imagemigick conversions.
In effect eps->png conversion is broken and this can't
be fixed locally by the user.
Our workaround is to allow eps->pdf->png conversion from
different tools when IM bans the conversion.
https://www.mail-archive.com/[email protected]/msg217834.html
---
lib/configure.py | 25 +++++++++++++++++++++----
1 files changed, 21 insertions(+), 4 deletions(-)
diff --git a/lib/configure.py b/lib/configure.py
index 92cf561..727fb03 100644
--- a/lib/configure.py
+++ b/lib/configure.py
@@ -1087,13 +1087,15 @@ def checkConverterEntries():
# Only define a converter from pdf6 for graphics
checkProg('a PDF to EPS converter', ['pdftops -eps -f 1 -l 1 $$i $$o'],
rc_entry = [ r'\converter pdf6 eps "%%" ""' ])
- # Define a converter from pdf6 to png for Macs where pdftops is missing.
+ # sips:Define a converter from pdf6 to png for Macs where pdftops is
missing.
# The converter utility sips allows to force the dimensions of the
resulting
# png image. The value of 800 pixel for the width is arbitrary and not
# related to the current screen resolution or width.
# There is no converter parameter for this information.
+ #
+ #pdftoppm: Some systems ban IM eps->png conversion. We will offer
eps->pdf->png route instead.
checkProg('a PDF to PNG converter',
- ['sips --resampleWidth 800 --setProperty format png $$i --out $$o'],
+ ['sips --resampleWidth 800 --setProperty format png $$i --out $$o' ,
'pdftoppm -r 72 -png -singlefile $$i > $$o'],
rc_entry = [ r'\converter pdf6 png "%%" ""' ])
# Create one converter for a PDF produced using TeX fonts and one for a
# PDF produced using non-TeX fonts. This does not produce non-unique
@@ -1190,8 +1192,23 @@ def checkConverterEntries():
checkProg('an EPS -> PDF converter', ['epstopdf'],
rc_entry = [ r'\converter eps pdf6 "epstopdf
--outfile=$$o $$i" ""'])
#
- checkProg('an EPS -> PNG converter', ['magick $$i[0] $$o', 'convert $$i[0]
$$o'],
- rc_entry = [ r'\converter eps png "%%" ""'])
+ # Due to more restrictive policies, it is possible that (image)magick
+ # does not allow conversions from eps to png.
+ # So before setting the converter test it it on a mock file
+ _, cmd = checkProg('an EPS -> PNG converter', ['magick', 'convert'])
+ if cmd:
+ writeToFile('mock.eps', r'%!PS')
+ try:
+ subprocess.check_call([cmd, "mock.eps", "mock.png"])
+ removeFiles(['mock.eps', 'mock.png'])
+ rc_entry = r'\converter eps png "%s $$i[0] $$o"
""'
+ addToRC(rc_entry % cmd)
+ except:
+ removeFiles(['mock.eps'])
+ #needs empty record otherwise default converter will be issued
+ rc_entry = r'\converter eps png "" ""'
+ addToRC(rc_entry)
+ logger.info('ImageMagick seems to ban conversions from EPS.
Disabling direct EPS->PNG.')
#
# no agr -> pdf6 converter, since the pdf library used by gracebat is not
# free software and therefore not compiled in in many installations.
--
lyx-cvs mailing list
[email protected]
http://lists.lyx.org/mailman/listinfo/lyx-cvs