How to create an action to insert hundreds of different numbers for limited edition prints?

Hi,
I sell limited edition prints of a run of between 350 and 500.
I am trying to get it set up so that my signature and the print number is included as part of the print. Here is an example:
You'll see at bottom left there is my signature and underneath is is the print number e.g. 110/350 (this is legible when printed at 18x12" size).
Inserting the signature and the "/350" is easy since it only needs to be done once per image.
The difficulty comes with inserting the actual print number e.g. "110"
At the moment I have 0 to 9 written out and scanned in as separate numbers. So to make "110" I use the "1" digit twice, plus the "0" digit. I.e. I haven't written out 1 to 500 and scanned them in all as separate numbers, I've just done the 10 digits and use those 10 digits to make all the different numbers I need.
Is there a way to create an action that will create say 350 JPEG copies of the original file, each one with its own unique print number inserted? (And ideally automatically saved with the print number as its file name!)
Many thanks in advance

This Script might be able to do some of what you wanted (the startNumber and endNumber would have to be set in the Script).
It needs a Layer Group named »numbers« to contain layers for the numbers named »0«, »1«, …
(script edited)
// this script saves jpg copies with numbers created from number-layers in a layer group;
// use it at your own risk;
#target photoshop;
if (app.documents.length > 0) {
// define the numbers to create;
var startNumber = 290;
var endNumber = 310;
// set to pixels;
var originalRulerUnits = app.preferences.rulerUnits;
app.preferences.rulerUnits = Units.PIXELS;
// get doc;
var myDocument = app.activeDocument;
// getting the name and location;
var docName = myDocument.name;
var baseName = docName.match(/(.*)\.[^\.]+$/)[1];
//getting the location;
var docPath = myDocument.path;
// duplicate the image;
var thecopy = myDocument.duplicate (thecopy, false);
// jpg options;
var jpgopts = new JPEGSaveOptions();
jpgopts.embedProfile = true;
jpgopts.formatOptions = FormatOptions.STANDARDBASELINE;
jpgopts.matte = MatteType.NONE;
jpgopts.quality = 9;
// get number layers;
var numberSet = thecopy.layers.getByName("numbers");
// collect in an array;
var theNumbers = [numberSet.layers.getByName("0"), numberSet.layers.getByName("1"), numberSet.layers.getByName("2"),
numberSet.layers.getByName("3"), numberSet.layers.getByName("4"), numberSet.layers.getByName("5"),
numberSet.layers.getByName("6"), numberSet.layers.getByName("7"), numberSet.layers.getByName("8"), numberSet.layers.getByName("9")];
numberSet.visible = true;
// proceed if all numbers have been found;
if (theNumbers.length == 10) {
// hide layers;
for (var n = 0; n < numberSet.layers.length; n++) {
numberSet.layers[n].visible = false
var theState = thecopy.activeHistoryState;
// process the numbers;
for (var m = startNumber; m < endNumber + 1; m++) {
// the position;
var theHor = 500;
// create an array for the new numbers;
var theArray = new Array;
// the number;
var thisString = String(m);
// duplicate layers to create the numbers;
for (var o = 0; o < thisString.length; o++) {
var theNumberLayer = theNumbers[Number(thisString[o])];
// create copy;
var theLayer = duplicateMoveRotateScale (theNumberLayer, theHor - Number(theNumberLayer.bounds[0]), 0, 100, 100, 0);
theNumberLayer.visible = false;
//alert (m+"_"+o+"\n"+theNumberLayer+"\n"+theLayer);
// set the hor to edge of the new layer;
var theHor = theLayer.bounds[2];
theArray.push(theLayer);
// get the number for the file name;
var theNumber = bufferNumberWithZeros(m, String(endNumber).length);
//save jpg;
thecopy.saveAs((new File(docPath+"/"+baseName+"_"+theNumber+".jpg")),jpgopts,true);
// remove copied layers;
//for (var p = theArray.length - 1; p >= 0; p--) {theArray[p].remove()};
thecopy.activeHistoryState = theState;
// close copy;
thecopy.close(SaveOptions.DONOTSAVECHANGES);
// reset ruler;
app.preferences.rulerUnits = originalRulerUnits
//that’s it; thanks to xbytor;
////// buffer number with zeros //////
function bufferNumberWithZeros (number, places) {
          var theNumberString = String(number);
          for (var o = 0; o < (places - String(number).length); o++) {
                    theNumberString = String("0" + theNumberString)
          return theNumberString
////// duplicate layer and move, rotate and scale it //////
function duplicateMoveRotateScale (theLayer, theX, theY, theScaleX, theScaleY, theRotation) {
app.activeDocument.activeLayer = theLayer;
try{
// =======================================================
var idTrnf = charIDToTypeID( "Trnf" );
    var desc10 = new ActionDescriptor();
    var idnull = charIDToTypeID( "null" );
        var ref6 = new ActionReference();
        var idLyr = charIDToTypeID( "Lyr " );
        var idOrdn = charIDToTypeID( "Ordn" );
        var idTrgt = charIDToTypeID( "Trgt" );
        ref6.putEnumerated( idLyr, idOrdn, idTrgt );
    desc10.putReference( idnull, ref6 );
    var idFTcs = charIDToTypeID( "FTcs" );
    var idQCSt = charIDToTypeID( "QCSt" );
    var idQcsa = charIDToTypeID( "Qcsa" );
    desc10.putEnumerated( idFTcs, idQCSt, idQcsa );
    var idOfst = charIDToTypeID( "Ofst" );
        var desc11 = new ActionDescriptor();
        var idHrzn = charIDToTypeID( "Hrzn" );
        var idPxl = charIDToTypeID( "#Pxl" );
        desc11.putUnitDouble( idHrzn, idPxl, theX );
        var idVrtc = charIDToTypeID( "Vrtc" );
        var idPxl = charIDToTypeID( "#Pxl" );
        desc11.putUnitDouble( idVrtc, idPxl, theY );
    var idOfst = charIDToTypeID( "Ofst" );
    desc10.putObject( idOfst, idOfst, desc11 );
    var idWdth = charIDToTypeID( "Wdth" );
    var idPrc = charIDToTypeID( "#Prc" );
    desc10.putUnitDouble( idWdth, idPrc, theScaleX );
    var idHght = charIDToTypeID( "Hght" );
    var idPrc = charIDToTypeID( "#Prc" );
    desc10.putUnitDouble( idHght, idPrc, theScaleY );
    var idAngl = charIDToTypeID( "Angl" );
    var idAng = charIDToTypeID( "#Ang" );
    desc10.putUnitDouble( idAngl, idAng, theRotation );
    var idIntr = charIDToTypeID( "Intr" );
    var idIntp = charIDToTypeID( "Intp" );
    var idbicubicAutomatic = stringIDToTypeID( "bicubicAutomatic" );
    desc10.putEnumerated( idIntr, idIntp, idbicubicAutomatic );
    var idCpy = charIDToTypeID( "Cpy " );
    desc10.putBoolean( idCpy, true );
executeAction( idTrnf, desc10, DialogModes.NO );
return app.activeDocument.activeLayer
} catch (e) {}
Edit: This Script just uses the layers’ horizontal bounds for orientation, so it does not address the issue I referred to earlier reagrding aesthetically pleasing spacing of the elements.

Similar Messages

  • How to create new actions ? in the interaction record screen

    Hi all,
    I'm working with the IC web client.
    In the interaction record screen the is a link to actions.
    But how to create new actions ? schedule actions ?
    Component "ICCMP_BT_INR"
    View "InrHeaderViewSet"

    Hi Eran,
    Gret is absolutely right ..The actions are transaction type specific and can be attached along in the customizing as mentioned above by gret , these can then be tested in the SAP gui first for their scheduled and start conditions and then in the ICWC.
    There is no special settings for actions in ICWC if they are there in your transaction they will come in the ICWC.
    Hope this helps
    Regards
    Raj

  • How to create dynamic action

    hi friends,
    could u plz tell me how to create dynamic action? 
    with regards,
    Priya.S

    Hi
    I u need to write the dynamic action as below
    0002     ANZKD     06     3     P     PSPAR-TCLAS<>'B'
    0002     ANZKD     06     4     P     T001P-MOLGA='12'
    0002     ANZKD     06     5     P     P0002-ANZKD>='1'
    0002     ANZKD     06     6     I     INS,0021,2,,(P0002-BEGDA),(P0001-ENDDA)
    This should help you.  rewards
    Regards
    Suresh

  • How to create custom action

    Hi,
    how to create custom action for Assemble permission for CMS. we have CMS.transport action which gives permission to Assemble & also to other activities. I want to know if there is a possiblity to just give that assemble permission instead of Cms.Transport.

    Hi,
    Yes if you are going to modify Umerole.xml then only this is possible
    <ACTION NAME="Manage_All">
    <DESCRIPTION LOCALE="en" VALUE="Overall user administrator permissions, that is, administration of users belonging to any company." />
      <PERMISSIONCLASS="com.sap.security.core.admin.permissions.UMAdminPermissions" NAME="MANAGE_ALL_COMPANIES" VALUE="*" />
    <PERMISSIONCLASS="com.sap.security.core.admin.permissions.UMAdminPermissions" NAME="USERS_ASSIGN_TO_DIFF_COM" VALUE="*" />
    <PERMISSIONCLASS="com.sap.security.core.admin.permissions.UMAdminPermissions" NAME="USER_VIEWPROFILE" VALUE="*" />
    <PERMISSIONCLASS="com.sap.security.core.admin.permissions.UMAdminPermissions" NAME="USER_CHANGEPROFILE" VALUE="*" />
    <PERMISSIONCLASS="com.sap.security.core.admin.permissions.UMAdminPermissions" NAME="USER_CHANGEPASSWORD" VALUE="*" />
    <PERMISSIONCLASS="com.sap.security.core.admin.permissions.UMAdminPermissions" NAME="USER_CREATE" VALUE="*" />
    As you in this UMErole.xml file, we have an Action named = Manage_All
    Also we have PERMISSIONCLASS, waht you can do is find action you want to modify and for e.g you want USER_CHANGEPASSWORD should not be there for Manage_All action, then just delete the permission class for that action.
    Hope this helps,
    Regards,
    Ameya

  • How to create a node with attributes at runtime in webdynpro for ABAP?

    Hi Experts,
             How to create a node with attributes at runtime in webdynpro for ABAP? What classes or interfaces I should use? Please provide some sample code.
    I have checked IF_WD_CONTEXT_NODE_INFO and there is ADD_NEW_CHILD_NODE method. But this is not creating any node. I this this creates only a "node info" object.
    I even check IF_WD_CONTEXT_NODE but i could not find any method that creates a node with attribute.
    Please help!
    Thanks
    Gopal

    Hi
       I am getting the following error while creating a dynamic context node with 2 attributes. Please help me resolve this problem.
    Note
    The following error text was processed in the system PET : Line types of an internal table and a work area not compatible.
    The error occurred on the application server FMSAP995_PET_02 and in the work process 0 .
    The termination type was: RABAX_STATE
    The ABAP call stack was:
    Method: IF_WD_CONTEXT_NODE~GET_STATIC_ATTRIBUTES_TABLE of program CL_WDR_CONTEXT_NODE_VAL=======CP
    Method: GET_REF_TO_TABLE of program CL_SALV_WD_DATA_TABLE=========CP
    Method: EXECUTE of program CL_SALV_WD_SERVICE_MANAGER====CP
    Method: APPLY_SERVICES of program CL_SALV_BS_RESULT_DATA_TABLE==CP
    Method: REFRESH of program CL_SALV_BS_RESULT_DATA_TABLE==CP
    Method: IF_SALV_WD_COMP_TABLE_DATA~MAP_FROM_SOURCE_DATA of program CL_SALV_WD_C_TABLE_V_TABLE====CP
    Method: IF_SALV_WD_COMP_TABLE_DATA~MAP_FROM_SOURCE of program CL_SALV_WD_C_TABLE_V_TABLE====CP
    Method: IF_SALV_WD_COMP_TABLE_DATA~UPDATE of program CL_SALV_WD_C_TABLE_V_TABLE====CP
    Method: IF_SALV_WD_VIEW~MODIFY of program CL_SALV_WD_C_TABLE_V_TABLE====CP
    Method: IF_SALV_WD_COMPONENT~VIEW_MODIFY of program CL_SALV_WD_A_COMPONENT========CP
    My code is like the following:
    TYPES: BEGIN OF t_type,
                CARRID TYPE sflight-carrid,
                CONNID TYPE sflight-connid,
             END OF t_type.
      Data:  i_struc type table of t_type,
      dyn_node   type ref to if_wd_context_node,
      rootnode_info   type ref to if_wd_context_node_info,
      i_node_att type wdr_context_attr_info_map,
      wa_node_att type line of wdr_context_attr_info_map.
          wa_node_att-name = 'CARRID'.
          wa_node_att-TYPE_NAME = 'SFLIGHT-CARRID'.
          insert wa_node_att into table i_node_att.
          wa_node_att-name = 'CONNID'.
          wa_node_att-TYPE_NAME = 'SFLIGHT-CONNID'.
          insert wa_node_att into table i_node_att.
    clear i_struc. refresh i_struc.
      select carrid connid into corresponding fields of table i_struc from sflight where carrid = 'AA'.
    rootnode_info = wd_context->get_node_info( ).
    rootnode_info->add_new_child_node( name = 'DYNFLIGHT'
                                       attributes = i_node_att
                                       is_multiple = abap_true ).
    dyn_node = wd_context->get_child_node( 'DYNFLIGHT' ).
    dyn_node->bind_table( i_struc ).
    l_ref_interfacecontroller->set_data( dyn_node ).
    I am trying to create a new node. That is
    CONTEXT
    - DYNFLIGHT
    CARRID
    CONNID
    As you see above I am trying to create 'DYNFLIGHT' along with the 2 attributes which are inside this node. The structure of the node that is, no.of attributes may vary based on some condition. Thats why I am trying to create a node dynamically.
    Also I cannot define the structure in the ABAP dictionary because it changes based on condition
    Message was edited by: gopalkrishna baliga

  • How to create a link between 2 cells in different spreadsheets?

    when using numbers on MacBook Pro/IOS X - how to create a link between 2 cells in different spreadsheets?

    In the cell where you want the duplicate data to appear from another sheet/table do the following:
    type the equal sign ("=") then click the cell you in the sheet table while contents you want to appear in the cell where you just typed the equal sign"
    it reads "The cell I click equals the result of the formula or the contents of the next cell I click"

  • How to creat a Business System and Tech System in SLD for the DB2 DataBase?

    Hi,
    How to creat a Business System and Tech System in SLD for the DB2 DataBase?
    Joseph

    Hi,
    Technical System
    In SLD, click on technical landscape->New Technical System->WebAS ABAP.
    Business System.
    1.Goto Business Landscape->New Business System->Name the business system.
    2. Choose the technical system that needs to be attached->WebAS ABAP->Technical System Name.
    Go Through this links..
    TBIT41:
    https://websmp201.sap-ag.de/~form/ehandler?_APP=00200682500000001337&_EVENT=DISPLAY&COURSE=TBIT41&LANGUAGE=
    TBIT42:
    https://websmp206.sap-ag.de/~form/ehandler?_APP=00200682500000001337&_EVENT=DISPLAY&COURSE=TBIT42&LANGUAGE=
    TBIT43:
    http://www50.sap.com/useducation/curriculum/course.asp?cid=60161651
    TBIT44:
    https://websmp102.sap-ag.de/~form/ehandler?_APP=00200682500000001337&_EVENT=DISPLAY&COURSE=TBIT44
    Also try elearning.
    https://www.sdn.sap.com/irj/sdn/elearn
    Thanks,
    Satya Kumar

  • How to create sharepoint Group with read only permissions using powershell for entire site ?

    How to create sharepoint Group with read only permissions using powershell for entire site (including subsites and top level site)

    Hi
    using (SPSite site = new SPSite(url))
    using (SPWeb web = site.OpenWeb())
    SPUserCollection users = Web.AllUsers;
    SPUser owner = users[string.Format("{0}{1}", "Domain", "Owner Username")];
    SPMember member = users[string.Format("{0}{1}", "Domain", "Default Member Username")];
    SPGroupCollection groups = Web.SiteGroups;
    string GroupName = “Super Exclusive”;//your group name
    string GroupDescription = “Super exclusive group description.”;
    groups.Add(GroupName, owner, member, GroupDescription);
    SPGroup NewSPGroup = groups[GroupName];
    SPRoleDefinition role = Web.RoleDefinitions["Read"];
    SPRoleAssignment roleAssignment = new SPRoleAssignment(NewSPGroup);
    roleAssignment.RoleDefinitionBindings.Add(role);
    Web.RoleAssignments.Add(roleAssignment);
    Web.Update();
    Please 'propose
    as answer' if it helped you, also 'vote
    helpful' if you like this reply.

  • HT204053 How do I use the same Apple ID and different Cloud for other devises

    Hi
    How do I use the sane Apple ID and different Icloud for other devises

    http://support.apple.com/kb/HT4627

  • How to create an action that will crop two sections from one scanned image?

    I'm trying to create an action that will automate the process of cropping the left and right pages from a series of two-page book scans.
    I tried to create a 2 step action which first crops the left half of a scan (by setting the left margin to 0in and the right margin to 6in) and then the right half of the scan (by setting the left margin to 6in and the right margin to. 12in), however when executing, only the left half appears to be cropped.
    I imagine this is due to the fact that once one side of the initial scan is cropped, the other side disappears.
    Is there any way around this?

    Basically i need to create a new document out of a folder full of images.
    You may have to look into Scripting to achieve something like this.
    You could ask in the Scriptimg Forum
    Photoshop Scripting
    But maybe it would suffice to insert the Menu Item
    File – Scripts – Load Files into Stack
    into the Action and then iterate through the Layers with [ or ] and reset the opacities and Blend Modes – but as Actions would not be able to change the number of repetitions of the operation conditionally a custom Script would still seem preferable. 

  • How to create an ACTION

    I was just told on another thread to create an ACTION to watermark 80 pictures in one step, however I must be doing something wrong:
    This is step by step what I am doing, I must be doing something wrong because it is not working:
    I create a PSD file with a transparent layer that says "DO NOT PRINT" , this is the layer that I will be adding to all the pics.
    I open the ACTION window and select "CREATE A NEW ACTION" I put a name to it "WATERMARK", press OK and the record button starts.
    I open ONE picture, I open the previously created watermark PSD file, I select the PSD file and drop it on top of the picture, I reposition a little bit so it is in the middle.
    I press save on the picture and select the same name, I do not want to create a new file, just the same name is fine, I have saved all the original pictures somewhere else.
    I close the picture and press stop. So I have an ACTION recorded
    Ok now I go to FILE + AUTOMATE+ BATCH
    I select the name of the action I just created "WATERMARK", now I CHOOSE a folder with many pictures inside, I want to add the watermark on all these pictures from this folder that I am selecting.
    On destination I select NONE, as was indicated in my action I am saving under the same name on the same folder, I do not want to create another folder.
    OK SO I PRESS OK ......
    what the action is doing is...... it opens the pictures on the folder I selected, but inmediately after opening a new picture IT OPEN THE PICTURE WHERE I CREATED THE ACTION and it does all the steps I did on the same picture where I created the action, it doesnt do the action on the new pictures, it just keeps doing over and over again on the same picture where I created the action.
    So at the end I have re-saved over and over again the same picture but it didnt even touch the pictures from the new folder, it just opened every picture but it didnt run any action on them, as indicated the ACTION run over and over again on the same picture where I created the action.
    What am I doing wrong??
    Thanks!

    Actually I am sorry, this is not exactly was is happening.....
    When I do the SAME STEPS in the previous post what it does is gives me an ERROR message and it says "MOVING FUNCTION IS NOT AVAILABLE" so I interpreted as if "for some reason" the ACTION function does not allow me to move layers inside a new picture.
    Due to this what I did was I press the START NEW ACTION , open a new picture and from scratch create a new layer that says "DO NOT PRINT" ... when I do this and I select a new folder to run the action, what it does is it re-saves and re-saves over and over on the same picture where I created the original action, the action doesnt run on each new picture.
    Sorry for all this messy explanation, I am as confused as all this long explanation!!!

  • How to create an Action Profile for a Survey

    Hi
    Can you please help me with the steps to create an Action Profile for a Survey. Eg. If the user creates a like Lead / Service, Action profile assigned to the Transaction type has to trigger the Survey.
    Thx

    Hi Kalees,
                Survey is nothing but a Questioner that is Represent the Feedback for a Particular Transaction.
    Controlling Survey by a Action Profile is possible to some Extent indirectly.
    One way of Controlling the Survey Execution based on System Status
    Go To:Customer Relationship Management>Transactions>Settings for Activities>Questionnaires>Define Determination Criteria for Questionnaires Define a Criteria Set for a Particular Status,Here what ever Status Assigned are Responsible for the Survey Form to Appear in that Transaction Type at that Particular Status.
    In Define Determination for Questionnaires: Business Activity:assign the Criteria Set that you have Created to your Survey Form
    Go To:Customer Relationship Management>Transactions>Basic Settings>Status Management>Change Status Profile for User Status The Status Profile that you are using Ensure that the System Statuses are Assigned to a User Status on which you want the Survey Determination to Happen.
    Direct Action Trigger for Survy Form is not Possible
    This is one way to Control the Transaction Type Status and in mean you shall indirectly get Control over the Survey Form
    Hope it Answers your Queries..
    Thanks and Regards,
    RK.

  • How to create endpoint in the creation of webservice in webdynpro for java

    hi all,
    I have created a EjbModule project in webdynpro. Now when i create a new > other>webservie--> virtual interface, it is asking for an endpoint. How to create this endpoint

    Hi Pinki,
    Chk this link..
    http://help.sap.com/saphelp_nw04/helpdata/en/da/2bf042493ef54499a77394ef6be096/frameset.htm (Section abt Endpoints while Creating a Web Service for an Enterprise JavaBean)
    GS

  • How to create a latch that can latch the input data for 50ms?

    Now I have some data come from the sensor. I want to latch this data for 50 ms and then reset it to 0. Does anybody do this before? Thank you

    Now I am using the "two button dialog" to create a dialog box. After the dialog box pop up, I choose "yes" the "two button dialog" will output a "True". My problem is that this "True" disapear too fast. My while loop frequency is only 20Hz. And I want to send this "True" value to somewhere. However the two "button dialog" will clear this "True" after 10ms?. So I always got a "false" value. How to "Freeze" this dialog box output value for at least 50ms? How to create a latch to hold this value?
    Attachments:
    Two_button_Dialog.bmp ‏1132 KB

  • How to create link of a document in a different library (in different site collection) - programmatically

    Hi,
    am trying to create link of a document in a different library (in different site collection) using SharePoint Link a document Content type approach. i have already tested this manually.  
    As per my requirement i need to implement this approach through code.
    If anyone has implemented link a document approach through code, please share your inputs.
    help is highly appreciated!
    thanks

    Check if below helps:
    http://blogs.msdn.com/b/cliffgreen/archive/2008/06/23/creating-a-link-to-a-document-item-in-a-sharepoint-document-library-programmatically.aspx
    http://stackoverflow.com/questions/15625448/create-a-link-to-a-document-in-a-sharepoint-shared-document-list-using-powersh

Maybe you are looking for

  • How to enable the widgets in Indesign CC..?

    Hi, I am working on porting our Indesign CS6 plugin to Indesign CC plugin.I have completed the porting and the plugins has opened in Indesign CC,but i have one problem in design. Three of our Widgets has not opened in Indesign CC. The code is the fol

  • How to upload data from POS Workbench to BW Info Cubes and then to SAP R/3

    Hi, I have used some sample data as input to BAPI "/POSDW/BAPI_POSTR_CREATE" to create sample transactions in POSDM. Then I had executed this data to POS Workbench. Now my requirement is to upload this data further to Info Cubes and then to R/3 in ID

  • I am trying to reset my admin password because I forgot my original one.

    I am trying to reset my admin password because I forgot my original one.

  • Leopard will not shut down?

    Hi, On installing Leopard I had loads of issues so decided to do a clean install which did resolve all my issues. However, this latterly I noticed Leopard will not shut down, it runs through the process, as in the finder and any open applications dis

  • Status in WEB GOA "error in process"

    How can i extract in BBP_PD equivalent error in process" i want to extract what are the GOAs are in error in process" since i dont have a option to search via WEB Error in status? i have seen this status Released,Locked,In distribution,Distributed,Di