A web application to help make PDFs accessible. Built with Blazor and iText. The project can be accessed on our website.
This application exists to improve the PDF accessibility process. Many operations involving the tag tree are very repetitive. This application removes a lot of the manual work that was previously done with a tool like Adobe Acrobat.
This is a free and open source app. It can run in your browser without any installation. All PDF modification is done locally on the client machine. You shouldn't need to pay a fee to make a document accessible. This project will help to fix that issue.
While the end goal is to remove Acrobat (and any paid tool) from the accessibility workflow entirely, we have a long ways to go. At the moment, the project focuses on removing the operations that take the most time. The current features are as follows:
- Set basic accessibility metadata.
- List Generation: Generates a proper list with all the required tags. Useful for when you have lists that were detected as individual paragraphs.
- Table Generation: Generates a proper table with a specified amount of rows and columns. The first row are automatically TH elements.
- Tag Generation: Generate any amount of a specified tag. Unlike the above options, this only generates the specified tag, not any children of the tag. For example, generating 50 lists with the Tag Generation tool will not generate the required LI, Lbl, and LBody tags. Use the above tools for those cases!
- Attribute Modifier: Allows for batch tag modification. You can modify the ID, Title, Alt Text, and Actual text.
- Color Replacer: Replace any instance of a color in a document with another color. Used for fixing color contrast issues.
- Tag Shift: Move any instance of a nested tag up one level in the tag tree if the parent tag is the target tag type.
- Tag Reparent: Same as the Tag Shift, but this can move up the tree recursively.
- Remove Empty Tags - Removes any empty tags within a selection (or within the document).
The project docs are hosted on a separate website. They can be accessed here
This is only necessary if you want to develop the project. If you just want to use the application, head to our website.
You will need the .NET 8 SDK and Runtime Environment as well as the corresponding ASP release. To generate the CSS you will an need an LTS build of NodeJS/NPM.
Getting the correct version of .NET can be difficult. If you are not sure what to install, download the SDK for 8.0.x. Run it. Once completed, restart your PC. Continue with the below instructions. When you get to running the application, .NET will provide the links to the exact versions you need. The same process applies if you already have a .NET SDK or Runtime installed. Open a terminal and run
dotnet --list-sdks
ordotnet list-runtimes
to see the installed versions.
First, download the source code. You can download the zip using the green "Code" button at the top of this page or use a git command git clone https://github.com/amytho/pdf-acc-toolset
Next, install iText and the other dependencies: dotnet restore
To generate the styles you will need to install the NodeJS dependencies: npm install
This project uses TailwindCSS. As a result, you need to generate the corresponding CSS files.
Run the following command: npm run build
. This will generate an output.css
file in the wwwroot/css
directory.
If you intent to make changes to the CSS, run npm run dev
. This will automatically recompile when a file is updated.
The first time you run this command it will ask you to install the Tailwind NPX executable.
Run the command to start the project.
dotnet watch
This will start the project in development mode. Your browser will be opened to localhost:5005
. You can now use the project!
You may be asked to trust the ASP certificate. This is only required if you want to use the HTTPS version. There is no functional difference between the two since all PDF modification is done client-side.
Let me know if you have any suggestions. This is just a side project to help myself at work, but anyone is welcome to suggest improvements or contribute directly!
This software is under the AGLPLv3 license as it uses the community edition of the iText library. This project does not modify the iText software in any way. Their license can be seen on the iText License page.