Jump to content

Dan Korn

Members
  • Posts

    4,882
  • Joined

  • Days Won

    17

Everything posted by Dan Korn

  1. Thanks for asking. As someone who's worked on FusionPro for a long time, knowing that there's interest like this in the future of the product is heartening. We don't tend to release public roadmaps. Probably the main reason is that plans and timelines can change, based on a myriad of factors, some of which are beyond our control, such as changes that Apple, Microsoft, Adobe, and various standards organizations make that we have to keep up with. I can say that we are actively working on support for native Silicon chips (M1, M2, M3, etc.) on Mac, and that we have several enhancements planned for FusionPro 14 which I think people will be excited about, things that will make template-building easier. Beyond that, we have a lot of longer-term plans and ideas on several fronts, from architectural improvements to new areas of functionality. Sorry I can't be more specific. But just to give a bit of insight, we do get pulled in a lot of different directions. Some of this is the nature of the digital printing/publishing industry. On the one hand, print is far from dead, and printing technology continues to improve and advance, and there is a huge demand for improvements to things like imposition, for finer control over barcodes, charts, and tables, color correction, and other things that go into putting toner on paper or other substrates and fulfilling print orders, including postal sorting and barcodes in different countries, as well as an ever-growing market for label and package printing. On the other hand, there's rapidly increasing demand for digital delivery PDFs, which are primarily viewed online, and which, according to various regulations in different countries (and just because things should be this way), need to be accessible to people with visual impairments, which means they need to conform to accessibility specifications for tagging and reading order, which, when you're merging in variable content with static content from the background PDF, can get complicated. We've also been working for a long with partners around the world, mainly through Ricoh, including our friends in Ricoh Japan, to add typesetting features specific to Japanese, Hindi, Arabic and Hebrew, and many other languages, which have a lot of complex requirements. And we work with many partners on integrations, including with MarcomPortal, EFI DSF, Avanti, RSA's WebCRD, and others. So, there's a lot on our plate, and just prioritizing all of those backlist items is a challenge. The other thing I can say is that feedback here on this forum is definitely taken into account in our planning. Your ideas, suggestions, and even problems you report here do inform our priorities. So... what do you want to see on the roadmap?
  2. ... from what version? What were you running previously? Can you be more specific? What is the failure mode? Does it not recognize any new records at all? Or does it think every line is a record? Can you post a minimal sample job that reproduces the problem?
  3. FusionPro VDP version 13.1.4, which fixes this, is now available at our Downloads page, and is supported in MarcomPortal. Thanks for you patience and sorry again for the trouble.
  4. Thanks. That code looks right for what you're trying to do. Clearly it is working for the preview. So I'm not sure why it's not working for the press file. I wonder if somehow the composition being run for the press version is using a different version of the template, or at least a different .def file without that OnRecordStart rule in it.
  5. Downloaded from where? MarcomPortal? DSF? WebCRD? Some other online system?
  6. Okay, well, as I noted before, we've reached the limit of what I can diagnose by looking at your job through the keyhole of just the rule. I would need to see the entire job in order to figure out what's going on. But I think you should be able to tweak those settings in the OnCopyfit rule, as I also mentioned earlier. Have you tried that?
  7. Just checking, you did go into the Frame Properties for that frame and click Overflow, then clicked the "Adjust text to fit" button, right?
  8. Newlines should work, but you need to include them in a literal string, between quotes, like so: if (Field("Program2") == "") return ""; return "\n" + Field("Program2abbr") + ' Student Sponsorship of Up to ' + val + "\n"; You can also use <br> tags as Alex suggests, but in that case, I would recommend calling TaggedDataField instead of Field, in case the data contains "special" characters such as ampersands, like so: if (Field("Program2") == "") return "" return '<br>' + TaggedDataField("Program2abbr") + '&nbsp;' + "Student Sponsorship of Up to" + '&nbsp;' + val + '<br>'; Though the first version seems simpler. Note also that you don't need the "else" statement after the "return".
  9. I see, this is about the Define HTML Form feature (aka "Web Collect"). Thanks for using this! Glad to know it's still supported in WebCRD by our friends at RSA. So you can create Parent/Child pick list fields, where the selection in the parent forces a selection in the child. And you could mark the child field as hidden (not visible), so that the child selection isn't shown. But there's no way to conditionally hide a field based on another field's selection. The HTML Form Definition doesn't support that level of sophistication, in terms of complex field dependencies. You might need separate forms for each input type to accomplish what you want. Though there may be some other kind of more advanced custom input form offered by WebCRD; that would be a question for RSA. P.S. It's "FusionPro" (no spaces).
  10. It seems like this isn't really a FusionPro question, it's more of a web form question. Where is this input form? Is it in the MarcomPortal app? EFI DSF? Some other online system?
  11. In what way does it not work? What result are you getting, and exactly how is it different than the result you're expecting? Are you trying to shrink the text to fit into a smaller box, or expand it to a larger box, or both? You probably need to change the settings in the OnCopyfit rule. By default, the first line is this: if (!Copyfit(new MagnifyAttributes("text", 25, 400, 6, 72))) Where the parameters to the MagnifyAttributes constructor function, which are documented in the Rules Guide, and on the Objects tab of the Building Blocks dialog, are: new MagnifyAttributes(type, factormin, factormax, min, max) So by default, the point size is capped to a minimum of 25 percent of the original size, or 6 points, whichever is hit first, and a maximum of 400 percent of the original size, or 72 points, whichever it hits first. You probably need to tweak those settings for the particular text and frame you're trying to fit. If you need to have different settings for different text frames, there's a section in the Rules Guide that explains how to do that, based on the frame name. Or, if you're using FP 13 or later, you can adjust the copyfit settings for each frame independently in the Overflow Options dialog, and you don't have to mess with the JavaScript at all.
  12. We do have a new build which fixes this, which will be made available next week. It has completed testing on Windows, though testing is still in progress on Mac. If you need a prerelease, please contact FusionProSupport@marcom.com. Please note that it may not be supported in the MarcomPortal app yet.
  13. By the way, Math.ceil isn't magic; it literally just means "round up to the next highest integer (whole number)." So in the 3-page case, 1/3, 2/3, and 3/3 round up to 1; 4/3, 5/3, and 6/3 round up to 2; 7/3, 8/3, and 9/3 round up to 3, etc. That's exactly the algorithm you describe here:
  14. Okay, I see. You're multiplying the "X page count" field by X to get the repeat count. So the rule should be: var seqNum = Math.ceil(FusionPro.Composition.repeatRecordNumber / pageCount); return FormatNumber("0000", seqNum); Where "pageCount" is the "X": 1 for your 1-pager, 2 for your 2-pager, etc. This should generalize for any repeat count. Also, I don't think you really need separate templates for 1 page, 2 page, 3 page, etc. You could just have a global variable for that page count, that you could, say, read from a secondary data file in OnJobStart, like so: var PageCountFile = new ExternalDataFileEx("PageCount.txt"); pageCount = PageCountFile.GetFieldValue(0, 0); Then in OnRecordStart: FusionPro.Composition.repeatRecordCount = Field(pageCount + " Page count") * pageCount; Then all you need to do is put a different number in that PageCount.txt file (or whatever you want to call it) and run again. You might also want to do this in the JavaScript Globals just to make rule validation easier: var pageCount = 1; Or, forget about reading the pageCount from the external data file in OnJobStart, and just change its value in the JavaScript Globals directly. Of course, this can be generalized further; you could repeat to handle all the page counts in a single composition with just a little more math.
  15. Wow, thanks for attaching all of that, but it's a lot. Can you throw me a bone and point me to which of the attachments contains that PDF? Maybe say say which ones are the outputs and which are the templates? Also, where exactly am I looking for the sequence number?
  16. i don't completely understand. What happens if you have non-zero numbers in, say, both the "2 page count" and "3 page count" fields? You can only set repeatRecordCount once per record. I might need to see a minimal example of the job, or at least a mockup of the output, to understand better. At any rate, it seems to me like the "sequence number" is simply the FusionPro.Composition.repeatRecordNumber. The first three pages would be repeat 1, and the next three pages would be repeat 2, and so on, right?
  17. I see. You can use the <hkeep> and </hkeep> tags to prevent line breaks in the names. If each name is its own data field, then you can make a rule something like this: return '<hkeep>' + TaggedDataField("Name1") + '</hkeep><space>and<space><hkeep>' + TaggedDataField("Name2") + '</hkeep>'; I could offer more specific suggestions if you post the collected job.
  18. I suppose you could do this in OnJobStart: startTime = new Date(); And this in OnJobEnd: endTime = new Date(); Print("Composition took " + (endTime.getSeconds() - startTime.getSeconds()) + " seconds.");
  19. One line on the second line only? Sorry, I'm not sure what you mean. Maybe a picture would help?
  20. It's impossible to analyze without seeing the job. Can you collect it up, with a minimal data file, and post it here?
  21. Remove the TaggedFromRaw call from the last line, like so: var s = [[TaggedDataField("Name"), TaggedDataField("Title")].filter(String).join(' '), TaggedDataField("Company")].filter(String).join('<br>'); return '<span font="Helvetica 55" pointsize=22>' + s.replace(/[A-Z]/g, '<span font="Helvetica 95" pointsize=28>$&</span>');
  22. Ah, I see, the missing info was that you were using the "Table From Frame" rule. There are a lot of different ways to make tables. I would change this up to a simple JavaScript data rule to populate the table, rather than pulling the data from the frame. The data rule would look something like this (though I don't know 100 percent for sure this is right without your data): var data = [["Gift Designation", "2023 Amount"]]; for (var i = 1; i <= 6; i++) { var fund = Field("Fund " + i) if (fund) data.push([fund, Field("Gift Amount " + i)]); } return data; Then you can create the "Table - from data rule" rule, referencing the data rule, and insert it into your text frame.
  23. First of all, it's FusionPro, not "Fusion." I'd have to see how you're making the table now. Many examples have a call to the AddRows function with a set number of rows. Instead of doing that, you should iterate whatever data source you're pulling the data from, and call table.AddRow() ONLY if there are values to populate that row. So it's not so much that you're hiding rows that are empty, it's that you're never creating those empty rows in the first place.
  24. Sure, you can remove empty items and just put spaces between what's left. There are a lot of ways you can do this, probably the most succinct is: var s = [Field("Name"), Field("Title"), Field("Company")].filter(String).join(' '); If you want the company on another line, sure, you can conditionally put out either a <p> or <br> tag if the Company field is not empty, though you have to make sure that you don't put the tag in before calling TaggedFromRaw. The best way to do that is to call the TaggedDataField function, something like this: var s = [TaggedDataField("Name"), TaggedDataField("Title")].filter(String).join(' '); if (Field("Company")) s += "<br>" + TaggedDataField("Company"); Or like this: var s = [[TaggedDataField("Name"), TaggedDataField("Title")].filter(String).join(' '), TaggedDataField("Company")].filter(String).join('<br>');
  25. Newer versions already put the total processing time in the log file. I don't even know if I can answer questions about a 13-year-old version of the product. Not only is it long out of support, we don't even have anything to run it on here, so I can't verify anything that I would tell you.
×
×
  • Create New...