{
  "_id": "6a47941f2f27a93436c0d74f",
  "Package": "pnpmisc",
  "Type": "Package",
  "Title": "Utilities for Print-and-Play Board Games",
  "Version": "0.2.0-23",
  "Authors@R": "c(person(\"Trevor L.\", \"Davis\", role=c(\"aut\", \"cre\"),\nemail=\"trevor.l.davis@gmail.com\",\ncomment = c(ORCID = \"0000-0001-6341-4639\")))",
  "URL": "https://github.com/trevorld/pnpmisc,\nhttps://trevorldavis.com/R/pnpmisc/dev/",
  "BugReports": "https://github.com/trevorld/pnpmisc/issues",
  "Description": "Functions for creating and editing PDF files for\nprint-and-play board games with a consistent interface in which\nthe input filename is the first argument, the output filename\nis the second, and all other arguments are named.  Includes\nfunctions to resize, scale, rotate, and combine PDF pages, add\ncrop marks, crosshairs, and origami fold guides, and create\nplastic storage box jackets and origami card wallets. Also\nprovides layout functions for splitting pages into individual\ncomponent images and reassembling them.  Wraps PDF\nfunctionality from 'qpdf', 'pdftools', and 'xmpdf' and\noptionally uses 'ghostscript', 'pdfxup', and 'bittermelon' for\nadditional functionality.",
  "SystemRequirements": "Several features require `ghostscript`.  To make\nN-up pdf documents you'll also need `pdfxup`.",
  "License": "MIT + file LICENSE",
  "Roxygen": "list(markdown = TRUE)",
  "Config/testthat/edition": "3",
  "Encoding": "UTF-8",
  "Config/roxygen2/version": "8.0.0",
  "Config/pak/sysreqs": "libjpeg-dev libssl-dev libpoppler-cpp-dev\npoppler-data",
  "Repository": "https://trevorld.r-universe.dev",
  "Date/Publication": "2026-07-02 20:42:42 UTC",
  "RemoteUrl": "https://github.com/trevorld/pnpmisc",
  "RemoteRef": "HEAD",
  "RemoteSha": "3d9bc20145343f8a6fc956181009a5bca0bc98b4",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-07-02 21:30:03 UTC",
    "User": "root"
  },
  "Author": "Trevor L. Davis [aut, cre] (ORCID:\n<https://orcid.org/0000-0001-6341-4639>)",
  "Maintainer": "Trevor L. Davis <trevor.l.davis@gmail.com>",
  "_user": "trevorld",
  "_type": "src",
  "_file": "pnpmisc_0.2.0-23.tar.gz",
  "_fileid": "https://r2.ropensci.org/dcf7ff1e2005f033a2f484d7f695e93447cbf5da1293485bd7c7427b3a9afb3a",
  "_filesize": 280860,
  "_sha256": "dcf7ff1e2005f033a2f484d7f695e93447cbf5da1293485bd7c7427b3a9afb3a",
  "_expires": "2026-10-11T10:51:10.000Z",
  "_created": "2026-07-02T21:30:03.000Z",
  "_published": "2026-07-03T10:51:11.440Z",
  "_jobs": [
    {
      "job": 84984297225,
      "time": 190,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "8052142069"
    },
    {
      "job": 84984297236,
      "time": 221,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8052152974"
    },
    {
      "job": 84984296987,
      "time": 158,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "8052131754"
    },
    {
      "job": 84984297250,
      "time": 155,
      "config": "macos-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8052130805"
    },
    {
      "job": 84984296996,
      "time": 167,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8052076607"
    },
    {
      "job": 84984297014,
      "time": 142,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "8052126785"
    },
    {
      "job": 84984297033,
      "time": 134,
      "config": "windows-devel",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "8052123543"
    },
    {
      "job": 84984297220,
      "time": 131,
      "config": "windows-oldrel",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "8052123070"
    },
    {
      "job": 84984297183,
      "time": 142,
      "config": "windows-release",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8052126661"
    }
  ],
  "_host": "GitHub-Actions",
  "_buildurl": "https://github.com/r-universe/trevorld/actions/runs/28622656987",
  "_status": "success",
  "_upstream": "https://github.com/trevorld/pnpmisc",
  "_commit": {
    "id": "3d9bc20145343f8a6fc956181009a5bca0bc98b4",
    "author": "Trevor L Davis <trevor.l.davis@gmail.com>",
    "committer": "Trevor L. Davis <trevor.l.davis@gmail.com>",
    "message": "fix: Stop pdfwrite from clamping width to input /CropBox in pdf_resize_vector()\n\nGhostscript's pdfwrite device propagates the input page's /CropBox to\nthe output even when -dDEVICEWIDTHPOINTS/-dDEVICEHEIGHTPOINTS override\nthe page size, so pdf_change_paper() silently kept the input's width on\nPDFs with an explicit /CropBox (e.g. \"Print to PDF\" output). Passing\n-dModifiesPageSize=true stops pdfwrite from emitting the stale box\nvalues; requires ghostscript >= 10.01.0; older versions are unaffected.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\n",
    "time": 1783024962
  },
  "_maintainer": {
    "name": "Trevor L. Davis",
    "email": "trevor.l.davis@gmail.com",
    "login": "trevorld",
    "description": "Studies electricity markets",
    "uuid": 2433259,
    "orcid": "0000-0001-6341-4639"
  },
  "_distro": "resolute",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.2",
      "role": "Depends"
    },
    {
      "package": "grid",
      "role": "Imports"
    },
    {
      "package": "grDevices",
      "role": "Imports"
    },
    {
      "package": "pdftools",
      "role": "Imports"
    },
    {
      "package": "qpdf",
      "version": ">= 1.4.1",
      "role": "Imports"
    },
    {
      "package": "rlang",
      "role": "Imports"
    },
    {
      "package": "stats",
      "role": "Imports"
    },
    {
      "package": "tools",
      "role": "Imports"
    },
    {
      "package": "utils",
      "role": "Imports"
    },
    {
      "package": "bittermelon",
      "version": ">= 2.2.0-1",
      "role": "Suggests"
    },
    {
      "package": "gridpattern",
      "role": "Suggests"
    },
    {
      "package": "jpeg",
      "role": "Suggests"
    },
    {
      "package": "piecepackr",
      "version": ">= 1.14.0-6",
      "role": "Suggests"
    },
    {
      "package": "png",
      "role": "Suggests"
    },
    {
      "package": "marquee",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    },
    {
      "package": "xmpdf",
      "role": "Suggests"
    }
  ],
  "_owner": "trevorld",
  "_selfowned": true,
  "_usedby": 1,
  "_updates": [
    {
      "week": "2025-42",
      "n": 2
    },
    {
      "week": "2025-47",
      "n": 3
    },
    {
      "week": "2025-51",
      "n": 10
    },
    {
      "week": "2026-02",
      "n": 6
    },
    {
      "week": "2026-03",
      "n": 3
    },
    {
      "week": "2026-11",
      "n": 40
    },
    {
      "week": "2026-16",
      "n": 1
    },
    {
      "week": "2026-19",
      "n": 1
    },
    {
      "week": "2026-20",
      "n": 6
    },
    {
      "week": "2026-27",
      "n": 2
    }
  ],
  "_tags": [
    {
      "name": "v0.1.1",
      "date": "2025-11-18"
    }
  ],
  "_topics": [
    "print-and-play"
  ],
  "_stars": 0,
  "_contributors": [
    {
      "user": "trevorld",
      "count": 111,
      "uuid": 2433259
    }
  ],
  "_userbio": {
    "uuid": 2433259,
    "type": "user",
    "name": "Trevor L. Davis",
    "followers": 77,
    "description": "Studies electricity markets"
  },
  "_downloads": {
    "count": 0,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/pnpmisc"
  },
  "_devurl": "https://github.com/trevorld/pnpmisc",
  "_pkgdown": "https://trevorldavis.com/R/pnpmisc/dev/",
  "_searchresults": 0,
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/pnpmisc.html",
    "extra/readme.html",
    "extra/readme.md",
    "LICENSE",
    "manual.pdf"
  ],
  "_cranurl": false,
  "_exports": [
    "as_fill",
    "bm_create_pdf",
    "bm_crop_layout",
    "bm_rm_crosshairs",
    "bm_split_layout",
    "fullGrob",
    "grid_add_cropmarks",
    "grid_add_crosshairs",
    "grid_add_layout",
    "grid_add_lines",
    "grid_add_origami",
    "grid_add_origami_bb",
    "grid_add_rects",
    "grid.full",
    "layout_grid",
    "layout_name_fn",
    "layout_names",
    "layout_preset",
    "ls_temp_pdfs",
    "pdf_add_cropmarks",
    "pdf_add_crosshairs",
    "pdf_add_lines",
    "pdf_add_origami",
    "pdf_add_overlay",
    "pdf_add_rects",
    "pdf_append_blank",
    "pdf_apply",
    "pdf_change_paper",
    "pdf_clean",
    "pdf_combine",
    "pdf_compress",
    "pdf_create_4x6_jacket",
    "pdf_create_blank",
    "pdf_create_jacket",
    "pdf_create_jacket_instructions",
    "pdf_create_poker_jacket",
    "pdf_create_wallet",
    "pdf_gs",
    "pdf_height",
    "pdf_orientation",
    "pdf_overlay_stamp",
    "pdf_pad_paper",
    "pdf_pages",
    "pdf_paper",
    "pdf_pdfxup",
    "pdf_pdfxup_booklet",
    "pdf_rasterize",
    "pdf_render_bm_list",
    "pdf_render_bm_pixmap",
    "pdf_render_raster",
    "pdf_rep",
    "pdf_rm_crosshairs",
    "pdf_rotate_pages",
    "pdf_scale",
    "pdf_set_bookmarks",
    "pdf_set_docinfo",
    "pdf_set_xmp",
    "pdf_subset",
    "pdf_width",
    "rm_temp_pdfs",
    "zip_extract_bm_pixmap"
  ],
  "_help": [
    {
      "page": "bm_create_pdf",
      "title": "Create a pdf from a list of images",
      "topics": [
        "bm_create_pdf"
      ]
    },
    {
      "page": "bm_crop_layout",
      "title": "Crop out a component from a print-and-play layout",
      "topics": [
        "bm_crop_layout"
      ]
    },
    {
      "page": "bm_rm_crosshairs",
      "title": "Remove crosshairs from a raster object",
      "topics": [
        "bm_rm_crosshairs"
      ]
    },
    {
      "page": "bm_split_layout",
      "title": "Extract components from a print-and-play layout",
      "topics": [
        "bm_split_layout"
      ]
    },
    {
      "page": "fullGrob",
      "title": "A rectangular grob filled with a color, image, or pattern.",
      "topics": [
        "as_fill",
        "fullGrob",
        "grid.full"
      ]
    },
    {
      "page": "grid_add_cropmarks",
      "title": "Draw crop marks around components",
      "topics": [
        "grid_add_cropmarks"
      ]
    },
    {
      "page": "grid_add_crosshairs",
      "title": "Draw crosshairs at component corners",
      "topics": [
        "grid_add_crosshairs"
      ]
    },
    {
      "page": "grid_add_layout",
      "title": "Draw images to a layout with grid",
      "topics": [
        "grid_add_layout"
      ]
    },
    {
      "page": "grid_add_lines",
      "title": "Draw lines along component edges",
      "topics": [
        "grid_add_lines"
      ]
    },
    {
      "page": "grid_add_origami",
      "title": "Draw origami fold symbols",
      "topics": [
        "grid_add_origami",
        "grid_add_origami_bb"
      ]
    },
    {
      "page": "grid_add_rects",
      "title": "Draw (rounded) rectangles around components",
      "topics": [
        "grid_add_rects"
      ]
    },
    {
      "page": "layout_grid",
      "title": "Layout data frame for a grid of identically sized components",
      "topics": [
        "layout_grid"
      ]
    },
    {
      "page": "layout_name_fn",
      "title": "Function to generate layout names",
      "topics": [
        "layout_name_fn"
      ]
    },
    {
      "page": "layout_preset",
      "title": "Layout data frame for a named preset",
      "topics": [
        "layout_names",
        "layout_preset"
      ]
    },
    {
      "page": "rm_temp_pdfs",
      "title": "List and remove temporary pdfs",
      "topics": [
        "ls_temp_pdfs",
        "rm_temp_pdfs"
      ]
    },
    {
      "page": "pdf_add_cropmarks",
      "title": "Add crop marks to a pdf",
      "topics": [
        "pdf_add_cropmarks"
      ]
    },
    {
      "page": "pdf_add_crosshairs",
      "title": "Add crosshairs to a pdf",
      "topics": [
        "pdf_add_crosshairs"
      ]
    },
    {
      "page": "pdf_add_lines",
      "title": "Add lines to a pdf",
      "topics": [
        "pdf_add_lines"
      ]
    },
    {
      "page": "pdf_add_origami",
      "title": "Add origami symbols to a pdf",
      "topics": [
        "pdf_add_origami"
      ]
    },
    {
      "page": "pdf_add_overlay",
      "title": "Overlay custom graphics on a pdf",
      "topics": [
        "pdf_add_overlay"
      ]
    },
    {
      "page": "pdf_add_rects",
      "title": "Add (rounded) rectangles to a pdf",
      "topics": [
        "pdf_add_rects"
      ]
    },
    {
      "page": "pdf_append_blank",
      "title": "Append blank pages to a pdf",
      "topics": [
        "pdf_append_blank"
      ]
    },
    {
      "page": "pdf_apply",
      "title": "Modify selected pages on a pdf",
      "topics": [
        "pdf_apply"
      ]
    },
    {
      "page": "pdf_change_paper",
      "title": "Change pdf paper size",
      "topics": [
        "pdf_change_paper",
        "pdf_pad_paper"
      ]
    },
    {
      "page": "pdf_clean",
      "title": "Copies pdf file while removing temporary pdf files",
      "topics": [
        "pdf_clean"
      ]
    },
    {
      "page": "qpdf_wrappers",
      "title": "Wrappers around 'qpdf' functions",
      "topics": [
        "pdf_combine",
        "pdf_compress",
        "pdf_overlay_stamp",
        "pdf_rotate_pages",
        "pdf_subset"
      ]
    },
    {
      "page": "pdf_create_blank",
      "title": "Create pdf of blank pages",
      "topics": [
        "pdf_create_blank"
      ]
    },
    {
      "page": "pdf_create_jacket",
      "title": "Create printable storage box jacket pdf",
      "topics": [
        "pdf_create_4x6_jacket",
        "pdf_create_jacket",
        "pdf_create_jacket_instructions",
        "pdf_create_poker_jacket"
      ]
    },
    {
      "page": "pdf_create_wallet",
      "title": "Create print-and-play card wallet pdf",
      "topics": [
        "pdf_create_wallet"
      ]
    },
    {
      "page": "pdf_gs",
      "title": "Process the pdf file with 'ghostscript'",
      "topics": [
        "pdf_gs"
      ]
    },
    {
      "page": "pdf_orientation",
      "title": "Tell whether pdf is in portrait or landscape mode",
      "topics": [
        "pdf_orientation"
      ]
    },
    {
      "page": "pdf_pages",
      "title": "Get integer vector of subset of pdf pages",
      "topics": [
        "pdf_pages"
      ]
    },
    {
      "page": "pdf_paper",
      "title": "Infer the paper size of a PDF document",
      "topics": [
        "pdf_paper"
      ]
    },
    {
      "page": "pdf_pdfxup",
      "title": "N-up pages of a document with 'pdfxup'",
      "topics": [
        "pdf_pdfxup",
        "pdf_pdfxup_booklet"
      ]
    },
    {
      "page": "pdf_rasterize",
      "title": "Rasterize a pdf",
      "topics": [
        "pdf_rasterize"
      ]
    },
    {
      "page": "pdf_render_bm_list",
      "title": "Render all pages of a pdf into bittermelon pixmap objects",
      "topics": [
        "pdf_render_bm_list"
      ]
    },
    {
      "page": "pdf_render_bm_pixmap",
      "title": "Render a pdf page into a bittermelon pixmap object",
      "topics": [
        "pdf_render_bm_pixmap"
      ]
    },
    {
      "page": "pdf_render_raster",
      "title": "Render a pdf page into a raster object",
      "topics": [
        "pdf_render_raster"
      ]
    },
    {
      "page": "pdf_rep",
      "title": "Repeat pages of a pdf",
      "topics": [
        "pdf_rep"
      ]
    },
    {
      "page": "pdf_rm_crosshairs",
      "title": "Remove crosshairs",
      "topics": [
        "pdf_rm_crosshairs"
      ]
    },
    {
      "page": "pdf_scale",
      "title": "Scale pdf contents centered within the page",
      "topics": [
        "pdf_scale"
      ]
    },
    {
      "page": "xmpdf_wrappers",
      "title": "Wrappers around 'xmpdf' functions",
      "topics": [
        "pdf_set_bookmarks",
        "pdf_set_docinfo",
        "pdf_set_xmp"
      ]
    },
    {
      "page": "pdf_width",
      "title": "Get dimensions of pdf pages",
      "topics": [
        "pdf_height",
        "pdf_width"
      ]
    },
    {
      "page": "zip_extract_bm_pixmap",
      "title": "Extract/render an image from a zipfile into a bittermelon pixmap object",
      "topics": [
        "zip_extract_bm_pixmap"
      ]
    }
  ],
  "_readme": "https://github.com/trevorld/pnpmisc/raw/HEAD/README.md",
  "_rundeps": [
    "askpass",
    "curl",
    "pdftools",
    "qpdf",
    "Rcpp",
    "rlang",
    "sys"
  ],
  "_score": 3.1760912590556813,
  "_indexed": true,
  "_nocasepkg": "pnpmisc",
  "_universes": [
    "trevorld"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.2.0-23",
      "date": "2026-07-02T21:32:57.000Z",
      "distro": "resolute",
      "commit": "3d9bc20145343f8a6fc956181009a5bca0bc98b4",
      "fileid": "https://r2.ropensci.org/c57c29d8affe0c4f267329ad5000e1b1b964a3fc8ac51436b7bdfb33512d94a0",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/trevorld/actions/runs/28622656987"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.2.0-23",
      "date": "2026-07-02T21:33:14.000Z",
      "distro": "resolute",
      "commit": "3d9bc20145343f8a6fc956181009a5bca0bc98b4",
      "fileid": "https://r2.ropensci.org/a0b82185e277cfdbab2e3710bfd1ead5a2cd2e16f0faa301af29648db349df90",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/trevorld/actions/runs/28622656987"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.2.0-23",
      "date": "2026-07-02T21:31:58.000Z",
      "commit": "3d9bc20145343f8a6fc956181009a5bca0bc98b4",
      "fileid": "https://r2.ropensci.org/70370113a9914b4c9b76defdcfd31c528535b2f295a2b43e272ab2bc8786de4a",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/trevorld/actions/runs/28622656987"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "0.2.0-23",
      "date": "2026-07-02T21:31:52.000Z",
      "commit": "3d9bc20145343f8a6fc956181009a5bca0bc98b4",
      "fileid": "https://r2.ropensci.org/0428af341815665ac84b6a9a3265d20e030bb8c87bdf477d4082cb068c8a3987",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/trevorld/actions/runs/28622656987"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.2.0-23",
      "date": "2026-07-02T21:32:43.000Z",
      "commit": "3d9bc20145343f8a6fc956181009a5bca0bc98b4",
      "fileid": "https://r2.ropensci.org/08b989c75a5502b0969e1b6d94b881924c21e8e876d44cc3c13127cc420f1256",
      "status": "success",
      "buildurl": "https://github.com/r-universe/trevorld/actions/runs/28622656987"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.2.0-23",
      "date": "2026-07-02T21:31:17.000Z",
      "commit": "3d9bc20145343f8a6fc956181009a5bca0bc98b4",
      "fileid": "https://r2.ropensci.org/eb3370dd5916b13a1e895b9b3b1d8f7453df1b9f5929afde40c471e56ad7431c",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/trevorld/actions/runs/28622656987"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.2.0-23",
      "date": "2026-07-02T21:31:17.000Z",
      "commit": "3d9bc20145343f8a6fc956181009a5bca0bc98b4",
      "fileid": "https://r2.ropensci.org/3a47b26d3bf35c60b52e53f56f6200d823eece39bb0dfc120c25ad7f2de6fec3",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/trevorld/actions/runs/28622656987"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "0.2.0-23",
      "date": "2026-07-02T21:31:21.000Z",
      "commit": "3d9bc20145343f8a6fc956181009a5bca0bc98b4",
      "fileid": "https://r2.ropensci.org/d201bb6c6af36ac75e28b40d5073d5bd8659eeff8087afb3159f1781c4a72dac",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/trevorld/actions/runs/28622656987"
    }
  ]
}