PDA

View Full Version : Outputing Multiple Files based on data


DCS
January 6th, 2014, 01:28 PM
k... here goes....

Using 9.1 Windows

We have a project that need to output multiple files based on a specific data field. I have accomplished that with PTI's help. What I am wondering is this.

I have a data file with 760 names, addresses and other misc data. There is a field named "Plan" which changes from person to person. There are 100 different data strings that can possibly be assigned to each person's "plan". I have sorted the data so it is in order of the "plan" field (so the first 51 have the same plan , the next 32 have the same plan, etc.)

On output is it possible to tell FP to create a folder named whatever is in the "plan" field and create multiple pdfs within that folder? When it finishes that bunch of 51, create a new folder named the next "plan" and output it's files.

Sorry so long and winded, but any help would be appreciated

Thanks
Mike

Dan Korn
January 7th, 2014, 08:11 AM
On output is it possible to tell FP to create a folder named whatever is in the "plan" field and create multiple pdfs within that folder? When it finishes that bunch of 51, create a new folder named the next "plan" and output it's files.
Not with FusionPro 9.1, no. However, we are adding this functionality to FusionPro 9.2.

DCS
January 7th, 2014, 09:15 AM
Great!!

When could we expect to see 9.2?

Dan Korn
January 7th, 2014, 09:45 AM
When could we expect to see 9.2?
I don't have any release date for you, but we're working on it. My best guess (although this isn't official) is by the end of this quarter.

jwhittaker
January 7th, 2014, 12:42 PM
Mike
I have a job I do every 4 months or so and it's kind of like this. I have changed some of the code to make it more like your example.
My output folders are always the same names so I made a folder on my desktop called AllPlans and then made sub folders called Plan1, Plan2, Plan3, etc
You could then search your Plan field for the correct file location and then name the output file with the plan and name.

var str = ToLower(Field("Plan"));

if (str.search("plan1") != -1)
outpath = "/Users/MacPro/Desktop/AllPlans/Plan1/";

else if (str.search("plan2") != -1)
outpath = "/Users/MacPro/Desktop/AllPlans/Plan2/";

else if (str.search("plan3") != -1)
outpath = "/Users/MacPro/Desktop/AllPlans/Plan3/";

else if (str.search("plan4") != -1)
outpath = "/Users/MacPro/Desktop/AllPlans/Plan4/";


filename = Str(Field("Plan") + "-" + Field("Name"));
outfile = outpath + filename;

if (FieldChanged("Plan"))

FusionPro.Composition.OpenNewOutputFile(outfile + "." + FusionPro.Composition.outputFormatExtension);

DCS
January 7th, 2014, 01:54 PM
Thanks Jon, I will give it a try

DCS
January 7th, 2014, 02:28 PM
This is what i got... I am getting errors
I think it has to do with my path

var str = ToLower(Field("WelcomePackageCode"));

if (str.search("74289NY0010001-01ONEC") != -1)
outpath = "c:/Files/7-7 to Print/74289NY0010001-01ONEC/";

else if (str.search("74289NY0010001-01ONEE") != -1)
outpath = "c:/Files/7-7 to Print/74289NY0010001-01ONEE/";

else if (str.search("74289NY0010001-01ONES") != -1)
outpath = "c:/Files/7-7 to Print/74289NY0010001-01ONES/";

else if (str.search("74289NY0010001-01ONFM") != -1)
outpath = "c:/Files/7-7 to Print/74289NY0010001-01ONFM/";

else if (str.search(74289NY0020001-01ONEC") != -1)
outpath = "c:/Files/7-7 to Print/74289NY0020001-01ONEC/";

else if (str.search("74289NY0020001-01ONEE") != -1)
outpath = "c:/Files/7-7 to Print/74289NY0020001-01ONEE/";

else if (str.search("74289NY0020001-01ONES") != -1)
outpath = "c:/Files/7-7 to Print/74289NY0020001-01ONES/";

else if (str.search("74289NY0020001-01ONFM") != -1)
outpath = "c:/Files/7-7 to Print/74289NY0020001-01ONFM/";


filename = Str(Field("WelcomePackageCode") + " " + Field("LastnameRP") + "_" +
Field("firstnameRP") + " " + Field("SubscriberID"));
outfile = outpath + filename;

if (FieldChanged("WelcomePackageCode"))

FusionPro.Composition.OpenNewOutputFile(outfile + "." + FusionPro.Composition.outputFormatExtension);

jwhittaker
January 8th, 2014, 06:00 AM
What are the error messages?
I work on a mac and it's a little different than a pc. I know I had a problem with the number of chars in the length of the path. I also didn't use any special chars. One thing is that when I assign the data to the str variable I made it to lower case and you are search for uppercase. Another thing Dan Corn said somewhere is to put in \\ instead of single \ in the path but he also said you could put forward slashes to / instead. Just giving you some options to try.

outpath = "c:\\Files\\7-7 to Print\\74289NY0010001-01ONES\\";

step
January 8th, 2014, 07:00 AM
Couple of issues I see here. First, you are setting the value of the "WelcomePackageCode" to all lowercase and then searching it for uppercase letters. Secondly, I think you also need to escape spaces in your path. I think you could simplify your code to look like this:


outpath = "c:\\Files\\7-7\ to\ Print\\" + Field("WelcomePackageCode") + "\\";
filename = Field("WelcomePackageCode") + " " + Field("LastnameRP") + "_" + Field("firstnameRP") + " " + Field("SubscriberID");
outfile = outpath + filename;

if (FieldChanged("WelcomePackageCode"))
FusionPro.Composition.OpenNewOutputFile(outfile + "." + FusionPro.Composition.outputFormatExtension);

DCS
January 8th, 2014, 07:16 AM
Thanks Guys for all the help...
was playing around late into the night...
(obviously I am a complete noob to this)

couple of issues....

1. I get it to make a file named properly but only the first one of the "plan"
the rest just get named 1.pdf, 2.pdf , etc.

2. I can't seem to get the composed files into their proper folders. They are being made in my directory that the original PDF is in, even after I code the "//"

Thanks Again
Mike

jwhittaker
January 8th, 2014, 10:48 AM
Mike
Just checking that you already made the folders in the path you are using. They have to be created by you because PTI can't make them yet.
I just noticed that I have a field that is unique to all records that is in the if (FieldChanged("Dealer Code")).
Do you have a field that is unique maybe the name field you can put in the
if (FieldChanged("Name")) instead of if (FieldChanged("WelcomePackageCode"))
Also you are using the \\ not // right?

DCS
January 9th, 2014, 11:05 AM
thanks for the help once again....

This is what I have and I am getting this error:
OnNewOutpuFile, Line 19: Syntax Error: missing ) after argument list

here is the code:

var str = ToLower(Field("WelcomePackageCode"));

if (str.search("74289NY0010001-01ONEC") != -1)
//outpath = "c:\Files\7-7 to Print\74289NY0010001-01ONEC\";
outpath = "c:\\Files\\7-7ToPrint\\" + Field("WelcomePackageCode") + "\\";

else if (str.search("74289NY0010001-01ONEE") != -1)
//outpath = "c:\Files\7-7 to Print\74289NY0010001-01ONEE\";
outpath = "c:\\ Files\\7-7ToPrint\\" + Field("WelcomePackageCode") + "\\";

else if (str.search("74289NY0010001-01ONES") != -1)
//outpath = "c:/Files/7-7 to Print/74289NY0010001-01ONES/";
outpath = "c:\\Files\\7-7ToPrint\\" + Field("WelcomePackageCode") + "\\";

else if (str.search("74289NY0010001-01ONFM") != -1)
//outpath = "c:/Files/7-7 to Print/74289NY0010001-01ONFM/";
outpath = "c:\\ Files\\7-7ToPrint\\" + Field("WelcomePackageCode") + "\\";

else if (str.search(74289NY0020001-01ONEC") != -1)
//outpath = "c:/Files/7-7 to Print/74289NY0020001-01ONEC/";
outpath = "c:\\Files\\7-7ToPrint\\" + Field("WelcomePackageCode") + "\\";

else if (str.search("74289NY0020001-01ONEE") != -1)
//outpath = "c:/Files/7-7 to Print/74289NY0020001-01ONEE/";
outpath = "c:\\Files\\7-7ToPrint\\" + Field("WelcomePackageCode") + "\\";

else if (str.search("74289NY0020001-01ONES") != -1)
//outpath = "c:/Files/7-7 to Print/74289NY0020001-01ONES/";
outpath = "c:\\Files\\7-7ToPrint\\" + Field("WelcomePackageCode") + "\\";

else if (str.search("74289NY0020001-01ONFM") != -1)
//outpath = "c:/Files/7-7 to Print/74289NY0020001-01ONFM/";
outpath = "c:\\Files\\7-7ToPrint\\" + Field("WelcomePackageCode") + "\\";


filename = Field("WelcomePackageCode") + " " + Field("LastNameRP") + "_" + Field("FirstNameRP") + " " + Field("SubscriberID");
outfile = outpath + filename;

if (FieldChanged("SNSTrackingID"))

FusionPro.Composition.OpenNewOutputFile(outfile + "." + FusionPro.Composition.outputFormatExtension);


Thanks
Mike

Dan Korn
January 9th, 2014, 11:29 AM
Well, the error message is telling you that the error is on line 19. You're missing a double quote. This line:
else if (str.search(74289NY0020001-01ONEC") != -1)Should be this:
else if (str.search("74289NY0020001-01ONEC") != -1)But I don't really understand why you have all those chained "if...else if" statements which all do exactly the same thing. Do you always want to do this?
outpath = "c:\\Files\\7-7ToPrint\\" + Field("WelcomePackageCode") + "\\";If so, then just do that, unconditionally, without all the "if" statements. You can just get rid of lines 1 through 32, which reduces the entire rule to this:
outpath = "c:\\Files\\7-7ToPrint\\" + Field("WelcomePackageCode") + "\\";
filename = Field("WelcomePackageCode") + " " + Field("LastNameRP") + "_" + Field("FirstNameRP") + " " + Field("SubscriberID");
outfile = outpath + filename;

if (FieldChanged("SNSTrackingID"))
FusionPro.Composition.OpenNewOutputFile(outfile + "." + FusionPro.Composition.outputFormatExtension);Of course, the only condition you really care about here is "if (FieldChanged("SNSTrackingID"))", so I would just put everything in a block based on that condition, like so:
if (FieldChanged("SNSTrackingID"))
{
outpath = "c:\\Files\\7-7ToPrint\\" + Field("WelcomePackageCode") + "\\";
filename = Field("WelcomePackageCode") + " " + Field("LastNameRP") + "_" + Field("FirstNameRP") + " " + Field("SubscriberID");
outfile = outpath + filename;
FusionPro.Composition.OpenNewOutputFile(outfile + "." + FusionPro.Composition.outputFormatExtension);
}Which of course can be reduced even further, to this:
if (FieldChanged("SNSTrackingID"))
FusionPro.Composition.OpenNewOutputFile("c:\\Files\\7-7ToPrint\\" + Field("WelcomePackageCode") + "\\" +
Field("WelcomePackageCode") + " " + Field("LastNameRP") + "_" + Field("FirstNameRP") + " " + Field("SubscriberID") +
"." + FusionPro.Composition.outputFormatExtension);

DCS
January 9th, 2014, 02:25 PM
I've got 2 things to say 'bout that....

1. DOH!!!!
2. LOL


Mike

DCS
January 23rd, 2014, 07:44 AM
Thanks for everyone's help on this....

One more question - Is there any way to tell FP to only use certain pages from the PDF. eg. pages 2-12

Thanks
Mike

Dan Korn
January 23rd, 2014, 09:12 AM
One more question - Is there any way to tell FP to only use certain pages from the PDF. eg. pages 2-12
Yes. Search this forum for SetBodyPageUsage for lots of examples.