> -----Original Message----- > From: Chris Pugh [mailto:[email protected]] > > ttbomk, no, it doesn't look like it, as yet. Unfortunately > it currently > takes me an inordinate length of time to decipher the source code. > Maybe another one for the smelting pot?
Maybe. But having looking at the code for a bit I'm pretty sure *I do* understand where the call is made. I can calculate the fraction of the page needed to scroll to the right place, too. What I don't know how to do is translate this into ActionScript. (I know C++. I don't know AS.) What I was thinking (I posting this idea to the FlexPaper Google group, too, btw; that discussion is here: http://groups.google.com/group/flexpaper/browse_thread/thread/a9d551ecbd31a29) was that what is needed is an additional runtime flag for pdf2swf that would indicate that when using an internal link function, the fractional part should also be passed. Then your internal link function could use that to determine how to scroll after going to the right page. Conceptually this is simple. Here's the code (from lib/devices/swf.c/swfoutput_linktopage) that draws internal links: if(!i->config_internallinkfunction || i->config_flashversion>=9) { actions = action_GotoFrame(actions, page-1); actions = action_End(actions); } else { actions = action_PushInt(actions, page); //parameter actions = action_PushInt(actions, 1); //number of parameters (1) actions = action_PushString(actions, i->config_internallinkfunction); //function name actions = action_CallFunction(actions); actions = action_End(actions); } My proposal would change that to (something like): if(!i->config_internallinkfunction || i->config_flashversion>=9) { actions = action_GotoFrame(actions, page-1); actions = action_End(actions); } else { if(i->config_internallinkfraction) { // new runtime parameter actions = action_PushInt(actions, page); //parameter actions = action_PushDouble(actions, page_fraction); //parameter actions = action_PushInt(actions, 2); //number of parameters (1) } else { // default behavior actions = action_PushInt(actions, page); //parameter actions = action_PushInt(actions, 1); //number of parameters (1) } actions = action_PushString(actions, i->config_internallinkfunction); //function name actions = action_CallFunction(actions); actions = action_End(actions); } Then you need an external viewer that can handle this. Which is why I'm talking to the FlexPaper guys, too. Any thoughts? - James Jones Administrative Data Mgmt. Webmaster 375 Raritan Center Pkwy, Suite A Data Architect Edison, NJ 08837
