• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
0

Creating new pgf object

Community Beginner ,
Jan 08, 2018 Jan 08, 2018

Copy link to clipboard

Copied

Hello to everyone,

first of all: I am pretty new to FM and ExtendScript. I am integrating some old .mif files into existing FM documents with ExtendScript.

I am loading the needed parameters via propVal and using the method doc.Import().


Importing these .mif files works properly, but correctly aligning them is causing difficulties because I am not able place the files whereever I want.

As far as I see, there is no obvious ability to create and place a new pgf object in some specific place in the doc.

If that would be possible, before importing a .mif file, I certainly would create a new pgf object and import the .mif file right into it.

Is there a possibility to accomplish this, or do you guys know a better way to do so?
Thanks and king regards

TOPICS
Scripting

Views

353

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 1 Correct answer

Mentor , Jan 08, 2018 Jan 08, 2018

Hi selimc,

To put text into a document at a specific location, you need to have some familiarity with TextLoc structures. For a beginner, these can be confusing, so your questions are not unusual. Obviously, I can't give some long tutorial here, but I can give you a little sample code that inserts a new paragraph at a specific place; that is, after the second existing paragraph of the document:

  var doc = app.ActiveDoc;

  var pgf = doc.MainFlowInDoc.FirstTextFrameInFlow.FirstPgf;

  pgf = pgf.NextPg

...

Votes

Translate

Translate
Mentor ,
Jan 08, 2018 Jan 08, 2018

Copy link to clipboard

Copied

Hi selimc,

To put text into a document at a specific location, you need to have some familiarity with TextLoc structures. For a beginner, these can be confusing, so your questions are not unusual. Obviously, I can't give some long tutorial here, but I can give you a little sample code that inserts a new paragraph at a specific place; that is, after the second existing paragraph of the document:

  var doc = app.ActiveDoc;

  var pgf = doc.MainFlowInDoc.FirstTextFrameInFlow.FirstPgf;

  pgf = pgf.NextPgfInFlow;

 

  pgf = doc.NewSeriesObject(Constants.FO_Pgf, pgf);

var textLoc = new TextLoc();

  textLoc.obj = pgf;

  textLoc.offset = 0;

  doc.AddText(textLoc, "New paragraph");

If you want to get a better idea of ExtendScript overall, might I suggest that you check out some of these samples that I have available:

FrameMaker ExtendScript Samples - West Street Consulting

Good luck. I hope you get things working correctly. ExtendScript is a lot of fun once you figure it out.

Russ

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Jan 11, 2018 Jan 11, 2018

Copy link to clipboard

Copied

LATEST

Thank you very much for answer Russ. I appreciate it.

The code you have provided is helping me a lot - but how could I perform inserting a new pgf before the first pgf?
I tried setting NewSeriesObject(Constants.FO_Pgf, 0) naively, but it didn't work.

Thanks a lot!

edit: I solved it!
-> just used: NewSeriesObject(Constants.FO_Pgf, doc.MainFlowInDoc)

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines