mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Convert wmf images from RTF files using imagemagick
This commit is contained in:
parent
8414c4e295
commit
a72cc18eba
@ -12,7 +12,7 @@
|
|||||||
## You should have received a copy of the GNU General Public License along
|
## You should have received a copy of the GNU General Public License along
|
||||||
## with this program; if not, write to the Free Software Foundation, Inc.,
|
## with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
import os, sys, tempfile, subprocess, shutil, logging
|
import os, sys, tempfile, subprocess, shutil, logging, glob
|
||||||
|
|
||||||
from libprs500.ebooks.lrf import option_parser as lrf_option_parser
|
from libprs500.ebooks.lrf import option_parser as lrf_option_parser
|
||||||
from libprs500.ebooks.metadata.meta import get_metadata
|
from libprs500.ebooks.metadata.meta import get_metadata
|
||||||
@ -20,9 +20,12 @@ from libprs500.ebooks.lrf.html.convert_from import process_file as html_process_
|
|||||||
from libprs500.ebooks import ConversionError
|
from libprs500.ebooks import ConversionError
|
||||||
from libprs500 import isosx, setup_cli_handlers, __appname__
|
from libprs500 import isosx, setup_cli_handlers, __appname__
|
||||||
|
|
||||||
UNRTF = 'unrtf'
|
UNRTF = 'unrtf'
|
||||||
|
CONVERT = 'convert'
|
||||||
if isosx and hasattr(sys, 'frameworks_dir'):
|
if isosx and hasattr(sys, 'frameworks_dir'):
|
||||||
UNRTF = os.path.join(sys.frameworks_dir, UNRTF)
|
UNRTF = os.path.join(sys.frameworks_dir, UNRTF)
|
||||||
|
CONVERT = os.path.join(sys.frameworks_dir, CONVERT)
|
||||||
|
|
||||||
|
|
||||||
def option_parser():
|
def option_parser():
|
||||||
return lrf_option_parser(
|
return lrf_option_parser(
|
||||||
@ -30,6 +33,18 @@ def option_parser():
|
|||||||
'''%prog converts mybook.rtf to mybook.lrf'''
|
'''%prog converts mybook.rtf to mybook.lrf'''
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def convert_images(html, logger):
|
||||||
|
wmfs = glob.glob('*.wmf') + glob.glob('*.WMF')
|
||||||
|
for wmf in wmfs:
|
||||||
|
target = os.path.join(os.path.dirname(wmf), os.path.splitext(os.path.basename(wmf))[0]+'.jpg')
|
||||||
|
try:
|
||||||
|
subprocess.check_call(CONVERT + ' ' + wmf + ' ' + target, shell=True)
|
||||||
|
html = html.replace(os.path.basename(wmf), os.path.basename(target))
|
||||||
|
except Exception, err:
|
||||||
|
logger.warning(u'Unable to convert image %s with error: %s'%(wmf, unicode(err)))
|
||||||
|
continue
|
||||||
|
return html
|
||||||
|
|
||||||
def generate_html(rtfpath, logger):
|
def generate_html(rtfpath, logger):
|
||||||
tdir = tempfile.mkdtemp(prefix=__appname__+'_')
|
tdir = tempfile.mkdtemp(prefix=__appname__+'_')
|
||||||
cwd = os.path.abspath(os.getcwd())
|
cwd = os.path.abspath(os.getcwd())
|
||||||
@ -42,7 +57,7 @@ def generate_html(rtfpath, logger):
|
|||||||
cmd = ' '.join([UNRTF, '"'+rtfpath+'"'])
|
cmd = ' '.join([UNRTF, '"'+rtfpath+'"'])
|
||||||
p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE,
|
p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE,
|
||||||
stderr=subprocess.PIPE)
|
stderr=subprocess.PIPE)
|
||||||
file.write(p.stdout.read())
|
file.write(convert_images(p.stdout.read(), logger))
|
||||||
ret = p.wait()
|
ret = p.wait()
|
||||||
if ret != 0:
|
if ret != 0:
|
||||||
if isosx and ret == -11: #unrtf segfaults on OSX but seems to convert most of the file.
|
if isosx and ret == -11: #unrtf segfaults on OSX but seems to convert most of the file.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user