Copy link to clipboard
Copied
Hi,
I have a document that I need to create to my client using variable data like name and value. It's really easy to do with data merge. The problem is: I need to sent it individually by email and the information there is confidential, so I need to be careful and save the name of the document with the same name of the field name from my csv file.
This is the issue, someone know how can I save each page with a unique name? It's about 1500 different files with confidential information 😞
Copy link to clipboard
Copied
Hello Patricia,
1. Start off by creating a Paragraph style named "PDF_name"
2. Assign the Paragraph style "PDF_name" to the text frame that will contain the name from the csv file
3. 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 from each page
var doc = app.documents[0];
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 mLinks = doc.links;
for(var i = 0; i < mLinks.length; i++){
if ((mLinks[i].status == LinkStatus.LINK_MISSING || mLinks[i].status == LinkStatus.LINK_OUT_OF_DATE) && checkIfOnPage(mLinks[i].parent.parent) && mLinks[i].parent.parent.itemLayer.visible == true ){
alert("Error!\nThis document contains links to files that are missing or modified, use the links panel to fix the problem(s) and try again!");
exit();
}
}
function checkIfOnPage(mItem){
var _OldZeroPoint = app.activeDocument.zeroPoint;
app.activeDocument.zeroPoint = [0,0];
var _Width =app.activeDocument.documentPreferences.pageWidth;
var _Height=app.activeDocument.documentPreferences.pageHeight;
var _Bounds = mItem.geometricBounds;
if ((_Bounds[3] < 0) || (_Bounds[1] > _Width) || (_Bounds[0] > _Height) || (_Bounds[2] < 0)){
return false
}else{
return true
}
app.activeDocument.zeroPoint =_OldZeroPoint;
}
function myGetPageNames(){
var myPageNames = new Array;
for(myCounter = 0; myCounter < app.activeDocument.pages.length; myCounter ++){
myPageNames.push(app.activeDocument.pages.item(myCounter).name);
}
return myPageNames;
}
//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++){
try {
var mySearchResult = myTextframes[y].findText();
if (mySearchResult.length > 0){
pdf_name = mySearchResult[0].contents;
break;
}
}catch (e){
}
}
return pdf_name;
}
//Dialog/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
var mySelectedFolder = Folder.selectDialog ("Select a Folder");
if(mySelectedFolder != null){
}else{
exit();
}
var myDialog = app.dialogs.add({name:"DataMerge 1-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++) {
var frames = app.documents[0].pages[p].textFrames;
var pdf_name = null;
for(var 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 "filename" is not applied to one or more of the pages or is Labeled Incorrectly.');
exit();
}
if(pdf_name != null) {
}
app.pdfExportPreferences.pageRange = app.documents[0].pages[p].name;
var export_preset = app.pdfExportPresets.item("[High Quality Print]");
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++) {
var frames = app.documents[0].pages[p].textFrames;
var pdf_name = null;
for(var 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 myPageNames = myGetPageNames();
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 Single Page pdf's");
var pgsList = pgGroup.add("listbox", [-25, 0, 170, 246], myPageNames, {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){
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].name;
var export_preset = app.pdfExportPresets.item("[High Quality Print]");
doc.exportFile(ExportFormat.PDF_TYPE, File(mySelectedFolder +"/"+ pdf_name + ".pdf"), false, export_preset);
}
}
alert("Done Exporting Pdf's!");
}
Regards,
Mike