missing images relink

This commit is contained in:
2019-07-17 15:20:02 +02:00
parent fe3110b08d
commit 957f5ca4e5
+53
View File
@@ -0,0 +1,53 @@
# -*- coding: utf-8 -*-
# © 2015.09.22 ale rimoldi <ale@graphicslab.org>
# This program is free software under the MIT license.
"""
USAGE
You must have a document open.
This script checks if the document contains image frames with a broken link.
If any is found, it will ask if you want to look for the correct image and then
prompt for the new location of the first image.
It will then check all other image frames with a broken link, and look for an image
of the same name in the new location. It the image is there, the link will be
replaced.
You would be wise to work on a copy of the original to avoid accidentally include
the wrong images.
"""
import scribus
import os.path
page_n = scribus.pageCount()
item_missing = []
# create a list of items with a brokein link
for page_i in range(0, page_n) :
scribus.gotoPage(page_i + 1)
item_list = scribus.getPageItems()
# print(item_list)
for item in item_list :
if item[1] == 2 :
image_filepath = ""
image_filepath = scribus.getImageFile(item[0])
print(image_filepath)
if image_filepath != "" and not os.path.isfile(image_filepath) :
item_missing.append((item[0], image_filepath))
print(item_missing)
# read the link for the first image with a broken link and try to apply the path
# to each other image with a broken link
if item_missing :
if scribus.messageBox("Missing images", "There are missing images. Do you want to look for them?", scribus.ICON_WARNING, scribus.BUTTON_YES, scribus.BUTTON_NO) == scribus.BUTTON_YES:
filename_found = scribus.fileDialog("Find "+os.path.basename(item_missing[0][1]), "Image files (*."+os.path.splitext(item_missing[0][1])[1][1:]+")")
# print(filename_found)
if filename_found:
path_found = os.path.dirname(filename_found)
print("path_found "+path_found)
for item in item_missing:
item_filename = os.path.join(path_found, os.path.basename(item[1]))
# print(item_filename)
if os.path.isfile(item_filename) :
scribus.loadImage(item_filename, item[0])