BD

bu-disc/pvldb-pdfa-resources

Developer tools
20 stars Quality 47 Trend 18

This is a collection of resources started as part of the PVLDB Vol 16 Publication Process. It primarily hosts tool to check PDF/A compliance and also include various resources and how-tos regarding...

Overview

This is a collection of resources started as part of the PVLDB Vol 16 Publication Process. It primarily hosts tool to check PDF/A compliance and also include various resources and how-tos regarding achieving PDF/A compliance. Note: This is a live document, so please check back for updated content and feel free to contribute as well. The checking scripts need Python 3 with PyPDF2, poppler (for pdffonts) and veraPDF (which needs Java). On macOS (with Homebrew), Debian/Ubuntu or Fedora, one command installs everything: It asks for your password to install system packages and is safe to re-run. Run ./setup.sh -h for options. To install the tools by hand instead, follow _tools/INSTALL_TOOLS.md. Copy your paper into _testdir (the default input folder, ignored by git) and run both checks: A paper that passes the font and PDF/A check prints: Use --dir to check a different folder, and -h to see all options and their defaults. check_fonts_pdfa.

README

How to ensure PDF/A compliance

This is a collection of resources started as part of the PVLDB Vol 16 Publication Process. It primarily hosts tool to check PDF/A compliance and also include various resources and how-tos regarding achieving PDF/A compliance.

Note: This is a live document, so please check back for updated content and feel free to contribute as well.

Getting started with the tools to check PDF/A compliance

Set up the tools

The checking scripts need Python 3 with PyPDF2, poppler (for pdffonts) and veraPDF (which needs Java). On macOS (with Homebrew), Debian/Ubuntu or Fedora, one command installs everything:

./setup.sh

It asks for your password to install system packages and is safe to re-run. Run ./setup.sh -h for options.

To install the tools by hand instead, follow _tools/INSTALL_TOOLS.md.

Check that everything is in place:

python3 -c "import PyPDF2; print(PyPDF2.__version__)"
pdffonts -v
_tools/veraPDF/verapdf --version

Minimal example

Copy your paper into _testdir (the default input folder, ignored by git) and run both checks:

mkdir -p _testdir
cp /path/to/p1234-smith.pdf _testdir/
./check_fonts_pdfa.py     # PDF/A compliance, embedded fonts, no Type 3 fonts
./check_format.py         # common PVLDB formatting issues

A paper that passes the font and PDF/A check prints:

	Check file _testdir/p1234-smith.pdf
... OK: PDF/A compliant, all fonts are embedded and there are no Type 3 fonts.

Use --dir to check a different folder, and -h to see all options and their defaults. check_fonts_pdfa.py also writes the list of needed corrections to corrections.txt.

If a check fails, PDFA-how-to.md explains how to fix it. If your paper declares PDF/A-1b and fails, try declaring PDF/A-2b with \hypersetup{pdfapart=2,pdfaconformance=b}. PVLDB accepts PDF/A-2, which allows things PDF/A-1 forbids, such as transparency in figures. Then re-run the check.

Proposed workflow: check your figures too

Font problems often come from a single figure. To find it, check the figures one by one:

cp /path/to/paper/figures/*.pdf _testdir/
./check_fonts_pdfa.py

Look for contains Type 3 fonts or has N missing fonts. For figures, ignore not a valid PDF/A and don’t run check_format.py.

How to prepare your PDF

Click here to see a set of advice on how to prepare your PDF so that it is PDF/A compliant.

AI Agents

AI coding agents can use the getting-started skill in .claude/skills/pvldb-pdfa-getting-started/SKILL.md, which also covers interpreting and fixing failures.

View the full README on GitHub

Recommended Tools

Try a different keyword or remove a filter.

Install

npx skillfish add bu-disc/pvldb-pdfa-resources
New to MCP? Start with the mcpskill.org guide →