diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml new file mode 100644 index 0000000000..9348c2cdf6 --- /dev/null +++ b/.github/workflows/codeql.yml @@ -0,0 +1,46 @@ +name: CodeQL + +on: + push: + branches: [main] + pull_request: + branches: [main] + schedule: + - cron: "23 3 * * 1" + workflow_dispatch: + +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + analyze: + name: Analyze ${{ matrix.language }} + runs-on: ubuntu-latest + timeout-minutes: 30 + permissions: + contents: read + security-events: write # Upload CodeQL results for this job only. + strategy: + fail-fast: false + matrix: + language: [python, rust, actions] + steps: + - name: Check out source + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + + - name: Initialise CodeQL + uses: github/codeql-action/init@6f2ac81f5cd81fe351a197ba0b00d91d03cd2aee # v4 + with: + languages: ${{ matrix.language }} + build-mode: none + + - name: Perform CodeQL analysis + uses: github/codeql-action/analyze@6f2ac81f5cd81fe351a197ba0b00d91d03cd2aee # v4 + with: + category: "/language:${{ matrix.language }}" diff --git a/CITATION.cff b/CITATION.cff new file mode 100644 index 0000000000..16c98123d9 --- /dev/null +++ b/CITATION.cff @@ -0,0 +1,24 @@ +cff-version: 1.2.0 +message: "If you use this work, cite it with this metadata and the release tag or commit you used." +title: "PlutarchPages" +type: software +authors: + - name: "EquityBot" +abstract: "A clean-room PDF application in pure Rust, aiming at Adobe Acrobat Pro parity. A fork of PdfCraft." +repository-code: "https://github.com/EquityBot/PlutarchPages" +license-url: "https://github.com/EquityBot/PlutarchPages/blob/main/README.md#license-and-credits" +keywords: + - desktop-app + - pdf + - pdf-editor + - pdf-tools + - pdf-viewer + - pdfcraft + - redaction + - rust +references: + - type: software + title: "PdfCraft" + authors: + - name: "ArtCraft Team and the PdfCraft contributors" + repository-code: "https://github.com/storytold/pdfcraft" diff --git a/README.md b/README.md index 87fd23ae0e..8b28e73e18 100644 --- a/README.md +++ b/README.md @@ -7,19 +7,19 @@

