Search Scripts for Scale 100 Textframes + set new Font Size

Previous topic - Next topic

martinjenniges

Hello,

I am new in Scribus.
My first Project was an book with Soldiersletters from the Napoleons-War-Time from a old Book in Din-A5; 148 mm x 210 mm.

After finished this Project, I wouldt creat a new book with the same Text an Images for People, who need a greater Font Size. This new Book is in Din-A4; 210 mm x 297 mm.

Ergo, I need :

1. to change the Text Frames Size in 100 pages from 118 mm x 165 mm to 180 mm x 252 mm
2. change the Text Font Sizes from

Letter Titles 14 pt to 16 pt
Letter Text 10 pt to 14 pt
Image Sub-Title Text 9 pt to 12 pt

My Question: Gives it Scripts which can makes this Changes ? Or is there in Scribus an easies way ?

Thanks for your answers!

See regard
Martin


a.l.e

hi martin

yes, it's manageable

you can first read

https://wiki.scribus.net/canvas/Category:Scripts

and then go through

https://wiki.scribus.net/canvas/Enlarge2Page

if you have further questions, just ask!

ciao
a.l.e

dragonfly

In a similar experimental exercise I first copied the original *.sla file
then changed *.sla extension to *.xml
and opened file as XML in XMLCopyEditor ..

http://xml-copy-editor.sourceforge.net/

Try searching for patterns to make global changes.

[added note]
Actually, looking at my XMLCopyEditor, you can just open *.sla files without changing extension to *.xml.  Look at <PAGE and <STYLE elements.

martinjenniges

Hello,
I have me write a script, but Ireceive the following error

Traceback (most recent call last):
  File "<string>", line 10, in <module>
  File "C:\Program Files\Scribus 1.5.4\share\scripts\VergroesserungTextrahmen.py", line 35, in <module>
    meineRahmenBreite, meineRahmenHoehe = scribus.getSize(meinRahmen)
TypeError: coercing to Unicode: need string or buffer, tuple found

Here my script:
#!/usr/bin/env python
# -*- coding: utf-8  -*-

# VergroesserungTextrahemn.py
# this version 2018.08.06
#

import scribus

if scribus.haveDoc():
   if scribus.selectionCount() == 0:
      scribus.messageBox('Scribus - Script Error',
         "Es ist kein Textrahmen ausgewählt.\nBitte Textrahmen auswählen und starten Sie das Script neu.",
         scribus.ICON_WARNING, scribus.BUTTON_OK)
      sys.exit(2)
   if scribus.selectionCount() > 1:
      scribus.messageBox('Scribus - Script Error',
         "Sie haben mehr als einen Rahmen ausgewählt.\nBitte Textrahmen auswählen und starten Sie das Script neu.",
         scribus.ICON_WARNING, scribus.BUTTON_OK)
      sys.exit(2)

meineSeite = 1
meineSeitenAnzahl = scribus.pageCount()
meineSeiteBreite, meineSeiteHoehe = scribus.getPageSize()
meinOben,meinLinks,meinRechts,meinUnten = scribus.getPageMargins()
meinAusgewaehlterRahmen = scribus.getSelectedObject()
meineAlteRahmenBreite, meineAlteRahmenHoehe = scribus.getSize(meinAusgewaehlterRahmen)

while (meineSeite <= meineSeitenAnzahl):
   scribus.gotoPage(meineSeite)
   meineSeitenObjekteAnzahl = scribus.getPageItems()
   meinRahmen = 1
   for meinRahmen in meineSeitenObjekteAnzahl:
      if (meinRahmen[1] == 4):
         meineRahmenBreite, meineRahmenHoehe = scribus.getSize(meinRahmen)
         if (meinAlterRahmenBreite == meineRahmenBreite) and (meinAlterRahmenHoehe == meineRahmenHoehe) :
            scribus.sizeObject((meineSeiteBreite - meinLinks - meinRechts), (meineSeiteHoehe - meinOben - meinUnten), meinRahmen)
   meineSeite = meineSeite + 1
scribus.redrawAll()

What is the wrong code ?

Thank you for help

Martin

a.l.e

scribus.getSize(meinRahmen): getSize() expects no argument or a string.
meinRahmen is ein tuple, and you used it correctly in meinRahmen[1]...

i did not check, but i think that scribus.getSize(meinRahmen[0]) is what you're looking for.
check what the fields in meinRahmen are... though...

be careful:

   meinRahmen = 1
   for meinRahmen in meineSeitenObjekteAnzahl:

is a dangerous thing!
- you initialize meinRahmen to a value that is not compatible with the elements in meineSeitenObjekteAnzahl
- since you only use it inside of the for, you should not define meinRahmen at a higher level, otherwise it lives longer than you need and thought...


does this help?

ciao
a.l.e

martinjenniges

Hello a.L.e.,

thank you very much. Now, it work fine!

Here my Script:

#!/usr/bin/env python
# -*- coding: utf-8  -*-

# VergroesserungTextrahemn.py
# this version 2018.08.06
#

import scribus

if scribus.haveDoc():
   if scribus.selectionCount() == 0:
      scribus.messageBox('Scribus - Script Error',
         "Es ist kein Textrahmen ausgewählt.\nBitte Textrahmen auswählen und starten Sie das Script neu.",
         scribus.ICON_WARNING, scribus.BUTTON_OK)
      sys.exit(2)
   if scribus.selectionCount() > 1:
      scribus.messageBox('Scribus - Script Error',
         "Sie haben mehr als einen Rahmen ausgewählt.\nBitte Textrahmen auswählen und starten Sie das Script neu.",
         scribus.ICON_WARNING, scribus.BUTTON_OK)
      sys.exit(2)

meineSeite = 1
meineSeitenAnzahl = scribus.pageCount()
meineSeiteBreite, meineSeiteHoehe = scribus.getPageSize()
meinOben,meinLinks,meinRechts,meinUnten = scribus.getPageMargins()
meinAusgewaehlterRahmen = scribus.getSelectedObject()
meineAlteRahmenBreite, meineAlteRahmenHoehe = scribus.getSize(meinAusgewaehlterRahmen)

while (meineSeite <= meineSeitenAnzahl):
   scribus.gotoPage(meineSeite)
   meineSeitenObjekteAnzahl = scribus.getPageItems()
   for meinRahmen in meineSeitenObjekteAnzahl:
      if (meinRahmen[1] == 4):
         meineRahmenBreite, meineRahmenHoehe = scribus.getSize(meinRahmen[0])
         if (meineAlteRahmenBreite == meineRahmenBreite) and (meineAlteRahmenHoehe == meineRahmenHoehe) :
            scribus.sizeObject((meineSeiteBreite - meinLinks - meinRechts), (meineSeiteHoehe - meinOben - meinUnten), meinRahmen[0])
   meineSeite = meineSeite + 1
scribus.redrawAll()


See regards
Martin