# Mijn iPad resource pack v1.0

Prepared by CSEC3888 group, 7 September 2026. Resource page: https://mijnipad.net/resources/

## PDF annotation and link reference

`pdf-reference-v1.pdf` has two A4 pages and eight annotation objects: three Link, two Text (one is a reply), one Highlight, one FreeText and one Ink. One link opens https://www.w3.org/; two point to pages inside the PDF. No script, attachment, tracking link or form is included.

`pdf-appearance-only-v1.pdf` contains the two rendered pages as images at 120 dpi. It has zero annotation objects and no extractable page text. Its painted buttons and note icons are not interactive. This illustrates this specific raster export, not every form of PDF flattening. Both files were generated locally with ReportLab 4.4.9 and pypdf 6.10.0; Poppler rendered the appearance copy.

Make a duplicate of the reference before opening it in an editor. Save or export using your usual workflow, then check the actual output in a second viewer. A viewer may make printed URL text clickable automatically even when a PDF Link object is absent. Inspect the file structure separately from what happens on screen.

## Inspect a PDF locally

Requires Python 3 and pypdf. The verified environment used Python 3.12.14 and pypdf 6.10.0. Create a separate virtual environment:

```
python3 -m venv .venv
.venv/bin/python -m pip install pypdf==6.10.0
.venv/bin/python pdf_inventory.py pdf-reference-v1.pdf > inventory.json
.venv/bin/python pdf_inventory.py your-export.pdf --baseline pdf-reference-v1.pdf > comparison.json
```

On Windows, use `.venv\Scripts\python.exe` in place of `.venv/bin/python`.

The tool reads files on your computer; it does not upload them or open their links. The JSON can contain private comments and URLs, so review it before sharing. It reports selected fields, not a universal preservation score: rendering, permission settings, hidden application data, accessibility tags, layers, forms and signatures are outside its comparison. A changed annotation name or coordinate can create a difference without an actual loss. An unchanged field inventory cannot prove that a viewer displays everything correctly. An unreadable or encrypted input returns an error rather than a pass.

`reference-inventory-v1.json` is the inventory of the supplied PDF. `appearance-comparison-v1.json` records the comparison with the raster copy. `verification-v1.json` records generated file properties. `SHA256SUMS.txt` identifies the distributed files; matching bytes are useful for checking a download, not a measure of how a document looks.

## Drawing worksheet and workflow log

`drawing-workflow-sheet-v1.pdf` has four groups of five marks: pressure ramps, stroke endings, curves and corners, and palm contact. Save one copy for each setting. Keep zoom, canvas dimensions, brush and comfortable drawing pressure consistent. Write the actual device, OS and app version on each sheet. The suggested 20 marks are a practical starting point, not a statistical sample-size claim or a hardware benchmark.

`workflow-log-v1.csv` is an empty record sheet. Enter only checks you actually performed. Keep unsuccessful attempts in the record and distinguish missing data from zero failures.

## PNG alpha reference

`alpha-edge-reference-v1.png` is a 640 x 360 RGBA image with constant RGB (24, 96, 168). Only alpha changes: it is fully opaque inside radius 108 px, falls linearly to zero at radius 132 px and is transparent outside. The centre is (319.5, 179.5) in zero-based pixel coordinates. Alpha is rounded to the nearest integer. Place it over light and dark backgrounds at its native pixel dimensions to inspect transparency handling. It is a mathematical reference image, not a photograph or a display measurement. It has no embedded ICC profile; keep any chosen colour interpretation consistent when comparing copies.

## Continuous audio reference

The WAV files contain an original 997 Hz tone at 48,000 samples per second, mono, 16-bit PCM. The amplitude is 3,000 out of a possible positive 32,767. Start playback at a low volume.

`audio-continuous-v1.wav` is four seconds (192,000 frames); `audio-track-1-v1.wav` and `audio-track-2-v1.wav` are two seconds each (96,000 frames). Concatenating the two decoded PCM payloads exactly reproduces the continuous payload. Do not concatenate the WAV headers themselves. The verified equality concerns the file data; no iPad player, AAC encoder, Bluetooth device or track transition has been measured here. Encode your own copies and record the encoder, container, app and playback settings to investigate a particular workflow. Keep crossfade separate from gapless playback.

## Reuse and updates

Link to the resource page when referring readers to the pack so they can find the current version and instructions. Keep the version number with any result you record. Questions or corrections: contact@csec3888.com.

Technical references: https://pypdf.readthedocs.io/en/stable/user/reading-pdf-annotations.html ; https://www.w3.org/TR/png/ ; https://developer.apple.com/library/archive/qa/qa1636/_index.html

## Regenerate the reference files

The ZIP includes `build_reference_files.py`. With ReportLab 4.4.9, pypdf 6.10.0, Pillow and Poppler (`pdftoppm`) installed, run `python3 build_reference_files.py`. It creates files under `generated/` next to the script. Generated file properties are defined by the code; byte hashes may differ with fonts, renderer or dependency versions. Inspect newly generated output before using it as a comparison baseline. The distributed ZIP also includes the fixed reference files and their expected inventory.
