Package Description

Version Latest Release Download Count Supported Foundry Versions Discord Server Patreon

Export your Foundry character sheet to a PDF!

Usage

Just click on the button in the header of a character sheet and then it will open the configuration window. Once you upload a PDF, you'll see a list of each of the PDF's fields alongside an input. You can either fill in the fields manually with what is on your character sheet or you can use a "mapping" (described later) to fill them in automatically with the values from your character sheet.

Get a PDF

If you need a copy of the PDF for D&D 5th edition, there is a button to take you to the official one.

You can theoretically use this module with the PDF for any system, but some fields used on other PDFs may not be supported. File a bug if you encounter a PDF that doesn't work.

Mapping

In order to automatically fill out the sheet with values, you will need a JS Object mapping of the PDF fields to the values on your character sheet. This is known as a "mapping" and can be edited in the module settings.

If a mapping has been created for your system, you can select it with the dropdown to load it in.

TIP: Install Ace Library if you want to use a proper editor to work on creating your mapping.

The mapping is formatted like this:

[
    {
        "pdf": "CharacterName",
        "foundry": @name
    },
    {
        "pdf": "Check Box 11",
        "foundry": @data.abilities.str.proficient
    },
    {
        "pdf": "Race",
        "foundry": @data.details.race
    },
    {
        pdf: "Speed",
        foundry: Object.entries(actor.data.data.attributes.movement).filter(val => val[1]).map(val => val[0] === "hover" ? Object.entries(actor.data.data.attributes.movement)[6][0] : "" + val[0] !== "units" && val[0] !== "hover" ? val.join(": ") + Object.entries(actor.data.data.attributes.movement)[5][1] : "").filter(String).join(", ")
    },
    {
        pdf: "Backstory",
        foundry: @data.details.biography.value?.replaceAll(/<[^>]*>/g, "").trim()
    },
    { "pdf": "PlayerName", foundry: Object.entries(@permission).filter(entry => entry[1] === 3).map(entry => entry[0]).map(id => !game.users.get(id)?.isGM ? game.users.get(id)?.name : null).filter(x => x).join(", ") }
]

This will take care of filling out the character name, strength save proficiency, race, speed, and backstory on a D&D 5e character sheet.

As you can see, the @ is used to access properties of the Actor data, rather than a fixed value. You may use any valid JavaScript functions or formulas in the mapping, but it should return a String or coerce into one.

While creating a mapping, it's very helpful to work in the browser console (F12):

Please share any mappings you create with me and I will include them in the module for the benefit of the community. See the mappings here.

 


 
Come hang out on my Discord server if you have questions, suggestions, or need help.

Tagged Categories

  1. Actor and Item Sheets

Available Versions

  1. Version 0.1.2

  2. Version 0.1.5

  3. Version 0.2.0

  4. Version 0.2.1

  5. Version 0.3.0

  6. Version 0.3.1

  7. Version 0.4.0

  8. Version 0.4.1

  9. Version 0.5.1

  10. Version 0.6.0

  11. Version 0.6.2

  12. Version 0.7.0

  13. Version 0.7.1

  14. Version 0.7.2

  15. Version 0.7.3

  16. Version 0.7.4

  17. Version 0.7.5

  18. Version 0.7.6

  19. Version 0.7.7

  20. Version 0.8.0

  21. Version 0.9.0