+
+ +[![tests](https://img.shields.io/github/actions/workflow/status/EquityBot/PlutarchPages/ci.yml?branch=main&label=tests&labelColor=000000&style=flat)](https://github.com/EquityBot/PlutarchPages/actions/workflows/ci.yml) [![CodeQL](https://img.shields.io/github/actions/workflow/status/EquityBot/PlutarchPages/codeql.yml?branch=main&label=CodeQL&labelColor=000000&style=flat)](https://github.com/EquityBot/PlutarchPages/actions/workflows/codeql.yml)
+[![rust: 1.90+](https://img.shields.io/badge/rust-1.90%2B-66023C?labelColor=000000&style=flat&color=66023C)](https://www.rust-lang.org/) [![licence: MIT OR Apache-2.0](https://img.shields.io/badge/licence-MIT%20OR%20Apache--2.0-66023C?labelColor=000000&style=flat&color=66023C)](#license-and-credits) [![fork of: PdfCraft](https://img.shields.io/badge/fork%20of-PdfCraft-66023C?labelColor=000000&style=flat&color=66023C)](https://github.com/storytold/pdfcraft) + +
+

The PDF workbench; an open-source, clean-room reimplementation of Adobe Acrobat, rebuilt in pure Rust.
Read, organize, combine, split and secure PDFs in a fast, native app, written in Rust from the ground up.
macOS · Windows · Linux · FreeBSD · the web

-

- License: MIT OR Apache-2.0 - Written in Rust - Platforms: macOS, Windows, Linux, FreeBSD, web - No account, no telemetry -

- > [!NOTE] > **PlutarchPages is a fork of [PdfCraft](https://github.com/storytold/pdfcraft) by the ArtCraft team.** It adds > the fixes and converters listed under [Fork changes](#fork-changes). It is not an ArtCraft product, and the diff --git a/llms.txt b/llms.txt new file mode 100644 index 0000000000..5a4fee141b --- /dev/null +++ b/llms.txt @@ -0,0 +1,40 @@ +# PlutarchPages + +> A fork of PdfCraft: a clean-room PDF application in pure Rust for macOS, Windows, Linux, FreeBSD +> and the web, aiming at Adobe Acrobat Pro parity. It is alpha: pages are still drawn by the `hayro` +> crate, and editing existing text, OCR beyond Latin script and Office import and export are thin or missing. + +This fork publishes no builds of its own; build it from source with Rust 1.90 or later, for example +`git clone https://github.com/EquityBot/PlutarchPages` and then +`cargo run --release -p pdfcraft -- some.pdf`. The program, crates and binaries keep their `pdfcraft` names. + +## Start + +- [README](https://github.com/EquityBot/PlutarchPages#readme): features, fork changes, getting started and licence. +- [Development](https://github.com/EquityBot/PlutarchPages/blob/main/docs/development.md): environment variables, logs and diagnostics. +- [Roadmap summary](https://github.com/EquityBot/PlutarchPages/blob/main/ROADMAP.md): stage, parity numbers and progress log. + +## Docs + +- [Architecture](https://github.com/EquityBot/PlutarchPages/blob/main/docs/architecture.md): how the crates are built and layered today. +- [Gaps](https://github.com/EquityBot/PlutarchPages/blob/main/docs/gaps.md): known shortfalls against Acrobat Pro, ranked. +- [Parity with Acrobat Pro](https://github.com/EquityBot/PlutarchPages/blob/main/docs/target-app-parity.md): the overall assessment and how it is measured. +- [Milestones](https://github.com/EquityBot/PlutarchPages/blob/main/docs/roadmap.md): milestones and current focus. +- [MCP conventions](https://github.com/EquityBot/PlutarchPages/blob/main/docs/mcp.md): the opt-in `pdfcraft-cli mcp` server. +- [Interface language](https://github.com/EquityBot/PlutarchPages/blob/main/docs/localization.md): choosing the interface language and what each catalogue covers. +- [Editing images](https://github.com/EquityBot/PlutarchPages/blob/main/docs/editing-images.md): moving, resizing and deleting figures. +- [Editing several objects](https://github.com/EquityBot/PlutarchPages/blob/main/docs/editing-multiple-objects.md): moving several objects together. +- [File format parity](https://github.com/EquityBot/PlutarchPages/blob/main/docs/file-format-parity.md): formats read and written. +- [PDF specification parity](https://github.com/EquityBot/PlutarchPages/blob/main/docs/pdf-spec-parity.md): ISO 32000-2 and subset standards coverage. +- [UI parity](https://github.com/EquityBot/PlutarchPages/blob/main/docs/ui-parity.md): tools, panels and shortcuts against Acrobat Pro. +- [Hardware and platform parity](https://github.com/EquityBot/PlutarchPages/blob/main/docs/hardware-parity.md): hardware features per platform. +- [Localization parity](https://github.com/EquityBot/PlutarchPages/blob/main/docs/localization-parity.md): per-language interface status. +- [Contributors](https://github.com/EquityBot/PlutarchPages/blob/main/docs/contributors.md): how the About window credits contributors. +- [Releasing](https://github.com/EquityBot/PlutarchPages/blob/main/docs/releasing.md): the release workflow. +- [Attribution](https://github.com/EquityBot/PlutarchPages/blob/main/ATTRIBUTION.md): every bundled asset with its author, source and licence. +- [Agent and contributor rules](https://github.com/EquityBot/PlutarchPages/blob/main/AGENTS.md): asset, clean-room and safety rules. + +## Related + +- [EquityBot](https://github.com/EquityBot): other EquityBot tools. +- [PdfCraft](https://github.com/storytold/pdfcraft): the upstream project.