def run(self): sourceDir = scribus.fileDialog("Comic Directory", isdir=True) scribus.newDoc( self.pageSize, self.margins, scribus.PORTRAIT, 0, scribus.UNIT_MILLIMETERS, scribus.FACINGPAGES, scribus.FIRSTPAGERIGHT) for resource in os.walk(sourceDir): self.clean_up_and_queue(resource[0], resource[1], resource[2]) scribus.gotoPage(1) test = re.compile("[0-9]{1,}\.(%s)$" % self.formats, re.IGNORECASE) files = filter(test.search, self.images) files.sort() nImages = len(files) if nImages % 4 > 0: print "not" numPages = ( ((nImages / 4) +1 ) * 4 ) else: print ":p" numPages = nImages print numPages for page in range(1, numPages): scribus.newPage(-1) i = 1 for file in files: scribus.gotoPage(i) self.createImagePage(file, "image_%s" % i) i = i + 1 if os.path.isfile("%s/front_cover.jpg" % sourceDir): file = "%s/front_cover.jpg" % sourceDir scribus.newPage(1) scribus.gotoPage(1) self.createImagePage(file, "front_cover") if os.path.isfile("%s/back_cover.jpg" % sourceDir): file = "%s/back_cover.jpg" % sourceDir scribus.newPage(-1) scribus.gotoPage(scribus.pageCount()) self.createImagePage(file, "back_cover") if os.path.isfile("%s/logo_cover.svg" % sourceDir): file = "%s/logo_cover.svg" % sourceDir scribus.gotoPage(1) scribus.placeSVG(file, 0, 0) # result = scribus.messageBox('Debug', "%s" % self._comicInfo) scribus.setInfo("Fernando Michelotti", "Comics", "description") scribus.zoomDocument(-100) scribus.saveDoc()
def extract(chart): """ Extract the graphic chart of the current document. """ if not scribus.haveDoc(): return try: scribus.saveDoc() if not scribus.getDocName(): raise IOError('Could not save document.') except: scribus.messageBox('Script failed', 'This script only works if you saved the document.') return colors = extract_colors() fonts = extract_fonts() for color in colors: chart.add_color(color) for font in fonts: chart.add_font(font) return chart
def main(): # habe ich ein Scribus-Dokument if scribus.haveDoc(): # dann speichere das scribus.saveDoc() # finde den Namen heraus name = scribus.getDocName() # nur den Dateinamen, ohne ext suchname = os.path.splitext(os.path.split(name)[1])[0] # frage nach erstem datensatz von = scribus.valueDialog( "Daten von", "Daten aus " + suchname + ".csv werden verarbeitet.\nBeginne bei Datensatz (keine Eingabe = von Anfang an):", "") # frage nach letztem datensatz bis = scribus.valueDialog( "Daten bis", "Daten aus " + suchname + ".csv werden verarbeitet.\nEnde bei Datensatz (keine Eingabe = bis zum letzten):", "") # starte das Bashscript fuer den Seriengenerator subprocess.call(['bash', '~/bin/scribus/meinSG', suchname, von, bis]) else: scribus.messageBox("Fehler", "kein Dokument geöffnet", scribus.ICON_CRITICAL)
page_number = args.page - 1 insert_position = 0 if args.before is True else 1 # 0 = before; 1 = after master_page = args.masterpage total_pages = get_pages_range(import_file) # Output path output_file = args.output if output_file is not None: output_file = os.path.abspath(args.output) # Importing `import_file` scribus.openDoc(base_file) scribus.importPage( import_file, total_pages, 1, insert_position, page_number ) # Applying masterpage(s) if master_page is not None: for number in range(page_number + 2, page_number + len(total_pages) + 2): scribus.applyMasterPage(master_page, number) # Either overwriting `base_file` .. if output_file is None: scribus.saveDoc() # .. or creating new `output` file (requires `--output`) else: scribus.saveDocAs(output_file) scribus.closeDoc()
def funzioneprincipale(csvData): # def funzioneprincipale(row,headerRow): # scribus.messageBox('Scribus - Messaggio di test', str(row), scribus.ICON_WARNING, scribus.BUTTON_OK) # scribus.messageBox('Scribus - Messaggio di test', str(headerRow), scribus.ICON_WARNING, scribus.BUTTON_OK) # scribus.messageBox('Scribus - Messaggio di test', str(csvData), scribus.ICON_WARNING, scribus.BUTTON_OK) if scribus.haveDoc(): # scribus.newDoc(scribus.PAPER_LETTER, (20,20,20,20),scribus.PORTRAIT, 1, scribus.UNIT_POINTS, scribus.NOFACINGPAGES, scribus.FIRSTPAGERIGHT) # Dichiaro variabili e costanti # le COSTANTI sono quelle in maiuscolo POS_X_FOOTER = 43 WIDTH1 = 330 WIDTH2 = 90 HEIGHT = 26 MAX_HEIGHT = 710 # max_width = 520 INTERLINEA = 12.5 MARGIN_SX = 3.5 MARGIN_DX = 3.5 MARGIN_UP = 3.5 MARGIN_DOWN = 2 FONT_SIZE = 8 NUM_COL = 3 # primo numero da inserire dopo %VAR_F # n = 6 # Riga di partenza del csv, da cui inizio a creare la tabella ROW_START = 1 # Colonna di partenza, da cui creare la tabella COL_START = 3 # variabili in minuscolo pos_y = 521 # ciclo tutte le righe del csv for i in range(ROW_START, len(csvData)): # creo la variabile pos_footer, che contiene la nuova posizione della y # che verrà assegnata alla cornice di testo chiamata 'footer' pos_x = 43 for j in range(COL_START, len(csvData[i])): # i è la riga attuale del csv # j è la colonna attuale del csv # cur_col è la colonna attuale nella pagina cur_col = j % NUM_COL cur_width = WIDTH1 if cur_col == 0: # and pos_x <= pos_x: # a capo ogni num_col celle # pos_y = pos_y + height pos_x = 43 if pos_y >= MAX_HEIGHT: # crea una nuova pagina se la variabile pos_y raggiunge la dimensione # massima prestabilita scribus.newPage(-1) pos_y = HEIGHT + 20 else: pos_y = pos_y + HEIGHT if cur_col == 1 or cur_col == 2: cur_width = WIDTH2 nometxtbox = "Cella: csvrow=%d, row=%d, col=%d" % (i, pos_y, pos_x) # cell_label = "%VAR_F" + str(n) + "%" cell_label = csvData[i][j] scribus.createText(pos_x, pos_y, cur_width, HEIGHT, nometxtbox) scribus.createRect(pos_x, pos_y, cur_width, HEIGHT) scribus.setText(cell_label, nometxtbox) # modifico la dimensione del testo scribus.setFontSize(FONT_SIZE, nometxtbox) # modifico i margini (sx, dx, alto, basso) scribus.setTextDistances(MARGIN_SX, MARGIN_DX, MARGIN_UP, MARGIN_DOWN, nometxtbox) # modifico l’interlinea scribus.setLineSpacing(INTERLINEA, nometxtbox) pos_x = pos_x + cur_width # n=n+1 pos_footer = pos_y + HEIGHT + 5 scribus.moveObjectAbs(POS_X_FOOTER, pos_footer, "footer") # Salvo il documento attivo altrimenti # lo script ScribusGenerator non inserisce la tabella appena creata # scribus.messageBox('Scribus - Messaggio di test', str(cell_label), scribus.ICON_WARNING, scribus.BUTTON_OK) scribus.saveDoc() else: scribus.messageBox( "Alert di errore", "Devi avere una pagina Scribus aperta!!!", scribus.ICON_WARNING, scribus.BUTTON_OK ) scribus.newDoc( scribus.PAPER_LETTER, (20, 20, 20, 20), scribus.PORTRAIT, 1, scribus.UNIT_POINTS, scribus.NOFACINGPAGES, scribus.FIRSTPAGERIGHT, )
def funzioneprincipale(csvData): for line in csvData: i = 0 listacompleta=[] while i < len(line): listacompleta.append(line[i]) #scribus.messageBox('Scribus - Messaggio di test', str(line[i]), scribus.ICON_WARNING, scribus.BUTTON_OK) i = i + 1 if scribus.haveDoc(): #scribus.messageBox('Scribus - Messaggio di test', str(listacompleta), scribus.ICON_WARNING, scribus.BUTTON_OK) #scribus.newDoc(scribus.PAPER_LETTER, (20,20,20,20),scribus.PORTRAIT, 1, scribus.UNIT_POINTS, scribus.NOFACINGPAGES, scribus.FIRSTPAGERIGHT) #variabili pos_footer_x = 43 pos_y = 521 width1 = 330 width2 = 90 height = 26 max_height = 710 max_width = 520 interlinea = 12.5 margin_sx = 3.5 margin_dx = 3.5 margin_up = 3.5 margin_down = 2 font_size = 8 # primo numero da inserire dopo %VAR_F n = 6 num_col = 3 width3 = width1 + width2 #ciclo tutte le righe del csv for i in range(1, len(csvData)): #scribus.messageBox('Scribus - Messaggio di test', str(len(csvData[i])), scribus.ICON_WARNING, scribus.BUTTON_OK) pos_x = 43 #colonne for j in range(3, len(csvData[i])): #creo la variabile pos_footer, che contiene la nuova posizione della y #che verrà assegnata alla cornice di testo chiamata 'footer' while (pos_x <= max_width): #creazione di 3 colonne con dimensioni diverse # la prima ha larghezza pari a variabile width1 # la seconda e la terza hanno la larghezza pari a width2 if (pos_x <= width1): nometxtbox = "Cella: I=%d, Pos_x=%d, Pos_y=%d" % (i, pos_x, pos_y) cell_label = csvData[i][j] scribus.createText(pos_x, pos_y, width1, height, nometxtbox) scribus.createRect(pos_x, pos_y, width1, height) scribus.setText(cell_label, nometxtbox) #scribus.setText("Testo di pcsvDataa","Testo1") #comando per creare una cornice di testo #modifico la dimensione del testo scribus.setFontSize(font_size, nometxtbox) #modifico i margini (sx, dx, alto, basso) scribus.setTextDistances(margin_sx, margin_dx, margin_up, margin_down, nometxtbox) #modifico l’interlinea scribus.setLineSpacing(interlinea,nometxtbox) j = j + 1 pos_x = pos_x + width1 #n = n + 1 elif (pos_x <= width3): nometxtbox = "Cella: I=%d, Pos_x=%d, Pos_y=%d" % (i, pos_x, pos_y) cell_label = csvData[i][j] scribus.createText(pos_x, pos_y, width2, height, nometxtbox) scribus.createRect(pos_x, pos_y, width2, height) scribus.setText(cell_label, nometxtbox) #Allineo il testo al centro scribus.setTextAlignment(scribus.ALIGN_CENTERED, nometxtbox) scribus.setFontSize(font_size, nometxtbox) scribus.setTextDistances(margin_sx, margin_dx, margin_up, margin_down, nometxtbox) scribus.setLineSpacing(interlinea,nometxtbox) j = j + 1 pos_x = pos_x + width2 #n = n + 1 else: nometxtbox = "Cella: I=%d, Pos_x=%d, Pos_y=%d" % (i, pos_x, pos_y) cell_label = csvData[i][j] scribus.createText(pos_x, pos_y, width2, height, nometxtbox) scribus.createRect(pos_x, pos_y, width2, height) scribus.setText(cell_label, nometxtbox) #Allineo il testo al centro scribus.setTextAlignment(scribus.ALIGN_CENTERED, nometxtbox) scribus.setFontSize(font_size, nometxtbox) scribus.setTextDistances(margin_sx, margin_dx, margin_up, margin_down, nometxtbox) scribus.setLineSpacing(interlinea,nometxtbox) j = j + 1 pos_x = pos_x + width2 #n = n + 1 if pos_y >= max_height: #crea una nuova pagina se la variabile pos_y raggiunge la dimensione #massima prestabilita scribus.newPage(-1) pos_y = height + 20 else: pos_y = pos_y + height #Salvo il documento attivo altrimenti #lo script ScribusGenerator non inserisce la tabella appena creata pos_footer_y = pos_y + height + 5 scribus.moveObjectAbs(pos_footer_x, pos_footer_y,"footer") scribus.saveDoc() else: scribus.messageBox('Alert di errore', "Devi avere una pagina Scribus aperta!!!", scribus.ICON_WARNING, scribus.BUTTON_OK) scribus.newDoc(scribus.PAPER_LETTER, (20,20,20,20),scribus.PORTRAIT, 1, scribus.UNIT_POINTS, scribus.NOFACINGPAGES, scribus.FIRSTPAGERIGHT) #per importare uno script copiarlo nella cartella: C:\Python27\Lib\site-packages #Ottenere testo da textbox #a=scribus.getText(nometextbox) #mostrare msgbox #scribus.messageBox('Scribus - Messaggio di test', a, scribus.ICON_WARNING, scribus.BUTTON_OK)
lattextstring = "RosentextLatein" if not os.path.exists(baseDirName): os.makedirs(baseDirName) else: for the_file in os.listdir(baseDirName): file_path = os.path.join(baseDirName, the_file) try: if os.path.isfile(file_path): os.unlink(file_path) except Exception, e: print e #Make Document Temporary scribus.saveDoc() scribus.saveDocAs(tmpFileName) scribus.messagebarText("Dokument in Bearbeitung, bitte warten") scribus.closeDoc() scribus.messagebarText("Dokument in Bearbeitung, bitte warten") scribus.openDoc(tmpFileName) scribus.selectText(0, 1, idtextstring) idfont = scribus.getFont(idtextstring) idfonSize = scribus.getFontSize(idtextstring) idtextcolor = scribus.getTextColor(idtextstring) idtextshade = scribus.getTextShade(idtextstring) scribus.selectText(0, 1, gertextstring) gerfont = scribus.getFont(gertextstring)