# Markdown-to-PDF editorial test record

Test date: `2026-08-12`

## Build under test

| Property | Value |
| --- | --- |
| Product | LocalFlux |
| Installed version | `1.0.8.0` |
| Architecture | `x64` |
| Package | `artifacts/releases/1.0.8.0/20260806-formal-3fc34ab/package-build/packages/x64/LocalFlux_1.0.8.0_x64_Test/LocalFlux_1.0.8.0_x64.msix` |
| Package bytes | `645,089,142` |
| Package SHA-256 | `BAF67B5F61DCBA97FF0EA8ED964BFF7E6923FE326290CA7A24EB0CCC01F16739` |
| Package identity | `Fuzzysense.Localflux_1.0.8.0_x64__pc6sn726wzvrt` |
| Formal candidate source | `3fc34ab` |
| PDF producer reported by output | LibreOffice `26.2.4.2 (X86_64)` |
| Environment | Local Windows x64 host; editorial run, not clean-VM release qualification |

The exact retained package was installed with `scripts/install-localflux-release.ps1` using `-Architecture x64`, `-SkipContextMenuRegistration`, and `-ReplaceSameVersion`. The installer reported `MainInstallStatus: Updated` and the installed package reported version `1.0.8.0`.

## Fixture provenance

| Fixture | Provenance |
| --- | --- |
| `localflux-markdown-guide.md` | Self-authored editorial fixture created for this article. It contains headings, inline styles, lists, a quote, a horizontal rule, a table, fenced PowerShell code, one internal fragment link, Unicode text, and a local image reference. |
| `localflux-logo.png` | A 640 × 640 derivative of repository-controlled `assets/brand/lf_logo.png`. |
| `remote-reference.md` | Minimal self-authored negative fixture containing one `https://example.com` link. |
| `raw-html.md` | Minimal self-authored negative fixture containing a `<section>` HTML block. |

Working files were staged under `C:\tmp\LocalFluxMarkdownToPdfBlog` so app screenshots exposed no Windows account name or personal folder.

## Procedure

1. Record source and logo byte counts and SHA-256 hashes.
2. Copy the source and logo to the neutral working directory.
3. Launch the installed LocalFlux package.
4. Add `localflux-markdown-guide.md` through the Windows file picker.
5. Select PDF and confirm the queued route reads **Markdown → PDF**.
6. Capture the waiting state.
7. Convert the file and capture the completed state.
8. Copy the generated PDF into `samples/output/`.
9. Inspect PDF metadata, page boxes, text, font resources, images, and annotations with `pypdf`.
10. Check the file with bundled qpdf `12.3.2`.
11. Render every page at 2× resolution with PyMuPDF `1.26.4` and inspect each rendered PNG visually.
12. Generate a page-one image and an all-pages contact sheet from those renders.
13. Re-hash the source and local logo.
14. In fresh app states, attempt conversion of the remote-reference and raw-HTML fixtures and record the visible failure guidance.
15. Confirm neither negative fixture produced an output PDF.

Windows UI interaction and real app screenshots used the Computer Use plugin. The PDF workflow followed the PDF skill's render-and-inspect requirement. ImageMagick could not render PDF on this host because Ghostscript was absent, so PyMuPDF was used as the allowed fallback.

## Positive conversion result

| Property | Result |
| --- | --- |
| Input | `localflux-markdown-guide.md`, 3,713 bytes |
| Output | `localflux-markdown-guide_converted.pdf`, 194,305 bytes |
| UI summary | `3.6 KB → 189.8 KB, larger than original` |
| PDF version | `1.7` |
| Encryption | None |
| Linearization | No |
| Pages | 3 |
| Page size | `595.303937 × 841.889764` points on all pages (A4) |
| Title | `localflux-markdown-guide` |
| Producer | `LibreOffice 26.2.4.2 (X86_64)` |
| Creation date | `2026-08-12 10:43:18 +05:30` |
| Link annotations | One internal `/Link` annotation on page 2 with a local destination and no external action |
| Fonts | Seven TrueType subsets; every font descriptor contains `/FontFile2` |
| Images | One image resource reported per page |
| qpdf | No syntax or stream encoding errors found |

The font subsets were Arial Bold, Times New Roman regular/bold/italic, OpenSymbol, Consolas, and NSimSun. PDF text extraction recovered `café`, `résumé`, `naïve`, and `日本語`. Visual review confirmed those glyphs, the logo, title hierarchy, quote, lists, table, code block, link styling, and natural page breaks. No clipping, overlap, blank page, missing image, or replacement glyph was observed.

## Source preservation

| File | Bytes | SHA-256 before and after |
| --- | ---: | --- |
| `localflux-markdown-guide.md` | 3,713 | `D1355FEDCA67D2724912298FFCCBF64228367AC5CC9E8C9FAFCBAA6703355A0E` |
| `localflux-logo.png` | 123,364 | `A011DC05786030E62D697F6FDCEEC26BCE0483648F01530697FE4779FDB9B51A` |

Output SHA-256: `51345FFD534C9AD5573E8587FD8377F4B5CD5A1CACC8B1F067B666E46A24FBC3`.

## Negative-input results

### Remote reference

The fixture containing an HTTPS link was rejected. The app displayed:

> Markdown containing remote web links or images isn't supported. Remove the remote web references and try again.

No `remote-reference_converted.pdf` file existed after the attempt.

### Raw HTML

The fixture containing a `<section>` block was rejected. The app displayed:

> Markdown containing raw HTML isn't supported. Remove the HTML tags and try again.

No `raw-html_converted.pdf` file existed after the attempt.

## Scope and limitations

- This is editorial evidence for one retained x64 package, not clean-VM qualification or a support matrix.
- The test covers one valid UTF-8 Markdown document and two deliberately invalid fixtures.
- The host network adapter was not disabled, so the claim is no-upload/local conversion rather than air-gapped execution.
- The test does not cover every Markdig extension, relative-image resolution, malformed Markdown, encrypted PDF output, custom fonts, exact print layout, or every writing system.
- The output's A4 page size, fonts, byte count, and three-page length are fixture-specific.
- Visual inspection is not a formal accessibility or PDF archival-conformance certification.

## Editorial package validation

Final validation passed with:

- nine manifest assets present with matching byte counts, MIME signatures, dimensions where applicable, and SHA-256 hashes;
- nine unique `/blog-media/markdown-to-pdf-windows/` references resolved to files in this package;
- a 2,206-word article body;
- source body hash `b057cf1c621eee24` recomputed successfully;
- frontmatter matches the site editorial schema;
- balanced fenced code blocks and non-empty alt text for all article images;
- no personal account name, email pattern, or account-specific Windows profile path in the publication package;
- a three-page PDF with a passing qpdf structural check; and
- all three PDF pages rendered and visually inspected at 2× resolution.
