[scribus] Getting a Text Frame's Page
Craig Bradney
cbradney at scribus.info
Thu Apr 14 21:02:18 UTC 2022
On 14/04/2022, 03:37, "Matt Miller" <matt.miller at fastmail.com> wrote:
On Wed, Apr 13, 2022, at 17:11, Neil Foster wrote:
> I've solved many similar problems by parsing the document's .sla file
> (which is just XML), when the Scripter API doesn't quite do what you need.
>
> Here's the basic gist to get the page number for a frame named "foo":
>
> import xml.etree.ElementTree as ET
> tree = ET.parse(getDocName())
> root = tree.getroot()
> frame = "foo"
> element = root.find(f'./DOCUMENT/PAGEOBJECT[@ANNAME="{frame}"]')
> page_number = element.get("OwnPage")
That works great for me. Thanks.
> For this to work, the object has to manually have been given a name, not
> just leaving the auto-generated one, otherwise it's not stored in the .sla
> file.
>
> On Thu, 14 Apr 2022 at 00:43, Matt Miller <matt.miller at fastmail.com> wrote:
>
>> From Python I want to find the page number that contains a certain text
>> frame. I know the object name of the frame I'm looking for, but I don't
>> know what page it's on. The only way I've thought of is to loop
>> page-by-page over the document, and for each page use getAllObjects() to
>> see if the frame is on that page. The documents are typically hundreds or
>> even a couple thousand pages. I'm hoping for a faster way.
>>
>> From the GUI I see that if I click on an object to select it, then the
>> page returned by currentPage() is what I'm looking for, but if I just call
>> selectObject() then currentPage() doesn't seem to care.
>>
>> Thanks.
>>
Hi
I have now added a getItemPageNumber() scripter function in 1.5.9.svn and 1.7.0.svn.
Thanks
Craig
More information about the scribus
mailing list