Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

The content of fields filled with FormWrapper only appear on click when opened with Adobe Acrobat #613

Closed
plapointe6 opened this issue May 7, 2024 · 10 comments

Comments

@plapointe6
Copy link

Hello,

Your library is really nice and easy to use.

I have an issue with FormWrapper. When I fill with FormWrapper, the content of filled fields only appear on click. This seems to work when opening the pdf with Chrome, but not with Adobe Acrobat.

My code:

from PyPDFForm import FormWrapper

filled = FormWrapper("report.pdf",).fill(
    {
        "301 Full name": "John Smith",
        "301 Address Street": "1234 road number 6",
    },
    flatten=True
)

with open("filled.pdf", "wb+") as output:
    output.write(filled.read())

Input pdf: report.pdf
Result pdf: filled.pdf

Screenshot with adobe acrobat. The first field, I just clicked on it, so we see it's content. The second one is filled, but we will see it's content only on click.
image

Thanks !

@chinapandaman
Copy link
Owner

Hey, thanks for posting.

The issue you ran into was somewhat discussed in another thread, specifically I did a rather detailed explanation here.

In short, Adobe Acrobat seems to require way more complex metadata than browsers like Chrome for a text field widget to be rendered properly. This level of complexity is something that I'm unable to implement unfortunately. This is the largest reason why PdfWrapper exists in the first place.

@plapointe6
Copy link
Author

Thanks. The only downside of PdfWrapper is that it does not implements automatic font size depending of the content as FormWrapper do when the fields are correctly configured in the pdf. This cause me issues as the text overflow instead of reducing its size. especially for multi-line fields.

@chinapandaman
Copy link
Owner

chinapandaman commented May 8, 2024

It’s normal for regular text field to overflow but that shouldn’t be the case for multi-line paragraph field. Could you post me an example?

Edit: unless for paragraph field it overflows vertically?

@plapointe6
Copy link
Author

Only for multiline fields I think.

Here is an exemple:

from PyPDFForm import PdfWrapper

filled = PdfWrapper("report.pdf",).fill(
    {
        "301 What Happened": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris congue, lorem sit amet venenatis lacinia, quam tortor pharetra ante, id facilisis neque velit ac tellus. Nam tincidunt felis quis eros malesuada, ac congue elit consequat. Ut eget porttitor augue. Integer ullamcorper lectus et est scelerisque, ac posuere mi tempor. Nunc vulputate vehicula bibendum. Aliquam erat volutpat. Morbi tortor."
    }
)

with open("filled.pdf", "wb+") as output:
    output.write(filled.read())

Input: report.pdf
Output: filled.pdf

Result:
image

@chinapandaman
Copy link
Owner

So in other words paragraph field overflows vertically. Ok this is actually expected behavior. I’ll implement an auto adjusting mechanism no later than the end of this week and get back to you.

@plapointe6
Copy link
Author

Great ! Thanks a lot.

@chinapandaman
Copy link
Owner

Hey, I just made a new bump. Turns out to be easier than I thought. Performance might be a bit concerning but I will get to that later. Give v1.4.24 a try and let me know if there are more issues.

@plapointe6
Copy link
Author

It works. Thanks !

I found that if I set the global_font_size, it overrides the new adaptative font behavior though.
Is the default font size used by PdfWrapper come from the PDF configuration or it is embeded in the lib ?

@chinapandaman
Copy link
Owner

When you set a font size, I assume you know what you are doing and know the risk of larger font size would potentially cause texts overflowing. So yes setting font size does overwrite the auto adjust behavior.

The default font size for paragraph field is set to 12 and embedded into the lib. I don't know how to extract that info out of a PDF. If you happen to know I'm all ears.

@plapointe6
Copy link
Author

Make sense.

No, I don't know a way to extract that info out of a PDF.

Maybe in the future, I will make a pull request to add an optional parameter "default_font_size" to override the embedded 12 while maintaining the automatic font adjustment.

But my issue is well resolved. Thanks for your help.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants