Skip to content

Conversation

@smatheis
Copy link
Contributor

@smatheis smatheis commented Mar 25, 2021

What kind of change does this PR introduce?
Related to #655
This PR adds two features:

  • doc.file(src, options) - add embedded file to PDF
  • doc.fileAttachmentAnnotation(x, y, w, h, file, options) - attaching a file and linking to it from within the PDF

Checklist:

  • Unit Tests
  • Documentation
  • Update CHANGELOG.md
  • Ready to be merged

Additional comments

  • Disabling the /Limits output for the Names.EmbeddedFiles tree is technically against PDF specification, but embedded files would just not show up in Adobe Acrobat Reader DC if that key was present.
  • Functionality tested with the following PDF Viewers
    • FoxitReader - 100% working
    • Adobe Acrobat Reader DC - 100% working
    • macOS Preview - does not support attachments, PDF is rendered fine
    • Safari Browser PDF Viewer - does not support attachments, PDF is rendered fine
    • Chromium Browser PDF Viewer - does not support attachments, PDF is rendered fine
    • Firefox Browser PDF Viewer - working, but no file attachment annotation icon

@smatheis smatheis changed the title add support for embedded files and file attachment annotations Add support for embedded files and file attachment annotations Mar 25, 2021
@blikblum
Copy link
Member

Disabling the /Limits output for the Names.EmbeddedFiles tree is technically against PDF specification, but embedded files would just not show up in Adobe Acrobat Reader DC if that key was present.

This is a concern. I will not postpone merging but i'd like to keep this in sight so we, maybe, can improve the implementation later.

Can you check the output with verapdf?
Do you have a pdf with attachment created with other program like Adobe Acrobat?

Follow up at #1227

@blikblum blikblum merged commit 3cd88b2 into foliojs:master Mar 25, 2021
@liborm85
Copy link
Collaborator

This PR using node.js crypto API which is theoretically correct. But is problematic with bunde size for browser build, because crypto-browserify library is used.

Sizes pdfkit.standalone.js file:
2 520 kB - version 0.11.0
3 015 kB - master
Browser bundle size is increased 495 kB.

This is huge size. pdfkit using crypto-js for encryption and access privileges (PR #820) now.

Both libraries crypto (respectively crypto-browserify) and crypto-js they are big. Only one must be used. Encryption or attachments must be rewritten.

@blikblum
Copy link
Member

Thanks @liborm85 for the heads up.

I will take a look into it

@blikblum
Copy link
Member

should be fixed by 1d5c905

@blikblum
Copy link
Member

blikblum commented Apr 4, 2021

FYI i released v0.12 with this change

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

Successfully merging this pull request may close these issues.

3 participants