import-fdf.js 733 B

123456789101112131415161718192021222324252627282930313233
  1. // usage: mutool run import-fdf.js input.pdf data.fdf output.pdf
  2. //
  3. // Import annotations from FDF into PDF file.
  4. //
  5. // TODO: import form data!
  6. "use strict"
  7. if (scriptArgs.length != 3) {
  8. print("usage: mutool run import-fdf.js file.pdf data.fdf output.pdf")
  9. quit()
  10. }
  11. var doc = mupdf.Document.openDocument(scriptArgs[0])
  12. var data = mupdf.Document.openDocument(scriptArgs[1])
  13. var map = doc.newGraftMap()
  14. var annots = data.getTrailer().Root.FDF.Annots
  15. if (annots) {
  16. annots.forEach(
  17. function (annot) {
  18. var ref = map.graftObject(annot)
  19. var page = doc.findPage(ref.Page)
  20. if (!page.Annots)
  21. page.Annots = []
  22. page.Annots.push(ref)
  23. ref.P = page
  24. ref.delete("Page")
  25. }
  26. )
  27. }
  28. doc.save(scriptArgs[2], "incremental")