# BookmarkPatch 1.0.0 Edit PDF bookmarks in a spreadsheet, then put them back into a separate PDF. BookmarkPatch is for document coordinators who already know where each section belongs. It works locally on Windows x64. It does not upload PDFs, require an account, or call an AI service. It is an independent product and is not affiliated with Bluebeam, Adobe, or PDF-XChange. ## Start here 1. Extract the **entire ZIP** to a local folder. Keep `_internal` next to `BookmarkPatch.exe`. 2. Run `BookmarkPatch.exe`. No Python installation or administrator access is required. 3. Open `samples/source-report.pdf` with **Open source PDF**. 4. Choose `samples/revised-report.pdf` as the target. It has one new front sheet, so set **Page offset** to **1**. Optionally import `samples/sample-edited-bookmarks.csv` to see two renamed titles as well. 5. Click **Preview mapping**. The first bookmark should point to page **2**, and the final bookmark to page **5**. The table shows physical PDF page numbers, counted from 1 including covers. Check the destinations in your PDF viewer. 6. Confirm the mapping and replacement, then **Save new PDF** with a new name in a local NTFS folder. 7. Open the output in your PDF viewer, show the bookmarks panel, and click every sample bookmark. The sample expected result is included for comparison. This unsigned early release may be blocked by Windows or company policy. Check your organization's software policy and try the free trial before buying. Do not disable security controls to run it. Local PDF structure and Poppler rendering checks do not establish compatibility with every Bluebeam release. Bluebeam-specific testing with your own non-sensitive sample remains necessary before relying on the result for delivery. ## Edit many titles or destinations Open a PDF and **Export CSV** to a new filename. Open that file in Excel or a CSV editor, keep the six column names, and save as **CSV UTF-8 (comma delimited)**. Then use **Import edited CSV**, choose the target PDF, and preview again. | Column | Meaning | | --- | --- | | `depth` | 1 = top level, 2 = child. Start at 1; do not skip levels. Maximum 32. | | `title` | Bookmark label. Unicode supported. Export prefixes **every title with one apostrophe** to protect spreadsheet formulas. Import removes exactly one leading apostrophe. Preserve it when editing; to start a literal title with an apostrophe use two. | | `page` | Physical target page, starting at 1. A cover counts. This is not a printed page label or a sheet number. | | `color` | Six-digit RGB, for example `#16805D`. | | `bold` | `true` or `false`. | | `italic` | `true` or `false`. | Use an offset of 2 only when every destination moved two physical pages forward. Negative offsets move destinations earlier. Offset is applied to the loaded CSV/source values once during preview. Repeated previews do not add it again. BookmarkPatch cannot tell whether a title points to the right content; equal page counts do not prove equivalent documents. Existing bookmarks on the **target** are replaced in the newly saved copy. The source and target files themselves are never modified. The page-level destinations are normalized to **Fit page**: source zoom, coordinates, named-destination relationships and open/collapsed state are not preserved. Titles, hierarchy, bold and italic are retained. Color is rounded to 8-bit RGB for CSV (`#RRGGBB`); tiny differences from the original floating-point color are possible. ## Free trial and personal edition The free trial can inspect supported PDFs and export the full CSV. It saves up to **10 bookmarks** per output. With a larger source, select **Use first 10 for trial** explicitly, then preview. That output contains only those ten bookmarks; reopen the source to restore the full in-app list. The personal edition handles up to 10,000 bookmarks per document under the file limits below. The planned personal edition is **$29 once**, for one person on up to two personally controlled devices. Version 1 remains usable offline without an ongoing subscription. No payment collection or online license server is built into the desktop app. Purchase and delivery are handled by the store once it is active. The local trial package is not a live store or evidence of a sale. ## Limits and errors - Maximum input PDF: 100 MiB, 3,000 pages. Maximum bookmark tree: 10,000 entries, depth 32. Each operation has a 60-second limit. - Encrypted/password-protected, signed/certified, portfolio and XFA PDFs are rejected. Work with an authorized unsigned/unprotected copy, or use your existing PDF software. Do not strip permissions or signatures just to bypass a restriction. - Only ordinary in-document page bookmarks are supported. Remote-file, JavaScript, web or unresolved destinations fail explicitly. This tool is not a PDF sanitizer and does not certify an input file as safe. - Empty CSVs, invalid pages, skipped hierarchy levels, invalid colors or flags stop the operation. No partial bookmark set is silently accepted. - If the target changes after preview, preview again. Existing files are never overwritten, even when the file dialog offers replacement. - A failed or cancelled operation does not publish the final PDF. An abrupt OS/power failure may leave a hidden `.bookmarkpatch-*.pdf` staging file in the output folder. After closing the app, you may remove that generated file. Preserve the original PDFs. - Use a local NTFS output folder; network/removable filesystems without hard-link support are not supported for atomic publication. Close locked inputs and check available disk space if an operation fails. ## Check the result and reuse Compare the saved PDF against the target: page count, representative page appearance, comments/links, and each changed bookmark destination. Keep the input PDF and edited CSV with your project for the next revision. Page content, annotations, metadata and page labels are intended to remain intact; special PDF structures outside the tested scope may require your existing editor. No compliance, archival-format, accessibility, digital-signature or legal-delivery certification is provided. ## Support, cancellation and refunds The proposed launch policy is asynchronous support through the seller contact on your purchase receipt. Before public sale that contact and the response-time expectation must be configured and verified; there is no invented support email in this build. Send version, Windows version, exact error, page/bookmark counts and reproduction steps. Avoid sending confidential PDFs; use a small synthetic example when possible. Proposed refund policy: request a refund through the receipt contact within 14 days if the product does not fit your workflow. Applicable mandatory consumer rights and the platform's policies still apply. This is a one-time purchase, so there is no recurring subscription to cancel. Refund actions require the authorized seller/platform; the app cannot issue a refund or remotely remove an already downloaded copy. After a full refund, the personal license ends and you must stop using that edition. Actual store terms will be visible before checkout.