farling42 / fvtt-pdf-pager

PDF Pager for Foundry
MIT License
6 stars 4 forks source link

PDF Form saves/flickers on each change #21

Closed CePeU closed 1 year ago

CePeU commented 1 year ago

Inputing into a PDF form let's PDF pager flicker and causes a delay each time. I assume that the pdf form or it's data is saved after each input. I also assume that it then is reloaded. While I understand that it might be helpfull to save the form each time it also is a delay, might be cumberson on slower devices and feels unresponsive. Either there is a bug or maybe make it optional that data is saved on close or after a certain timespan.

Tested on foundry V10 and pdf pager latest version. PDF form (around 600 form fields) has been created with Acrobat pro DC. Same issue could not be observed with foundry V9 and PDF foundry.

farling42 commented 1 year ago

Yes, it seems a side effect of the way that Foundry V10 causes a complete redraw of the entire Actor page on every update.

I haven't used a PDF with 600 form fields before, I've mostly been testing with PDFs which emulate character sheets.

It is something that I'm likely to investigate at some point.

There is the possibility of adding a module flag to not auto-save the fields as soon as they are changed, but this has the possible side-effect of not allowing the sheet to update if the data is changed on the underlying Foundry document (e.g. if another player changes some data, or if some automatic processing changes a value).

CePeU commented 1 year ago

Ok I understand. It is in fact a "character" Sheet of 5 pages including skills and some more due to the fact that my group is quite mixed from people playing on paper, playing on tablett and playing fully online. A flag would be nice with a warning. This is probably a temporary solution till I am able to port the system fully to foundry. Meanwhile with no macros and just used as a simple tabletop without much scripting the danger should be low that intermittent changes will break anything.

farling42 commented 1 year ago

As you gradually build your system, you can map individual fields from the PDF to the data supported by your game system, so that players can continue with PDFs until you've implemented enough for them to transfer.

I'm considering adding a manual function which could be called (e.g. from macro) that would transfer any hidden fields which are now mapped to a real Document field.

farling42 commented 1 year ago

In earlier versions I was seeing flicker too, I'm not seeing it now with a PDF that has 106 fields. Would it possible to have a copy of the specific PDF so that I can see if I can reproduce it more easily.

CePeU commented 1 year ago

Yes I can provide that. How do I submit it to you?

farling42 commented 1 year ago

I think you can just drag it into a comment on this issue.

CePeU commented 1 year ago

ALL_Krieger_Formular_Final_E.pdf

It's still work in progress but should be nearly finished. Please note that it has a script part on the last page where it says "Sprachen Kenntnisse" and "Alte Sprachen" if you manage to use the script in PDF I will keep that part and enhance things. For now I would be glad about a performing good working PDF :)

farling42 commented 1 year ago

I've not been able to reproduce the flickering with (what is now) 0.18.0 Please can you report if it is still an issue with 0.18.0.

CePeU commented 1 year ago

I have a fresh install of Windows 10 latest updates. Fresh install of foundry 10.288. PDF Pager 0.18. Native log in and log in by Explorer. Worldbuilding System from Atropos. Still after configuring PDF Pager, creating an Actor and inputing data I get a reload.

Same as on a different machine with Windows 10 and a NodeJS installation.

farling42 commented 1 year ago

Ah, I misunderstood. This is specifically when a PDF has been configured in the "PDF to use for Actor 'character'" field of the module settings. I definitely see the problem now.

farling42 commented 1 year ago

This should be working much better in 0.19.0

CePeU commented 1 year ago

Yes seems to work great :) Thanks for your effort!