Hello @jelux.
Sorry for the delayed response...
Re: "I'm not very familiar with scripts so I don't know how to connect the names as well it would be nice to be able to export the pdf files with their names
any suggestions ?"
Give this a try...
1. Start off by creating a Paragraph style named "PDF_name"
2. Create a text box and assign the Paragraph style "PDF_name"
3. Assign the field from the data source for the pdf naming
4. Create and save the Merged document, run the script to export the pdfs
The below script will export pdfs named by the contents of the text box useing the Paragraph style named "PDF_name".
var doc = app.documents[0];
var export_preset = app.pdfExportPresets.item("[High Quality Print]");
var myResult = {};
var allStoriesArray = app.documents[0].stories.everyItem().getElements();
for(var n=0; n<allStoriesArray.length; n++){
var currentStory = allStoriesArray[n];
var textContainersLength = currentStory.textContainers.length;
var lastFrameOfStory = currentStory.textContainers[textContainersLength-1];
var objToCheck = lastFrameOfStory;
if(lastFrameOfStory.constructor.name == "TextPath")
objToCheck = lastFrameOfStory.parent
if(currentStory.overflows && objToCheck.itemLayer.visible && objToCheck.parentPage != null)
myResult[objToCheck.parentPage.name] = objToCheck.parentPage.name;
}
var pageList = new Array;
for(var a in myResult)
pageList.push(a);
pageList.sort(function(a,b) {return a-b});
if(pageList.length > 0){
alert("Error!\nDocument contains overset text on page(s): \r" + pageList);
exit();
}
var myPages = [];
for (var i=0; i<doc.pages.length; i ++) {
myPages.push(app.activeDocument.pages[i].name);
}
// Function Returns "oddPages"
var myPageNums = (myPages);
var oddPages = [];
var oddNumbers = function(myPageNums) {
for (var i = 0; i < myPageNums.length; i++) {
if ((myPageNums[i] % 2) ==1) {
oddPages.push(myPageNums[i]);
}
}
}
oddNumbers(myPageNums);
//Function Returns pdf_name for Selected Pages
function getTextFromPageUsingParagraphStyle(myPage){
if (doc.paragraphStyles.itemByName("PDF_name") == null) {
alert ('Error!\nThe Paragraph Style "PDF_name" does not exist or is Labeled Incorrectly.');
exit();
}
app.findTextPreferences = app.changeTextPreferences = null;
app.findTextPreferences.appliedParagraphStyle = "PDF_name";
var myTextframes = myPage.textFrames;
var pdf_name = null;
for (y=0; y < myTextframes.length; y++){
var mySearchResult = myTextframes[y].findText();
if (mySearchResult.length > 0){
pdf_name = mySearchResult[0].contents;
break;
}
}
return pdf_name;
}
//Dialog/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
var mySelectedFolder = Folder.selectDialog ("Select a Folder");
if(mySelectedFolder != null){
}else{
alert ("Canceled!");
exit();
}
var myDialog = app.dialogs.add({name:"DataMerge 2-Page HR Pdf Exporter", canCancel:true});
with (myDialog){
with (dialogColumns.add()){
with (dialogRows.add())
staticTexts.add({staticLabel:"Page Range Options", minWidth:25});
with (borderPanels.add()){
var myradiogroup1 = radiobuttonGroups.add();
with (myradiogroup1){
var myyesradiobutton1 = radiobuttonControls.add({staticLabel:'Export All Pages', checkedState:true});
var mynoradiobutton1 = radiobuttonControls.add({staticLabel:'Export Select Pages'});
staticTexts.add({staticLabel:"", minWidth:75});
}
}
}
}
if (myDialog.show() == true){
var SelectedPages = myradiogroup1.selectedButton;
}else{
}
myDialog.destroy();
//All Pages//////////////////////////////////////////////////////////////////////////////////////////////////
if (SelectedPages == false){
for(var p = 0; p < app.documents[0].pages.length; p=p+2) {
var frames = app.documents[0].pages[p].textFrames;
var pdf_name = null;
for(i = 0; i < frames.length; i++) {
try {
if(frames[i].paragraphs[0].appliedParagraphStyle.name == 'PDF_name') {
pdf_name = frames[i].paragraphs[0].contents;
break;
}
}catch (e){
}
}
if (pdf_name == null) {
alert ('Error!\nThe Paragraph Style "PDF_name" is not applied to one or more of the pages or is Labeled Incorrectly.');
exit();
}
if(pdf_name != null) {
}
app.scriptPreferences.enableRedraw = false;
w = new Window('window', 'Exporting Pdfs');
pb = w.add('progressbar', [12, 24, 375, 36], 0, 100);
w.show();
for (i = 0; i < 100; i++){
pb.value = i;
w.update();
$.sleep(10);
}
w.close();
app.pdfExportPreferences.pageRange = "+"+( doc.pages[p].documentOffset+1 ) + "," + "+"+( doc.pages[p+1].documentOffset+1 );
doc.exportFile(ExportFormat.PDF_TYPE, File(mySelectedFolder +"/"+ pdf_name + ".pdf"), false, export_preset);
}
alert("Done Exporting Pdf's!");
}
//Selected Pages/////////////////////////////////////////////////////////////////////////////////////////////
if (SelectedPages == true){
for(var p = 0; p < app.documents[0].pages.length; p=p+2) {
var frames = app.documents[0].pages[p].textFrames;
var pdf_name = null;
for(i = 0; i < frames.length; i++) {
try {
if(frames[i].paragraphs[0].appliedParagraphStyle.name == 'PDF_name') {
pdf_name = frames[i].paragraphs[0].contents;
break;
}
}catch (e){
}
}
if (pdf_name == null) {
alert ('Error!\nThe Paragraph Style "PDF_name" is not applied to one or more of the pages or is Labeled Incorrectly.');
exit();
}
if(!pdf_name) continue;
}
var selectPgs = new Window ("dialog", "Select Page#'s To Export");
var pgGroup = selectPgs.add("group");
pgGroup.orientation = "column";
pgGroup.alignChildren = "center";
pgGroup.add("statictext", undefined, "Export 2-Page pdf's");
var pgsList = pgGroup.add("listbox", [-25, 0, 170, 246], oddPages, {multiselect: true});
var selectedpgsList = [];
for (var i = 0; i < pgsList.items.length; i++){selectedpgsList[-1] = pgsList.items[i];}
pgsList.selection = selectedpgsList;
var btn = selectPgs.add("group");
btn.orientation = "row";
btn.alignment = ["right", "top"];
var okBtn = btn.add ("button", undefined, "OK", {name:"OK"});
var cancelBtn = btn.add ("button", undefined, "Cancel", {name:"Cancel"});
var result = selectPgs.show();
if(result == 1){
}
else if (result== 2){
alert("Canceled!");
exit(0);
}
var pagelist = [];
if(pgsList.selection == null){
alert ("Error!\nNo page#'s were selected.")
exit();
}else{
for (var i=0; i<pgsList.selection.length; i++) {
pagelist.push(pgsList.selection[i].text);
}
}
for (i = 0; i < doc.pages.length; i++) {
if (String(pagelist).match("\\b"+doc.pages[i].name+"\\b")){
var pdf_name = getTextFromPageUsingParagraphStyle(doc.pages[i]);
app.pdfExportPreferences.pageRange = "+"+( doc.pages[i].documentOffset+1) + "," + "+"+( doc.pages[i+1].documentOffset+1);
doc.exportFile(ExportFormat.PDF_TYPE, File(mySelectedFolder +"/"+ pdf_name + ".pdf"), false, export_preset);
}
}
app.scriptPreferences.enableRedraw = false;
w = new Window('window', 'Exporting Pdfs');
pb = w.add('progressbar', [12, 24, 375, 36], 0, 100);
w.show();
for (i = 0; i < 100; i++){
pb.value = i;
w.update();
$.sleep(10);
}
w.close();
alert("Done Exporting Pdf's!");
}
Regards,
Mike