Copy link to clipboard
Copied
I need a unique invoice number to show in the corner of a form. I was thinking of the best way (maybe the easiest?) to generate a number.. I want the form when opened to automatically create this number. In addition, one the PDF has been filled out and so on, then saved, I dont want that invoice number to regenerate once its opened again for whatever the reason. Does this sound possible?
My bad... The code should be:
this.getField("Invoice No").value = util.printf("%06d", Math.floor((Math.random() * 1000000) + 1));
Copy link to clipboard
Copied
hi try67,
i used code this.getField("SalesOrderNo").value = util.printf("%06d", Math.floor((Math.random() * 1000000) + 1));#
placed on,
page thumbnails
page 1
right click
page properties
actions
select action
run JavaScript
sorry I am new to this
thank you
Copy link to clipboard
Copied
If you don't want the zeros at the start then use this code instead:
this.getField("SalesOrderNo").value = Math.floor((Math.random() * 1000000) + 1);
However, this does not guarantee that the number will have 6 digits. You will need to use a loop that continuously generates new numbers if the number is too short to achieve that.
And move your code from the open action of page 1 to a doc-level script (Tools - JavaScript - Document JavaScripts) if you don't want it to run each time you scroll to that page.
Copy link to clipboard
Copied
brilliant it worked thank you
Copy link to clipboard
Copied
Hi try67! This feed has been incredibly helpful. How would I modify the script below to make it start at 00000 or 00001 (it's currently starting at 837729)
What I'm trying to do is create a root form with auto-updating work order numbers, that can be saved as separate files, while the root form still increases with each use. If I save the root form after modifying it, then when I open it the next time, the number increases. But if I save it as a separate file, the root form number doesn't change the next time I open it. Is this possible?
Copy link to clipboard
Copied
Just clear the value of the field (or set it to "0") and it will continue from there...
If you don't want the number to change you need to edit the file and remove the script, or flatten the form fields (but then the script will produce an error message), or define some kind of condition as to when the value needs to be incremented and when it shouldn't be.
Copy link to clipboard
Copied
Well that was just too easy. Thank you for your help with this!
Copy link to clipboard
Copied
Hi there! I've got another question, this time about the pdf file, itself. Hopefully you can help? When I try to open a filled in version of this encoded form on a mobile device (iPad or iPhone, eg.), the pdf downloads with empty regions. Is there a setting I am missing when saving this file?
Copy link to clipboard
Copied
The support for scripts on mobile devices ranges from very limited to non-existing.
Copy link to clipboard
Copied
So there isn't any way to save the pdf in a "flattened" static format that is viewable on mobile devices, albeit uneditable?
Copy link to clipboard
Copied
On a mobile device? I don't think so. You can flatten it in Acrobat on a regular desktop computer, though.
Copy link to clipboard
Copied
Really? I've tried to "save as" the file, but it still opens as an editable form... How do I save the filled-in form as a flat, uneditable version? (I've been searching around the internet but not had any luck finding the answer to this question...)
Copy link to clipboard
Copied
You can use this tool to flatten your file in Acrobat: UVSAR : Selective Flattener tool for Adobe Acrobat 8, 9 and X
Copy link to clipboard
Copied
Hey all
I am novice when it comes to adobe so hopefully someone can help me out. Try67 already got me most of the way with his help and thank you for that but I need one last fix. I have used this code this.getField("INVOICE").value = Number(this.getField("INVOICE").value) + 1; to make my invoice numbers go up by one every time I open it and it works great. Now I have the problem of when I save as and rename the invoice to lets say 1001 I want that one to lock but as of now when I open 1001 it adds another number to it and changes it to 1002. I was hoping that the original pdf will add by one but any copies will be locked down. I have no idea how to define that. Any help would be appreciated.
Andy
Copy link to clipboard
Copied
You need to clearly define the conditions under which the field should update, and when it shouldn't.
Copy link to clipboard
Copied
I know I need to do that but where do I do that and how is my question. I do not have very much experience in adobe products and I am trying my best to figure things out but I am not finding much information on this other then this thread. I am assuming that I need to add something into the document actions area but I am not sure what to write. I would like it to save and lock the invoice number
Copy link to clipboard
Copied
How to do it is a technical question. The question I'm asking is when to do it? Should it happen each time the file is saved (probably not what you want)? Only when the file is saved under a different name? When a special button ("Save and Lock") is clicked? Something else?
You need to first describe (in words) how you want it to work, and then I could help you with the actual code to implement it.
Copy link to clipboard
Copied
Oh sorry I thought I was explaining myself. My apologies. So I would like the invoice number to lock when we save the file as a different name. That would work the best.
Copy link to clipboard
Copied
Using the built-in Save As command, or using a form field button that you added to the form?
Copy link to clipboard
Copied
The save as command
Copy link to clipboard
Copied
That is complicated... I would do something different. I would put a condition on the script that populates the Invoice field so that it will only do so if the file name is something specific. For example, let's say the template file is called Template.pdf. The script would then be:
if (this.documentFileName == "Template.pdf")
this.getField("INVOICE").value = Number(this.getField("INVOICE").value) + 1;
That's the easiest way of doing it, I think.
Copy link to clipboard
Copied
That worked perfectly. You are a pro. Thank you for taking your time with this I appreciate it tremendously.
Copy link to clipboard
Copied
Hey everyone, I have read all your good advices and i have trying. But, I meet some trouble with the last solution you propose.
When i reset the document (field button), i just want +1 on the old number and only there i save it.
But the result of my try is wrong, because every time I give information (name, forename, phone number …) it will provoke the script.
At the end, the result will give me +3 and not +1.
I hope i am clear in my explainations?!
Can you help me? Thanks!
Copy link to clipboard
Copied
Where did you place the code to populate the invoice field?
Copy link to clipboard
Copied
I put screenshots for a better explaination (sorry it'is in french ).
I place the code directly where my number is.
Copy link to clipboard
Copied
Read reply #7 above. I explained there where the script needs to be placed.