summaryrefslogtreecommitdiff
path: root/print
diff options
context:
space:
mode:
Diffstat (limited to 'print')
-rw-r--r--print/Makefile1
-rw-r--r--print/a2ps/Makefile2
-rw-r--r--print/auctex/Makefile2
-rw-r--r--print/cups-filters/Makefile12
-rw-r--r--print/cups-filters/distinfo18
-rw-r--r--print/cups-filters/files/patch-0001-c3d2f07399da170
-rw-r--r--print/cups-filters/files/patch-0002-qpdf12292
-rw-r--r--print/cups-filters/files/patch-cupsfilters_colormanager.c4
-rw-r--r--print/gspdf/Makefile2
-rw-r--r--print/hyperlatex/Makefile2
-rw-r--r--print/ipp-usb/Makefile2
-rw-r--r--print/latex-biber/Makefile6
-rw-r--r--print/latex-biber/distinfo6
-rw-r--r--print/latex-biber/pkg-plist59
-rw-r--r--print/lilypond-devel/Makefile2
-rw-r--r--print/lilypond-devel/distinfo6
-rw-r--r--print/p5-PDF-Template/Makefile8
-rw-r--r--print/p5-PDF-Template/files/extrapatch-Makefile.PL15
-rw-r--r--print/paps/Makefile2
-rw-r--r--print/pdf-tools/Makefile2
-rw-r--r--print/pdfcpu/Makefile2
-rw-r--r--print/plasma6-print-manager/distinfo6
-rw-r--r--print/plutobook/Makefile39
-rw-r--r--print/plutobook/distinfo3
-rw-r--r--print/plutobook/pkg-descr3
-rw-r--r--print/plutobook/pkg-plist8
-rw-r--r--print/pslib/Makefile2
-rw-r--r--print/py-fonttools/Makefile9
-rw-r--r--print/py-fonttools/distinfo6
-rw-r--r--print/py-frescobaldi/Makefile17
-rw-r--r--print/py-frescobaldi/distinfo6
-rw-r--r--print/py-frescobaldi/files/patch-frescobaldi_portmidi_____init____.py (renamed from print/py-frescobaldi/files/patch-frescobaldi__app_portmidi_____init____.py)4
-rw-r--r--print/py-pypdf/Makefile2
-rw-r--r--print/py-pypdf/distinfo6
-rw-r--r--print/py-python-ly/Makefile3
-rw-r--r--print/py-python-ly/distinfo6
-rw-r--r--print/py-python-ly/files/patch-pyproject.toml9
-rw-r--r--print/py-reportlab/Makefile9
-rw-r--r--print/py-reportlab/distinfo6
-rw-r--r--print/qpdf/Makefile2
-rw-r--r--print/qpdf/distinfo2
-rw-r--r--print/qpdf/pkg-plist2
-rw-r--r--print/sioyek/Makefile2
-rw-r--r--print/texinfo/Makefile4
-rw-r--r--print/texinfo/distinfo6
-rw-r--r--print/yatex/Makefile2
46 files changed, 665 insertions, 114 deletions
diff --git a/print/Makefile b/print/Makefile
index 0e1d3e6f1f2b..ea80a60da7f8 100644
--- a/print/Makefile
+++ b/print/Makefile
@@ -158,6 +158,7 @@
SUBDIR += pkfonts400
SUBDIR += pkfonts600
SUBDIR += plasma6-print-manager
+ SUBDIR += plutobook
SUBDIR += pnm2ppa
SUBDIR += posterazor
SUBDIR += ps2eps
diff --git a/print/a2ps/Makefile b/print/a2ps/Makefile
index 2256b704a5c7..a276f0a43c62 100644
--- a/print/a2ps/Makefile
+++ b/print/a2ps/Makefile
@@ -1,6 +1,6 @@
PORTNAME= a2ps
PORTVERSION= 4.15.7
-PORTREVISION= 0
+PORTREVISION= 1
CATEGORIES= print
MASTER_SITES= GNU LOCAL/hrs/a2ps/:i18n
diff --git a/print/auctex/Makefile b/print/auctex/Makefile
index 8e731e3b21a0..e91db3e86bbe 100644
--- a/print/auctex/Makefile
+++ b/print/auctex/Makefile
@@ -1,6 +1,6 @@
PORTNAME= auctex
DISTVERSION= 13.3
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= print elisp
MASTER_SITES= GNU
PKGNAMESUFFIX= ${EMACS_PKGNAMESUFFIX}
diff --git a/print/cups-filters/Makefile b/print/cups-filters/Makefile
index d7e4f8a260e3..5287ae5e8483 100644
--- a/print/cups-filters/Makefile
+++ b/print/cups-filters/Makefile
@@ -1,6 +1,6 @@
PORTNAME= cups-filters
PORTVERSION= 1.28.17
-PORTREVISION= 9
+PORTREVISION= 10
CATEGORIES= print
MASTER_SITES= https://github.com/OpenPrinting/cups-filters/releases/download/${DISTVERSION}/
@@ -15,7 +15,15 @@ PATCHFILES= 9799398713b941557642d0b2bdbef360837ece0c.diff:-p1 \
770ec883e68e505c1d1856a42b78f9323dc326a6.diff:-p1 \
2076627d33477212f21352ad39e9d305adb63af3.diff:-p1 \
10fb02eaaee52e0be9b16917b38aa8ec5bddd87f.diff:-p1 \
- b7461ec2a8d1f2aa627b24e01e118ec4cca78ec0.diff:-p1
+ b7461ec2a8d1f2aa627b24e01e118ec4cca78ec0.diff:-p1 \
+ 6fd2bdfbdce76149af531ce9fca9062304238451.patch:-p1 \
+ 3534e01cb41ddfa61ac78d32052b8822df71d97d.patch:-p1 \
+ b378f09c9b8aaa8dccb5eb557938b30da874101d.patch:-p1 \
+ c8522bb128546a1910bca538a504a2c9363ebb22.patch:-p1 \
+ dccb537afe85af3ea01e3f274974d9d1f53f8e14.patch:-p1 \
+ d5cc66b410a3246e74b71f718e86504d08e4bfa3.patch:-p1 \
+ 86b060d2ac20d6dee757c609286cfaaa17d65428.patch:-p1 \
+ d43610f82e1757b45925a8830ac297ff9dc4abca.patch:-p1
MAINTAINER= tijl@FreeBSD.org
COMMENT= Additional backends, filters and other software for CUPS
diff --git a/print/cups-filters/distinfo b/print/cups-filters/distinfo
index a22a9c9614d5..db3d2ef4cbda 100644
--- a/print/cups-filters/distinfo
+++ b/print/cups-filters/distinfo
@@ -1,4 +1,4 @@
-TIMESTAMP = 1727810333
+TIMESTAMP = 1755616897
SHA256 (cups-filters-1.28.17.tar.xz) = 270a3752a960368aa99d431fb5d34f4039b2ac943c576d840612d1d8185c9bb9
SIZE (cups-filters-1.28.17.tar.xz) = 1516052
SHA256 (9799398713b941557642d0b2bdbef360837ece0c.diff) = c9a061b3c415ff547161360c4fc90e0584c65efbfea90564ec34eb0e2edddf77
@@ -23,3 +23,19 @@ SHA256 (10fb02eaaee52e0be9b16917b38aa8ec5bddd87f.diff) = 6e16e9f046a8bfcbd1552d9
SIZE (10fb02eaaee52e0be9b16917b38aa8ec5bddd87f.diff) = 460
SHA256 (b7461ec2a8d1f2aa627b24e01e118ec4cca78ec0.diff) = 9d6d64a20ee0859767ce48df665b429a22a42e213c1aeb2480adeb68bcd4b334
SIZE (b7461ec2a8d1f2aa627b24e01e118ec4cca78ec0.diff) = 700
+SHA256 (6fd2bdfbdce76149af531ce9fca9062304238451.patch) = 50e450d9cf4fedbac7980661cb5cab2cd3e9faa117747479e92bef5b255194d8
+SIZE (6fd2bdfbdce76149af531ce9fca9062304238451.patch) = 67608
+SHA256 (3534e01cb41ddfa61ac78d32052b8822df71d97d.patch) = ba3f6ed5b9ac0e18100ceed25aedebd29109799c1aa93505131d9264eb09b4b8
+SIZE (3534e01cb41ddfa61ac78d32052b8822df71d97d.patch) = 5483
+SHA256 (b378f09c9b8aaa8dccb5eb557938b30da874101d.patch) = 491d5355d14a255fa9de4d8e3cdec0c0cd49064811cecaec306be3db1ca933fa
+SIZE (b378f09c9b8aaa8dccb5eb557938b30da874101d.patch) = 2683
+SHA256 (c8522bb128546a1910bca538a504a2c9363ebb22.patch) = 426f85b5c64af1d5af778606bbfbaaef4719679dd1881525604202e02778e211
+SIZE (c8522bb128546a1910bca538a504a2c9363ebb22.patch) = 1300
+SHA256 (dccb537afe85af3ea01e3f274974d9d1f53f8e14.patch) = 413ccdce64d3f6886ab4fb956a485e58707a769a5ef725c86517a21058683782
+SIZE (dccb537afe85af3ea01e3f274974d9d1f53f8e14.patch) = 1160
+SHA256 (d5cc66b410a3246e74b71f718e86504d08e4bfa3.patch) = 0a7dd41fd646da9a36d4388d38017665512f03db35874a629a976df57ea76516
+SIZE (d5cc66b410a3246e74b71f718e86504d08e4bfa3.patch) = 1406
+SHA256 (86b060d2ac20d6dee757c609286cfaaa17d65428.patch) = 9211eb922e5cda81df3b02f7844c216c674e3c340bc80ac4e94593fc73084e66
+SIZE (86b060d2ac20d6dee757c609286cfaaa17d65428.patch) = 1023
+SHA256 (d43610f82e1757b45925a8830ac297ff9dc4abca.patch) = 5eea2ad0f42b683f12c8e381f49e8fa2cc511aa61a6e407ac3adaf1d0b29db00
+SIZE (d43610f82e1757b45925a8830ac297ff9dc4abca.patch) = 1144
diff --git a/print/cups-filters/files/patch-0001-c3d2f07399da b/print/cups-filters/files/patch-0001-c3d2f07399da
new file mode 100644
index 000000000000..470492a6d495
--- /dev/null
+++ b/print/cups-filters/files/patch-0001-c3d2f07399da
@@ -0,0 +1,170 @@
+From c3d2f07399da93f2b5308f499b1ddc5504d087ce Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?G=C3=BCnther=20Noack?= <gnoack3000@gmail.com>
+Date: Thu, 10 Jul 2025 22:31:02 +0200
+Subject: [PATCH] 1.x: Fix NULL-pointer dereference when parsing %%PDFTOPDF
+ comments (#644)
+
+* Fix null pointer dereference in %%PDFTOPDF* parsers
+
+* %%PDFTOPDFCollate comment parsing: Increment p where needed
+
+Without this, if strchr succeeds, p will point to a ':' character.
+*p will therefore never be a whitespace in the subsequent loop,
+or compare successfully against the "true" string.
+---
+ filter/gstoraster.c | 17 +++++++++++------
+ filter/mupdftoraster.c | 17 +++++++++++------
+ filter/pdftops.c | 36 +++++++++++++++++++++---------------
+ filter/pdftoraster.cxx | 17 +++++++++++------
+ 4 files changed, 54 insertions(+), 33 deletions(-)
+
+diff --git a/filter/gstoraster.c b/filter/gstoraster.c
+index 87ff948e6..6f4da5991 100644
+--- filter/gstoraster.c
++++ filter/gstoraster.c
+@@ -104,16 +104,21 @@ parse_pdf_header_options(FILE *fp, gs_page_header *h)
+ char *p;
+
+ p = strchr(buf+19,':');
+- h->NumCopies = atoi(p+1);
++ if (p) {
++ h->NumCopies = atoi(p+1);
++ }
+ } else if (strncmp(buf,"%%PDFTOPDFCollate",17) == 0) {
+ char *p;
+
+ p = strchr(buf+17,':');
+- while (*p == ' ' || *p == '\t') p++;
+- if (strncasecmp(p,"true",4) == 0) {
+- h->Collate = CUPS_TRUE;
+- } else {
+- h->Collate = CUPS_FALSE;
++ if (p) {
++ p++;
++ while (*p == ' ' || *p == '\t') p++;
++ if (strncasecmp(p,"true",4) == 0) {
++ h->Collate = CUPS_TRUE;
++ } else {
++ h->Collate = CUPS_FALSE;
++ }
+ }
+ }
+ }
+diff --git a/filter/mupdftoraster.c b/filter/mupdftoraster.c
+index 09c66c00d..a96e9c8c3 100644
+--- filter/mupdftoraster.c
++++ filter/mupdftoraster.c
+@@ -102,16 +102,21 @@ parse_pdf_header_options(FILE *fp, mupdf_page_header *h)
+ char *p;
+
+ p = strchr(buf+19,':');
+- h->NumCopies = atoi(p+1);
++ if (p) {
++ h->NumCopies = atoi(p+1);
++ }
+ } else if (strncmp(buf,"%%PDFTOPDFCollate",17) == 0) {
+ char *p;
+
+ p = strchr(buf+17,':');
+- while (*p == ' ' || *p == '\t') p++;
+- if (strncasecmp(p,"true",4) == 0) {
+- h->Collate = CUPS_TRUE;
+- } else {
+- h->Collate = CUPS_FALSE;
++ if (p) {
++ p++;
++ while (*p == ' ' || *p == '\t') p++;
++ if (strncasecmp(p,"true",4) == 0) {
++ h->Collate = CUPS_TRUE;
++ } else {
++ h->Collate = CUPS_FALSE;
++ }
+ }
+ }
+ }
+diff --git a/filter/pdftops.c b/filter/pdftops.c
+index 1bfe1a2c7..81ccc983e 100644
+--- filter/pdftops.c
++++ filter/pdftops.c
+@@ -138,25 +138,31 @@ static void parsePDFTOPDFComment(char *filename)
+ if (strncmp(buf,"%%PDFTOPDFNumCopies",19) == 0) {
+ char *p;
+
+- p = strchr(buf+19,':') + 1;
+- while (*p == ' ' || *p == '\t') p++;
+- strncpy(deviceCopies, p, sizeof(deviceCopies));
+- deviceCopies[sizeof(deviceCopies) - 1] = '\0';
+- p = deviceCopies + strlen(deviceCopies) - 1;
+- while (*p == ' ' || *p == '\t' || *p == '\r' || *p == '\n') p--;
+- *(p + 1) = '\0';
+- pdftopdfapplied = 1;
++ p = strchr(buf+19,':');
++ if (p) {
++ p++;
++ while (*p == ' ' || *p == '\t') p++;
++ strncpy(deviceCopies, p, sizeof(deviceCopies));
++ deviceCopies[sizeof(deviceCopies) - 1] = '\0';
++ p = deviceCopies + strlen(deviceCopies) - 1;
++ while (*p == ' ' || *p == '\t' || *p == '\r' || *p == '\n') p--;
++ *(p + 1) = '\0';
++ pdftopdfapplied = 1;
++ }
+ } else if (strncmp(buf,"%%PDFTOPDFCollate",17) == 0) {
+ char *p;
+
+- p = strchr(buf+17,':') + 1;
+- while (*p == ' ' || *p == '\t') p++;
+- if (strncasecmp(p,"true",4) == 0) {
+- deviceCollate = 1;
+- } else {
+- deviceCollate = 0;
++ p = strchr(buf+17,':');
++ if (p) {
++ p++;
++ while (*p == ' ' || *p == '\t') p++;
++ if (strncasecmp(p,"true",4) == 0) {
++ deviceCollate = 1;
++ } else {
++ deviceCollate = 0;
++ }
++ pdftopdfapplied = 1;
+ }
+- pdftopdfapplied = 1;
+ } else if (strcmp(buf,"% This file was generated by pdftopdf") == 0) {
+ pdftopdfapplied = 1;
+ }
+diff --git a/filter/pdftoraster.cxx b/filter/pdftoraster.cxx
+index 1bdde0b1d..7b3af924f 100755
+--- filter/pdftoraster.cxx
++++ filter/pdftoraster.cxx
+@@ -489,16 +489,21 @@ static void parsePDFTOPDFComment(FILE *fp)
+ char *p;
+
+ p = strchr(buf+19,':');
+- deviceCopies = atoi(p+1);
++ if (p) {
++ deviceCopies = atoi(p+1);
++ }
+ } else if (strncmp(buf,"%%PDFTOPDFCollate",17) == 0) {
+ char *p;
+
+ p = strchr(buf+17,':');
+- while (*p == ' ' || *p == '\t') p++;
+- if (strncasecmp(p,"true",4) == 0) {
+- deviceCollate = true;
+- } else {
+- deviceCollate = false;
++ if (p) {
++ p++;
++ while (*p == ' ' || *p == '\t') p++;
++ if (strncasecmp(p,"true",4) == 0) {
++ deviceCollate = true;
++ } else {
++ deviceCollate = false;
++ }
+ }
+ }
+ }
+--
+2.50.1
+
diff --git a/print/cups-filters/files/patch-0002-qpdf12 b/print/cups-filters/files/patch-0002-qpdf12
new file mode 100644
index 000000000000..b1eed7ab207b
--- /dev/null
+++ b/print/cups-filters/files/patch-0002-qpdf12
@@ -0,0 +1,292 @@
+--- configure.ac.orig 2025-08-19 16:30:13 UTC
++++ configure.ac
+@@ -793,9 +793,7 @@ CFLAGS="$CFLAGS -D_GNU_SOURCE"
+ CXXFLAGS="$CXXFLAGS -Wall " # -Weffc++" # TODO: enable when it does not print 1MB of warnings
+ ])
+ CFLAGS="$CFLAGS -D_GNU_SOURCE"
+-CXXFLAGS="$CXXFLAGS -D_GNU_SOURCE -DPOINTERHOLDER_TRANSITION=0"
+-# ^^ Silence deprecation warnings of QPDF 11
+-# See /usr/include/qpdf/PointerHolder.hh
++CXXFLAGS="$CXXFLAGS -D_GNU_SOURCE"
+ CXXFLAGS="$CXXFLAGS -std=c++17" # Needed to build with current QPDF (11.x)
+
+ # ==========================
+--- filter/pdf.cxx.orig 2023-01-25 01:41:08 UTC
++++ filter/pdf.cxx
+@@ -138,7 +138,7 @@ extern "C" void pdf_prepend_stream(pdf_t *pdf,
+ }
+
+ // prepare the new stream which is to be prepended
+- PointerHolder<Buffer> stream_data = PointerHolder<Buffer>(new Buffer(len));
++ std::shared_ptr<Buffer> stream_data = std::shared_ptr<Buffer>(new Buffer(len));
+ memcpy(stream_data->getBuffer(), buf, len);
+ QPDFObjectHandle stream = QPDFObjectHandle::newStream(pdf, stream_data);
+ stream = pdf->makeIndirectObject(stream);
+--- filter/pdftopdf/qpdf_pdftopdf_processor.cc.orig 2023-01-25 01:41:08 UTC
++++ filter/pdftopdf/qpdf_pdftopdf_processor.cc
+@@ -83,10 +83,10 @@ QPDFObjectHandle QPDF_PDFTOPDF_PageHandle::get() // {{
+ page.getKey("/Resources").replaceKey("/XObject",QPDFObjectHandle::newDictionary(xobjs));
+ content.append("Q\n");
+ page.getKey("/Contents").replaceStreamData(content,QPDFObjectHandle::newNull(),QPDFObjectHandle::newNull());
+- page.replaceOrRemoveKey("/Rotate",makeRotate(rotation));
++ page.replaceKey("/Rotate",makeRotate(rotation));
+ } else {
+ Rotation rot=getRotate(page)+rotation;
+- page.replaceOrRemoveKey("/Rotate",makeRotate(rot));
++ page.replaceKey("/Rotate",makeRotate(rot));
+ }
+ page=QPDFObjectHandle(); // i.e. uninitialized
+ return ret;
+@@ -181,9 +181,9 @@ Rotation QPDF_PDFTOPDF_PageHandle::crop(const PageRect
+ page.assertInitialized();
+ Rotation save_rotate = getRotate(page);
+ if(orientation==ROT_0||orientation==ROT_180)
+- page.replaceOrRemoveKey("/Rotate",makeRotate(ROT_90));
++ page.replaceKey("/Rotate",makeRotate(ROT_90));
+ else
+- page.replaceOrRemoveKey("/Rotate",makeRotate(ROT_0));
++ page.replaceKey("/Rotate",makeRotate(ROT_0));
+
+ PageRect currpage= getBoxAsRect(getTrimBox(page));
+ double width = currpage.right-currpage.left;
+@@ -242,7 +242,7 @@ Rotation QPDF_PDFTOPDF_PageHandle::crop(const PageRect
+ //Cropping.
+ // TODO: Borders are covered by the image. buffer space?
+ page.replaceKey("/TrimBox",makeBox(currpage.left,currpage.bottom,currpage.right,currpage.top));
+- page.replaceOrRemoveKey("/Rotate",makeRotate(save_rotate));
++ page.replaceKey("/Rotate",makeRotate(save_rotate));
+ return getRotate(page);
+ }
+
+@@ -251,14 +251,14 @@ bool QPDF_PDFTOPDF_PageHandle::is_landscape(Rotation o
+ page.assertInitialized();
+ Rotation save_rotate = getRotate(page);
+ if(orientation==ROT_0||orientation==ROT_180)
+- page.replaceOrRemoveKey("/Rotate",makeRotate(ROT_90));
++ page.replaceKey("/Rotate",makeRotate(ROT_90));
+ else
+- page.replaceOrRemoveKey("/Rotate",makeRotate(ROT_0));
++ page.replaceKey("/Rotate",makeRotate(ROT_0));
+
+ PageRect currpage= getBoxAsRect(getTrimBox(page));
+ double width = currpage.right-currpage.left;
+ double height = currpage.top-currpage.bottom;
+- page.replaceOrRemoveKey("/Rotate",makeRotate(save_rotate));
++ page.replaceKey("/Rotate",makeRotate(save_rotate));
+ if(width>height)
+ return true;
+ return false;
+@@ -662,7 +662,7 @@ void QPDF_PDFTOPDF_Processor::autoRotateAll(bool dst_l
+ // TODO? other rotation direction, e.g. if (src_rot==ROT_0)&&(param.orientation==ROT_270) ... etc.
+ // rotation=ROT_270;
+
+- page.replaceOrRemoveKey("/Rotate",makeRotate(src_rot+rotation));
++ page.replaceKey("/Rotate",makeRotate(src_rot+rotation));
+ }
+ }
+ }
+--- filter/pdftopdf/qpdf_xobject.cc.orig 2025-08-19 16:30:13 UTC
++++ filter/pdftopdf/qpdf_xobject.cc
+@@ -138,7 +138,7 @@ QPDFObjectHandle makeXObject(QPDF *pdf,QPDFObjectHandl
+
+ std::vector<QPDFObjectHandle> contents=page.getPageContents(); // (will assertPageObject)
+
+- auto ph=PointerHolder<QPDFObjectHandle::StreamDataProvider>(new CombineFromContents_Provider(contents));
++ auto ph=std::shared_ptr<QPDFObjectHandle::StreamDataProvider>(new CombineFromContents_Provider(contents));
+ ret.replaceStreamData(ph,filter,decode_parms);
+
+ return ret;
+--- filter/rastertopdf.cpp.orig 2023-01-25 01:41:08 UTC
++++ filter/rastertopdf.cpp
+@@ -310,10 +310,10 @@ struct pdf_info
+ std::vector<std::string> pclm_source_resolution_supported;
+ std::string pclm_source_resolution_default;
+ std::string pclm_raster_back_side;
+- std::vector< PointerHolder<Buffer> > pclm_strip_data;
++ std::vector< std::shared_ptr<Buffer> > pclm_strip_data;
+ std::string render_intent;
+ cups_cspace_t color_space;
+- PointerHolder<Buffer> page_data;
++ std::shared_ptr<Buffer> page_data;
+ double page_width,page_height;
+ OutFormatType outformat;
+ };
+@@ -442,7 +442,7 @@ QPDFObjectHandle embedIccProfile(QPDF &pdf)
+ std::map<std::string,QPDFObjectHandle> streamdict;
+ std::string n_value = "";
+ std::string alternate_cs = "";
+- PointerHolder<Buffer>ph;
++ std::shared_ptr<Buffer>ph;
+
+ #ifdef USE_LCMS1
+ size_t profile_size;
+@@ -481,7 +481,7 @@ QPDFObjectHandle embedIccProfile(QPDF &pdf)
+ cmsSaveProfileToMem(colorProfile, buff, &profile_size);
+
+ // Write ICC profile buffer into PDF
+- ph = new Buffer(buff, profile_size);
++ ph = std::shared_ptr<Buffer>(new Buffer(buff, profile_size));
+ iccstream = QPDFObjectHandle::newStream(&pdf, ph);
+ iccstream.replaceDict(QPDFObjectHandle::newDictionary(streamdict));
+
+@@ -605,7 +605,7 @@ QPDFObjectHandle getCalGrayArray(double wp[3], double
+ * O - std::vector of QPDFObjectHandle
+ * I - QPDF object
+ * I - number of strips per page
+- * I - std::vector of PointerHolder<Buffer> containing data for each strip
++ * I - std::vector of std::shared_ptr<Buffer> containing data for each strip
+ * I - strip width
+ * I - strip height
+ * I - color space
+@@ -613,7 +613,7 @@ makePclmStrips(QPDF &pdf, unsigned num_strips,
+ */
+ std::vector<QPDFObjectHandle>
+ makePclmStrips(QPDF &pdf, unsigned num_strips,
+- std::vector< PointerHolder<Buffer> > &strip_data,
++ std::vector< std::shared_ptr<Buffer> > &strip_data,
+ std::vector<CompressionMethod> &compression_methods,
+ unsigned width, std::vector<unsigned>& strip_height, cups_cspace_t cs, unsigned bpc)
+ {
+@@ -679,7 +679,7 @@ makePclmStrips(QPDF &pdf, unsigned num_strips,
+ Pl_Flate pflate("pflate", &psink, Pl_Flate::a_deflate);
+ pflate.write(strip_data[i]->getBuffer(), strip_data[i]->getSize());
+ pflate.finish();
+- ret[i].replaceStreamData(PointerHolder<Buffer>(psink.getBuffer()),
++ ret[i].replaceStreamData(std::shared_ptr<Buffer>(psink.getBuffer()),
+ QPDFObjectHandle::newName("/FlateDecode"),QPDFObjectHandle::newNull());
+ }
+ else if (compression == RLE_DECODE)
+@@ -687,7 +687,7 @@ makePclmStrips(QPDF &pdf, unsigned num_strips,
+ Pl_RunLength prle("prle", &psink, Pl_RunLength::a_encode);
+ prle.write(strip_data[i]->getBuffer(),strip_data[i]->getSize());
+ prle.finish();
+- ret[i].replaceStreamData(PointerHolder<Buffer>(psink.getBuffer()),
++ ret[i].replaceStreamData(std::shared_ptr<Buffer>(psink.getBuffer()),
+ QPDFObjectHandle::newName("/RunLengthDecode"),QPDFObjectHandle::newNull());
+ }
+ else if (compression == DCT_DECODE)
+@@ -695,7 +695,7 @@ makePclmStrips(QPDF &pdf, unsigned num_strips,
+ Pl_DCT pdct("pdct", &psink, width, strip_height[i], components, color_space);
+ pdct.write(strip_data[i]->getBuffer(),strip_data[i]->getSize());
+ pdct.finish();
+- ret[i].replaceStreamData(PointerHolder<Buffer>(psink.getBuffer()),
++ ret[i].replaceStreamData(std::shared_ptr<Buffer>(psink.getBuffer()),
+ QPDFObjectHandle::newName("/DCTDecode"),QPDFObjectHandle::newNull());
+ }
+ }
+@@ -703,7 +703,7 @@ makePclmStrips(QPDF &pdf, unsigned num_strips,
+ }
+ #endif
+
+-QPDFObjectHandle makeImage(QPDF &pdf, PointerHolder<Buffer> page_data, unsigned width,
++QPDFObjectHandle makeImage(QPDF &pdf, std::shared_ptr<Buffer> page_data, unsigned width,
+ unsigned height, std::string render_intent, cups_cspace_t cs, unsigned bpc)
+ {
+ QPDFObjectHandle ret = QPDFObjectHandle::newStream(&pdf);
+@@ -843,7 +843,7 @@ QPDFObjectHandle makeImage(QPDF &pdf, PointerHolder<Bu
+ pflate.write(page_data->getBuffer(),page_data->getSize());
+ pflate.finish();
+
+- ret.replaceStreamData(PointerHolder<Buffer>(psink.getBuffer()),
++ ret.replaceStreamData(std::shared_ptr<Buffer>(psink.getBuffer()),
+ QPDFObjectHandle::newName("/FlateDecode"),QPDFObjectHandle::newNull());
+ #else
+ ret.replaceStreamData(page_data,QPDFObjectHandle::newNull(),QPDFObjectHandle::newNull());
+@@ -857,7 +857,7 @@ void finish_page(struct pdf_info * info)
+ if (info->outformat == OUTPUT_FORMAT_PDF)
+ {
+ // Finish previous PDF Page
+- if(!info->page_data.getPointer())
++ if(!info->page_data.get())
+ return;
+
+ QPDFObjectHandle image = makeImage(info->pdf, info->page_data, info->width, info->height, info->render_intent, info->color_space, info->bpc);
+@@ -874,7 +874,7 @@ void finish_page(struct pdf_info * info)
+ return;
+
+ for (size_t i = 0; i < info->pclm_strip_data.size(); i ++)
+- if(!info->pclm_strip_data[i].getPointer())
++ if(!info->pclm_strip_data[i].get())
+ return;
+
+ std::vector<QPDFObjectHandle> strips = makePclmStrips(info->pdf, info->pclm_num_strips, info->pclm_strip_data, info->pclm_compression_method_preferred, info->width, info->pclm_strip_height, info->color_space, info->bpc);
+@@ -932,7 +932,7 @@ void finish_page(struct pdf_info * info)
+ #endif
+
+ // bookkeeping
+- info->page_data = PointerHolder<Buffer>();
++ info->page_data = std::shared_ptr<Buffer>();
+ #ifdef QPDF_HAVE_PCLM
+ info->pclm_strip_data.clear();
+ #endif
+@@ -1101,12 +1101,12 @@ int add_pdf_page(struct pdf_info * info, int pagen, un
+ die("Page too big");
+ }
+ if (info->outformat == OUTPUT_FORMAT_PDF)
+- info->page_data = PointerHolder<Buffer>(new Buffer(info->line_bytes*info->height));
++ info->page_data = std::shared_ptr<Buffer>(new Buffer(info->line_bytes*info->height));
+ else if (info->outformat == OUTPUT_FORMAT_PCLM)
+ {
+ // reserve space for PCLm strips
+ for (size_t i = 0; i < info->pclm_num_strips; i ++)
+- info->pclm_strip_data[i] = PointerHolder<Buffer>(new Buffer(info->line_bytes*info->pclm_strip_height[i]));
++ info->pclm_strip_data[i] = std::shared_ptr<Buffer>(new Buffer(info->line_bytes*info->pclm_strip_height[i]));
+ }
+
+ QPDFObjectHandle page = QPDFObjectHandle::parse(
+--- filter/urftopdf.cpp.orig 2023-01-25 01:41:08 UTC
++++ filter/urftopdf.cpp
+@@ -80,7 +80,7 @@ struct pdf_info
+ unsigned pixel_bytes;
+ unsigned line_bytes;
+ unsigned bpp;
+- PointerHolder<Buffer> page_data;
++ std::shared_ptr<Buffer> page_data;
+ double page_width,page_height;
+ };
+
+@@ -119,7 +119,7 @@ enum ColorSpace {
+ iprintf("Created temporary file '%s'\n", tempfile_name);
+ */
+
+-QPDFObjectHandle makeImage(QPDF &pdf, PointerHolder<Buffer> page_data, unsigned width, unsigned height, ColorSpace cs, unsigned bpc)
++QPDFObjectHandle makeImage(QPDF &pdf, std::shared_ptr<Buffer> page_data, unsigned width, unsigned height, ColorSpace cs, unsigned bpc)
+ {
+ QPDFObjectHandle ret = QPDFObjectHandle::newStream(&pdf);
+
+@@ -153,7 +153,7 @@ QPDFObjectHandle makeImage(QPDF &pdf, PointerHolder<Bu
+
+ // /Filter /FlateDecode
+ // /DecodeParms [<</Predictor 1 /Colors 1[3] /BitsPerComponent $bits /Columns $x>>] ??
+- ret.replaceStreamData(PointerHolder<Buffer>(psink.getBuffer()),
++ ret.replaceStreamData(std::shared_ptr<Buffer>(psink.getBuffer()),
+ QPDFObjectHandle::newName("/FlateDecode"),QPDFObjectHandle::newNull());
+ #else
+ ret.replaceStreamData(page_data,QPDFObjectHandle::newNull(),QPDFObjectHandle::newNull());
+@@ -165,7 +165,7 @@ void finish_page(struct pdf_info * info)
+ void finish_page(struct pdf_info * info)
+ {
+ //Finish previous Page
+- if(!info->page_data.getPointer())
++ if(!info->page_data.get())
+ return;
+
+ QPDFObjectHandle image = makeImage(info->pdf, info->page_data, info->width, info->height, DEVICE_RGB, 8);
+@@ -182,7 +182,7 @@ void finish_page(struct pdf_info * info)
+ info->page.getKey("/Contents").replaceStreamData(content,QPDFObjectHandle::newNull(),QPDFObjectHandle::newNull());
+
+ // bookkeeping
+- info->page_data = PointerHolder<Buffer>();
++ info->page_data = std::shared_ptr<Buffer>();
+ }
+
+ int add_pdf_page(struct pdf_info * info, int pagen, unsigned width, unsigned height, int bpp, unsigned dpi)
+@@ -199,7 +199,7 @@ int add_pdf_page(struct pdf_info * info, int pagen, un
+ if (info->height > (std::numeric_limits<unsigned>::max() / info->line_bytes)) {
+ die("Page too big");
+ }
+- info->page_data = PointerHolder<Buffer>(new Buffer(info->line_bytes*info->height));
++ info->page_data = std::shared_ptr<Buffer>(new Buffer(info->line_bytes*info->height));
+
+ QPDFObjectHandle page = QPDFObjectHandle::parse(
+ "<<"
diff --git a/print/cups-filters/files/patch-cupsfilters_colormanager.c b/print/cups-filters/files/patch-cupsfilters_colormanager.c
index 3b1b190005e7..e64c483e507a 100644
--- a/print/cups-filters/files/patch-cupsfilters_colormanager.c
+++ b/print/cups-filters/files/patch-cupsfilters_colormanager.c
@@ -1,4 +1,4 @@
---- cupsfilters/colormanager.c.orig 2018-10-03 20:12:51 UTC
+--- cupsfilters/colormanager.c.orig 2023-01-25 01:41:08 UTC
+++ cupsfilters/colormanager.c
@@ -26,6 +26,7 @@ MIT Open Source License - http://www.opensource.org/
*/
@@ -15,5 +15,5 @@
- "%s/profiles/%s", CUPSDATA, attr->value);
+ "%s/profiles/%s", CUPS_DATADIR, attr->value);
else {
- strncpy(full_path, attr->value, sizeof(full_path));
+ strncpy(full_path, attr->value, sizeof(full_path) - 1);
if (strlen(attr->value) > 1023)
diff --git a/print/gspdf/Makefile b/print/gspdf/Makefile
index 6aed3e1ae9d6..8b4e795c1a2d 100644
--- a/print/gspdf/Makefile
+++ b/print/gspdf/Makefile
@@ -1,6 +1,6 @@
PORTNAME= gspdf
PORTVERSION= 0.5
-PORTREVISION= 12
+PORTREVISION= 13
CATEGORIES= print gnustep
MASTER_SITES= SAVANNAH/gap
DISTNAME= GSPdf-${PORTVERSION}
diff --git a/print/hyperlatex/Makefile b/print/hyperlatex/Makefile
index e79fccc08b2d..7b28bf5fb968 100644
--- a/print/hyperlatex/Makefile
+++ b/print/hyperlatex/Makefile
@@ -1,6 +1,6 @@
PORTNAME= Hyperlatex
DISTVERSION= 2.9a
-PORTREVISION= 25
+PORTREVISION= 26
CATEGORIES= print
MASTER_SITES= SF/${PORTNAME:tl}/${PORTNAME:tl}/2.9a
PKGNAMESUFFIX= ${EMACS_PKGNAMESUFFIX}
diff --git a/print/ipp-usb/Makefile b/print/ipp-usb/Makefile
index 95477e823d42..f1419c64890d 100644
--- a/print/ipp-usb/Makefile
+++ b/print/ipp-usb/Makefile
@@ -1,6 +1,6 @@
PORTNAME= ipp-usb
DISTVERSION= 0.9.24
-PORTREVISION= 5
+PORTREVISION= 6
CATEGORIES= print
MAINTAINER= chuanwei.foo@hotmail.com
diff --git a/print/latex-biber/Makefile b/print/latex-biber/Makefile
index 9e2324903846..4f285e3259df 100644
--- a/print/latex-biber/Makefile
+++ b/print/latex-biber/Makefile
@@ -2,7 +2,7 @@ PORTNAME= biber
# https://sourceforge.net/projects/biblatex-biber/files/biblatex-biber/development/documentation/biber.pdf/download
# Keep this in-sync with biblatex.sty (currently at 3.20).
DISTVERSIONPREFIX= v
-DISTVERSION= 2.20
+DISTVERSION= 2.21
PORTEPOCH= 2
CATEGORIES= print perl5
PKGNAMEPREFIX= latex-
@@ -12,8 +12,8 @@ MAINTAINER= tex@FreeBSD.org
COMMENT= BibTeX replacement for users of BibLaTeX
WWW= https://biblatex-biber.sourceforge.net/
-LICENSE= ART10 GPLv1+
-LICENSE_COMB= dual
+LICENSE= ART10 GPLv1+
+LICENSE_COMB= dual
LICENSE_FILE_ART10= ${WRKSRC}/LICENSE
__DEPENDS= \
diff --git a/print/latex-biber/distinfo b/print/latex-biber/distinfo
index ec3a07de9135..bcd03fce6820 100644
--- a/print/latex-biber/distinfo
+++ b/print/latex-biber/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1744972861
-SHA256 (TeX/plk-biber-v2.20_GH0.tar.gz) = 19f0312e59bf2f5711b8d69b3585a0ca894c36574f086fbb8d53ccd5c0a45ff9
-SIZE (TeX/plk-biber-v2.20_GH0.tar.gz) = 1632745
+TIMESTAMP = 1753536217
+SHA256 (TeX/plk-biber-v2.21_GH0.tar.gz) = 2652cf3ae0abff5fb233aa77f18e70014cc2c70b94a8693c099a3cad9bbb4b20
+SIZE (TeX/plk-biber-v2.21_GH0.tar.gz) = 1650331
diff --git a/print/latex-biber/pkg-plist b/print/latex-biber/pkg-plist
index 613eaa36ad66..a475bd856da5 100644
--- a/print/latex-biber/pkg-plist
+++ b/print/latex-biber/pkg-plist
@@ -1,6 +1,36 @@
+%%PERL5_MAN3%%/Biber.3.gz
+%%PERL5_MAN3%%/Biber::Annotation.3.gz
+%%PERL5_MAN3%%/Biber::Config.3.gz
+%%PERL5_MAN3%%/Biber::Constants.3.gz
+%%PERL5_MAN3%%/Biber::DataList.3.gz
+%%PERL5_MAN3%%/Biber::DataLists.3.gz
+%%PERL5_MAN3%%/Biber::DataModel.3.gz
+%%PERL5_MAN3%%/Biber::Date::Format.3.gz
+%%PERL5_MAN3%%/Biber::Entries.3.gz
+%%PERL5_MAN3%%/Biber::Entry.3.gz
+%%PERL5_MAN3%%/Biber::Entry::Name.3.gz
+%%PERL5_MAN3%%/Biber::Entry::Names.3.gz
+%%PERL5_MAN3%%/Biber::Input::file::biblatexml.3.gz
+%%PERL5_MAN3%%/Biber::Input::file::bibtex.3.gz
+%%PERL5_MAN3%%/Biber::Internals.3.gz
+%%PERL5_MAN3%%/Biber::LaTeX::Recode.3.gz
+%%PERL5_MAN3%%/Biber::LangTag.3.gz
+%%PERL5_MAN3%%/Biber::LangTags.3.gz
+%%PERL5_MAN3%%/Biber::Output::base.3.gz
+%%PERL5_MAN3%%/Biber::Output::bbl.3.gz
+%%PERL5_MAN3%%/Biber::Output::bblxml.3.gz
+%%PERL5_MAN3%%/Biber::Output::biblatexml.3.gz
+%%PERL5_MAN3%%/Biber::Output::bibtex.3.gz
+%%PERL5_MAN3%%/Biber::Output::dot.3.gz
+%%PERL5_MAN3%%/Biber::Section.3.gz
+%%PERL5_MAN3%%/Biber::Sections.3.gz
+%%PERL5_MAN3%%/Biber::UCollate.3.gz
+%%PERL5_MAN3%%/Biber::Utils.3.gz
+%%PERL5_MAN1%%/biber.1.gz
bin/biber
%%SITE_PERL%%/Biber.pm
%%SITE_PERL%%/Biber/Annotation.pm
+%%SITE_PERL%%/Biber/CodePage.pm
%%SITE_PERL%%/Biber/Config.pm
%%SITE_PERL%%/Biber/Constants.pm
%%SITE_PERL%%/Biber/DataList.pm
@@ -34,32 +64,3 @@ bin/biber
%%SITE_PERL%%/Biber/biber-tool.conf
%%SITE_PERL%%/Biber/config.rnc
%%SITE_PERL%%/Biber/config.rng
-%%PERL5_MAN1%%/biber.1.gz
-%%PERL5_MAN3%%/Biber.3.gz
-%%PERL5_MAN3%%/Biber::Annotation.3.gz
-%%PERL5_MAN3%%/Biber::Config.3.gz
-%%PERL5_MAN3%%/Biber::Constants.3.gz
-%%PERL5_MAN3%%/Biber::DataList.3.gz
-%%PERL5_MAN3%%/Biber::DataLists.3.gz
-%%PERL5_MAN3%%/Biber::DataModel.3.gz
-%%PERL5_MAN3%%/Biber::Date::Format.3.gz
-%%PERL5_MAN3%%/Biber::Entries.3.gz
-%%PERL5_MAN3%%/Biber::Entry.3.gz
-%%PERL5_MAN3%%/Biber::Entry::Name.3.gz
-%%PERL5_MAN3%%/Biber::Entry::Names.3.gz
-%%PERL5_MAN3%%/Biber::Input::file::biblatexml.3.gz
-%%PERL5_MAN3%%/Biber::Input::file::bibtex.3.gz
-%%PERL5_MAN3%%/Biber::Internals.3.gz
-%%PERL5_MAN3%%/Biber::LaTeX::Recode.3.gz
-%%PERL5_MAN3%%/Biber::LangTag.3.gz
-%%PERL5_MAN3%%/Biber::LangTags.3.gz
-%%PERL5_MAN3%%/Biber::Output::base.3.gz
-%%PERL5_MAN3%%/Biber::Output::bbl.3.gz
-%%PERL5_MAN3%%/Biber::Output::bblxml.3.gz
-%%PERL5_MAN3%%/Biber::Output::biblatexml.3.gz
-%%PERL5_MAN3%%/Biber::Output::bibtex.3.gz
-%%PERL5_MAN3%%/Biber::Output::dot.3.gz
-%%PERL5_MAN3%%/Biber::Section.3.gz
-%%PERL5_MAN3%%/Biber::Sections.3.gz
-%%PERL5_MAN3%%/Biber::UCollate.3.gz
-%%PERL5_MAN3%%/Biber::Utils.3.gz
diff --git a/print/lilypond-devel/Makefile b/print/lilypond-devel/Makefile
index bb631fc46d25..8ea8f16ba8c1 100644
--- a/print/lilypond-devel/Makefile
+++ b/print/lilypond-devel/Makefile
@@ -1,5 +1,5 @@
PORTNAME= lilypond
-DISTVERSION= 2.25.26
+DISTVERSION= 2.25.27
CATEGORIES= print audio
MASTER_SITES= http://lilypond.org/download/source/v${DISTVERSION:R}/
PKGNAMESUFFIX= -devel
diff --git a/print/lilypond-devel/distinfo b/print/lilypond-devel/distinfo
index de4b6b8077c7..5ff36b44663c 100644
--- a/print/lilypond-devel/distinfo
+++ b/print/lilypond-devel/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1751962168
-SHA256 (lilypond-2.25.26.tar.gz) = cdbd0b54154e765082beea180a61c05973ef11b00541eda28f6c4bf349ff9d99
-SIZE (lilypond-2.25.26.tar.gz) = 19484665
+TIMESTAMP = 1753087284
+SHA256 (lilypond-2.25.27.tar.gz) = 5b917136870c65b1d05461c5ed2822d2c72f4b7d4a24ede1f421dd15f2a2f2db
+SIZE (lilypond-2.25.27.tar.gz) = 19546342
diff --git a/print/p5-PDF-Template/Makefile b/print/p5-PDF-Template/Makefile
index 25bc08939eba..b96dd7e452b8 100644
--- a/print/p5-PDF-Template/Makefile
+++ b/print/p5-PDF-Template/Makefile
@@ -16,4 +16,10 @@ RUN_DEPENDS= pdflib-perl>=0:print/pdflib-perl \
USES= perl5
USE_PERL5= configure
-.include <bsd.port.mk>
+.include <bsd.port.pre.mk>
+
+.if ${PERL_LEVEL} >= 504200
+EXTRA_PATCHES= ${PATCHDIR}/extrapatch-Makefile.PL
+.endif
+
+.include <bsd.port.post.mk>
diff --git a/print/p5-PDF-Template/files/extrapatch-Makefile.PL b/print/p5-PDF-Template/files/extrapatch-Makefile.PL
new file mode 100644
index 000000000000..88447806c06a
--- /dev/null
+++ b/print/p5-PDF-Template/files/extrapatch-Makefile.PL
@@ -0,0 +1,15 @@
+fix sh: Syntax error: Unterminated quoted string
+
+--- Makefile.PL.orig 2025-07-13 09:16:55 UTC
++++ Makefile.PL
+@@ -28,8 +28,8 @@ my $pm_filter = $use_unicode
+ }
+
+ my $pm_filter = $use_unicode
+- ? q{perl -pi -e "s!UNI_YES ! !g;s!UNI_NO !\\#!g"}
+- : q{perl -pi -e "s!UNI_NO ! !g;s!UNI_YES !\\#!g"};
++ ? q{sed -e "s/UNI_YES//g;s/UNI_NO.*//g"}
++ : q{sed -e "s/UNI_NO//g;s/UNI_YES.*//g"};
+
+ WriteMakefile(
+ NAME => 'PDF::Template',
diff --git a/print/paps/Makefile b/print/paps/Makefile
index 2267d0e16160..50d69803b789 100644
--- a/print/paps/Makefile
+++ b/print/paps/Makefile
@@ -1,7 +1,7 @@
PORTNAME= paps
PORTVERSION= 0.8.0
DISTVERSIONPREFIX= v
-PORTREVISION= 2
+PORTREVISION= 3
CATEGORIES= print
PATCH_SITES= ${WWW}/commit/
diff --git a/print/pdf-tools/Makefile b/print/pdf-tools/Makefile
index bd0f0263861b..302d7b504e11 100644
--- a/print/pdf-tools/Makefile
+++ b/print/pdf-tools/Makefile
@@ -1,7 +1,7 @@
PORTNAME= pdf-tools
DISTVERSIONPREFIX= v
DISTVERSION= 1.1.0
-PORTREVISION= 13
+PORTREVISION= 14
CATEGORIES= print elisp
PKGNAMESUFFIX= ${EMACS_PKGNAMESUFFIX}
diff --git a/print/pdfcpu/Makefile b/print/pdfcpu/Makefile
index c2a8fd756cb7..1e1c9c6e6b5a 100644
--- a/print/pdfcpu/Makefile
+++ b/print/pdfcpu/Makefile
@@ -1,7 +1,7 @@
PORTNAME= pdfcpu
DISTVERSIONPREFIX= v
DISTVERSION= 0.11.0
-PORTREVISION= 2
+PORTREVISION= 3
CATEGORIES= print
MAINTAINER= diizzy@FreeBSD.org
diff --git a/print/plasma6-print-manager/distinfo b/print/plasma6-print-manager/distinfo
index e2e7004cd2cb..025f13700afe 100644
--- a/print/plasma6-print-manager/distinfo
+++ b/print/plasma6-print-manager/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1752584471
-SHA256 (KDE/plasma/6.4.3/print-manager-6.4.3.tar.xz) = fdfd7fe3686d937e75c28a4cb901b93f4fa289677ef2eca94a50d83553a32d34
-SIZE (KDE/plasma/6.4.3/print-manager-6.4.3.tar.xz) = 370728
+TIMESTAMP = 1754413473
+SHA256 (KDE/plasma/6.4.4/print-manager-6.4.4.tar.xz) = 23daaa8a939bdb89047576f9e24461a3d16efd8a4556e4d1f0ece576dc2ef79f
+SIZE (KDE/plasma/6.4.4/print-manager-6.4.4.tar.xz) = 371704
diff --git a/print/plutobook/Makefile b/print/plutobook/Makefile
new file mode 100644
index 000000000000..5ca0a1d858ec
--- /dev/null
+++ b/print/plutobook/Makefile
@@ -0,0 +1,39 @@
+PORTNAME= plutobook
+DISTVERSIONPREFIX= v
+DISTVERSION= 0.6.0
+CATEGORIES= print
+
+MAINTAINER= jbo@FreeBSD.org
+COMMENT= Paged HTML rendering library
+WWW= https://github.com/plutoprint/plutobook
+
+LICENSE= MIT
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+LIB_DEPENDS= libcurl.so:ftp/curl \
+ libexpat.so:textproc/expat2 \
+ libfontconfig.so:x11-fonts/fontconfig \
+ libfreetype.so:print/freetype2 \
+ libharfbuzz.so:print/harfbuzz \
+ libicuuc.so:devel/icu \
+ libturbojpeg.so:graphics/libjpeg-turbo \
+ libwebp.so:graphics/webp
+
+USES= compiler:c++20-lang gnome meson pkgconfig
+
+USE_LDCONFIG= yes
+USE_GNOME= cairo
+
+USE_GITHUB= yes
+GH_ACCOUNT= plutoprint
+
+PLIST_SUB= SOVERSION="${DISTVERSION}"
+
+OPTIONS_DEFINE= TOOLS
+OPTIONS_DEFAULT= TOOLS
+OPTIONS_SUB= yes
+TOOLS_DESC= Build CLI tools to convert HTML to PDF or PNG
+
+TOOLS_MESON_ENABLED= tools
+
+.include <bsd.port.mk>
diff --git a/print/plutobook/distinfo b/print/plutobook/distinfo
new file mode 100644
index 000000000000..6a3de85e22a5
--- /dev/null
+++ b/print/plutobook/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1756315516
+SHA256 (plutoprint-plutobook-v0.6.0_GH0.tar.gz) = 6cf367dad24821446b7bb4caec88d7971239f41e51abc22ee362b35a04118408
+SIZE (plutoprint-plutobook-v0.6.0_GH0.tar.gz) = 409596
diff --git a/print/plutobook/pkg-descr b/print/plutobook/pkg-descr
new file mode 100644
index 000000000000..fa2e0b88a219
--- /dev/null
+++ b/print/plutobook/pkg-descr
@@ -0,0 +1,3 @@
+PlutoBook is a robust HTML rendering library tailored for paged media. It takes
+HTML or XML as input, applies CSS stylesheets, and lays out elements across one
+or more pages, which can then be rendered as Bitmap images or PDF documents.
diff --git a/print/plutobook/pkg-plist b/print/plutobook/pkg-plist
new file mode 100644
index 000000000000..7362af0392bc
--- /dev/null
+++ b/print/plutobook/pkg-plist
@@ -0,0 +1,8 @@
+%%TOOLS%%bin/html2pdf
+%%TOOLS%%bin/html2png
+include/plutobook/plutobook.h
+include/plutobook/plutobook.hpp
+lib/libplutobook.so
+lib/libplutobook.so.0
+lib/libplutobook.so.%%SOVERSION%%
+libdata/pkgconfig/plutobook.pc
diff --git a/print/pslib/Makefile b/print/pslib/Makefile
index 82928d1542e3..93e4c3e881fa 100644
--- a/print/pslib/Makefile
+++ b/print/pslib/Makefile
@@ -4,7 +4,7 @@ CATEGORIES= print
MASTER_SITES= SF
DISTFILES= ${DISTNAME}${EXTRACT_SUFX}
-MAINTAINER= alster@vinterdalen.se
+MAINTAINER= alven@FreeBSD.org
COMMENT= C-library for generating multi page PostScript documents
WWW= https://pslib.sourceforge.net/
diff --git a/print/py-fonttools/Makefile b/print/py-fonttools/Makefile
index ffa40711c7ca..077edf5b4814 100644
--- a/print/py-fonttools/Makefile
+++ b/print/py-fonttools/Makefile
@@ -1,6 +1,5 @@
PORTNAME= fonttools
-PORTVERSION= 4.58.5
-PORTREVISION= 1
+PORTVERSION= 4.59.0
CATEGORIES= print python
MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
@@ -19,15 +18,14 @@ TEST_DEPENDS= ${PYTHON_PKGNAMEPREFIX}ufolib2>=0:print/py-ufolib2@${PY_FLAVOR}
USES= python
USE_PYTHON= autoplist concurrent cython pep517
-OPTIONS_DEFINE= GRAPHITE INTERPOLATABLE LXML PLOT REPACKER SYMFONT UFO UNICODE WOFF
-OPTIONS_DEFAULT=LXML UFO UNICODE WOFF
+OPTIONS_DEFINE= GRAPHITE INTERPOLATABLE LXML PLOT REPACKER SYMFONT UNICODE WOFF
+OPTIONS_DEFAULT=LXML UNICODE WOFF
GRAPHITE_DESC= Process graphite type tables in ttLib/tables
INTERPOLATABLE_DESC= Interpolatability support
LXML_DESC= Read/write XML files via lxml (faster/safer than built-in ElementTree)
PLOT_DESC= Visualize DesignSpaceDocument and resulting VariationModel
REPACKER_DESC= Pack GSUB/GPOS tables with harfbuzz repacker
SYMFONT_DESC= Symbolic font statistics analysis
-UFO_DESC= Read/write UFO fonts
UNICODE_DESC= Use latest Unicode Character Database
WOFF_DESC= Compress/uncompress WOFF webfonts
@@ -38,7 +36,6 @@ LXML_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}lxml5>=4.0:devel/py-lxml5@${PY_FLAVOR}
PLOT_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}matplotlib>=0:math/py-matplotlib@${PY_FLAVOR}
REPACKER_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}uharfbuzz>=0.23.0:print/py-uharfbuzz@${PY_FLAVOR}
SYMFONT_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}sympy>=0:math/py-sympy@${PY_FLAVOR}
-UFO_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}fs2>=2.2.0<3:filesystems/py-fs2@${PY_FLAVOR}
WOFF_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}brotli>=1.0.1:archivers/py-brotli@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}zopfli>=0.1.4:archivers/py-zopfli@${PY_FLAVOR}
diff --git a/print/py-fonttools/distinfo b/print/py-fonttools/distinfo
index 18a076ad7f7f..6044798342b3 100644
--- a/print/py-fonttools/distinfo
+++ b/print/py-fonttools/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1751622377
-SHA256 (fonttools-4.58.5.tar.gz) = b2a35b0a19f1837284b3a23dd64fd7761b8911d50911ecd2bdbaf5b2d1b5df9c
-SIZE (fonttools-4.58.5.tar.gz) = 3526243
+TIMESTAMP = 1753265786
+SHA256 (fonttools-4.59.0.tar.gz) = be392ec3529e2f57faa28709d60723a763904f71a2b63aabe14fee6648fe3b14
+SIZE (fonttools-4.59.0.tar.gz) = 3532521
diff --git a/print/py-frescobaldi/Makefile b/print/py-frescobaldi/Makefile
index b2fda03b26f6..e863b7132221 100644
--- a/print/py-frescobaldi/Makefile
+++ b/print/py-frescobaldi/Makefile
@@ -1,7 +1,6 @@
PORTNAME= frescobaldi
DISTVERSIONPREFIX= v
-DISTVERSION= 3.3.0
-PORTREVISION= 3
+DISTVERSION= 4.0.4
CATEGORIES= print kde python
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
@@ -10,17 +9,17 @@ COMMENT= Music score editor for lilypond
WWW= https://www.frescobaldi.org/
LICENSE= GPLv2+
-LICENSE_FILE= ${WRKSRC}/COPYING
+LICENSE_FILE= ${WRKSRC}/LICENSE
+BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}hatchling>0:devel/py-hatchling@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}tox>0:devel/py-tox@${PY_FLAVOR}
RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}python-ly>=0:print/py-python-ly@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}python-poppler-qt5>=0:graphics/py-python-poppler-qt5@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}qpageview>=0:graphics/py-qpageview@${PY_FLAVOR}
-USES= desktop-file-utils gettext gmake pyqt:5 python qmake qt:5
+USES= gettext-tools pyqt:6 python qt:6
USE_GITHUB= yes
-GH_ACCOUNT= frescobaldi
-USE_PYQT= pyqt5 webengine sip:build
-USE_PYTHON= autoplist distutils noflavors
+USE_PYQT= pyqt6 webengine sip:build
+USE_PYTHON= autoplist noflavors pep517
NO_ARCH= yes
@@ -32,6 +31,6 @@ LILYPOND_RUN_DEPENDS= lilypond:print/lilypond-devel
LILYPOND_RUN_DEPENDS_OFF= lilypond:print/lilypond
post-build:
- (cd ${WRKSRC} && ${GMAKE} -C linux)
+ (cd ${WRKSRC} && tox -e linux-generate)
.include <bsd.port.mk>
diff --git a/print/py-frescobaldi/distinfo b/print/py-frescobaldi/distinfo
index b87e69be9bd4..ffd048f5bf6c 100644
--- a/print/py-frescobaldi/distinfo
+++ b/print/py-frescobaldi/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1680092318
-SHA256 (frescobaldi-frescobaldi-v3.3.0_GH0.tar.gz) = 89a1fb73528ef653c4b99af06bbc8d1175d56893d67422b998be8a500fe79c8c
-SIZE (frescobaldi-frescobaldi-v3.3.0_GH0.tar.gz) = 9196964
+TIMESTAMP = 1754917371
+SHA256 (frescobaldi-frescobaldi-v4.0.4_GH0.tar.gz) = 8aa015ab221ac4c03237393f840325553b94df33c82a12a4a743fbacce36dcba
+SIZE (frescobaldi-frescobaldi-v4.0.4_GH0.tar.gz) = 8580069
diff --git a/print/py-frescobaldi/files/patch-frescobaldi__app_portmidi_____init____.py b/print/py-frescobaldi/files/patch-frescobaldi_portmidi_____init____.py
index 7ed521e86959..b4f04a283a6e 100644
--- a/print/py-frescobaldi/files/patch-frescobaldi__app_portmidi_____init____.py
+++ b/print/py-frescobaldi/files/patch-frescobaldi_portmidi_____init____.py
@@ -1,5 +1,5 @@
---- frescobaldi_app/portmidi/__init__.py.orig 2020-12-26 10:15:52 UTC
-+++ frescobaldi_app/portmidi/__init__.py
+--- frescobaldi/portmidi/__init__.py.orig 2020-12-26 10:15:52 UTC
++++ frescobaldi/portmidi/__init__.py
@@ -264,16 +264,7 @@ def _setup():
"""
diff --git a/print/py-pypdf/Makefile b/print/py-pypdf/Makefile
index bf4d526b8a40..29019f7f99b3 100644
--- a/print/py-pypdf/Makefile
+++ b/print/py-pypdf/Makefile
@@ -1,5 +1,5 @@
PORTNAME= pypdf
-PORTVERSION= 5.6.0
+PORTVERSION= 6.0.0
CATEGORIES= print python
MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
diff --git a/print/py-pypdf/distinfo b/print/py-pypdf/distinfo
index 9cec13b60f4a..7918dd6f962f 100644
--- a/print/py-pypdf/distinfo
+++ b/print/py-pypdf/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1749715873
-SHA256 (pypdf-5.6.0.tar.gz) = a4b6538b77fc796622000db7127e4e58039ec5e6afd292f8e9bf42e2e985a749
-SIZE (pypdf-5.6.0.tar.gz) = 5023749
+TIMESTAMP = 1755762927
+SHA256 (pypdf-6.0.0.tar.gz) = 282a99d2cc94a84a3a3159f0d9358c0af53f85b4d28d76ea38b96e9e5ac2a08d
+SIZE (pypdf-6.0.0.tar.gz) = 5033827
diff --git a/print/py-python-ly/Makefile b/print/py-python-ly/Makefile
index 5bec12d0b353..79684798edd0 100644
--- a/print/py-python-ly/Makefile
+++ b/print/py-python-ly/Makefile
@@ -1,6 +1,6 @@
PORTNAME= python-ly
-PORTVERSION= 0.9.8
DISTVERSIONPREFIX= v
+DISTVERSION= 0.9.9
CATEGORIES= print python
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
@@ -11,6 +11,7 @@ WWW= https://github.com/frescobaldi/python-ly
LICENSE= GPLv3
BUILD_DEPENDS= ${PY_SETUPTOOLS} \
+ ${PYTHON_PKGNAMEPREFIX}hatchling>0:devel/py-hatchling@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}wheel>0:devel/py-wheel@${PY_FLAVOR}
USES= python
diff --git a/print/py-python-ly/distinfo b/print/py-python-ly/distinfo
index 97ed224050be..8e14063bb364 100644
--- a/print/py-python-ly/distinfo
+++ b/print/py-python-ly/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1687123539
-SHA256 (frescobaldi-python-ly-v0.9.8_GH0.tar.gz) = bdd64fb947e8804cd7d1eedbd57552a0f1cd3411a7a063ad5ec39db78e8303ad
-SIZE (frescobaldi-python-ly-v0.9.8_GH0.tar.gz) = 250615
+TIMESTAMP = 1736379852
+SHA256 (frescobaldi-python-ly-v0.9.9_GH0.tar.gz) = b64983ab44ec7e580451b8fb929da5d981c3d4a633612239e86ce515c1dd7899
+SIZE (frescobaldi-python-ly-v0.9.9_GH0.tar.gz) = 252206
diff --git a/print/py-python-ly/files/patch-pyproject.toml b/print/py-python-ly/files/patch-pyproject.toml
deleted file mode 100644
index 5a5df8d89eaf..000000000000
--- a/print/py-python-ly/files/patch-pyproject.toml
+++ /dev/null
@@ -1,9 +0,0 @@
---- pyproject.toml.orig 2023-06-16 13:33:13 UTC
-+++ pyproject.toml
-@@ -1,5 +1,5 @@
- [build-system]
--requires = ["setuptools >= 64"]
-+requires = ["setuptools >= 63"]
- build-backend = "setuptools.build_meta"
-
- [project]
diff --git a/print/py-reportlab/Makefile b/print/py-reportlab/Makefile
index 18cf2339bd6b..1d8563ae250d 100644
--- a/print/py-reportlab/Makefile
+++ b/print/py-reportlab/Makefile
@@ -1,10 +1,11 @@
PORTNAME= reportlab
-DISTVERSION= 4.4.2
+DISTVERSION= 4.4.3
CATEGORIES= print python
-MASTER_SITES= PYPI
+MASTER_SITES= PYPI:python \
+ LOCAL/bofh/print/py-${PORTNAME}:pfbfer
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
-DISTFILES= ${DISTNAME}${EXTRACT_SUFX} \
- ${PFBFER}
+DISTFILES= ${DISTNAME}${EXTRACT_SUFX}:python \
+ ${PFBFER}:pfbfer
EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX}
MAINTAINER= bofh@FreeBSD.org
diff --git a/print/py-reportlab/distinfo b/print/py-reportlab/distinfo
index b720ef3ec88c..60667e4adf9e 100644
--- a/print/py-reportlab/distinfo
+++ b/print/py-reportlab/distinfo
@@ -1,5 +1,5 @@
-TIMESTAMP = 1751269339
-SHA256 (reportlab-4.4.2.tar.gz) = fc6283048ddd0781a9db1d671715990e6aa059c8d40ec9baf34294c4bd583a36
-SIZE (reportlab-4.4.2.tar.gz) = 3509063
+TIMESTAMP = 1753371493
+SHA256 (reportlab-4.4.3.tar.gz) = 073b0975dab69536acd3251858e6b0524ed3e087e71f1d0d1895acb50acf9c7b
+SIZE (reportlab-4.4.3.tar.gz) = 3887532
SHA256 (pfbfer-20180109.zip) = 851b431550e866b217317d09dd33b5535ae081200975ad4dd25e80be2af10fec
SIZE (pfbfer-20180109.zip) = 737561
diff --git a/print/qpdf/Makefile b/print/qpdf/Makefile
index 40fe25a13592..b607c036aa6d 100644
--- a/print/qpdf/Makefile
+++ b/print/qpdf/Makefile
@@ -1,6 +1,6 @@
PORTNAME= qpdf
DISTVERSION= 11.10.1
-PORTEPOCH= 1
+PORTEPOCH= 2
CATEGORIES= print
MASTER_SITES= SF
diff --git a/print/qpdf/distinfo b/print/qpdf/distinfo
index fc3d03ecae12..8df4689252f2 100644
--- a/print/qpdf/distinfo
+++ b/print/qpdf/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1741995701
+TIMESTAMP = 1755739232
SHA256 (qpdf-11.10.1.tar.gz) = defca435cf57d26f8a0619864841aa21f5469fddc6eb5662f62d8443021c069d
SIZE (qpdf-11.10.1.tar.gz) = 19497326
diff --git a/print/qpdf/pkg-plist b/print/qpdf/pkg-plist
index 92d8ecc15b81..3758fc8d4556 100644
--- a/print/qpdf/pkg-plist
+++ b/print/qpdf/pkg-plist
@@ -43,8 +43,8 @@ include/qpdf/QPDFNameTreeObjectHelper.hh
include/qpdf/QPDFNumberTreeObjectHelper.hh
include/qpdf/QPDFObjGen.hh
include/qpdf/QPDFObject.hh
-include/qpdf/QPDFObjectHandle_future.hh
include/qpdf/QPDFObjectHandle.hh
+include/qpdf/QPDFObjectHandle_future.hh
include/qpdf/QPDFObjectHelper.hh
include/qpdf/QPDFOutlineDocumentHelper.hh
include/qpdf/QPDFOutlineObjectHelper.hh
diff --git a/print/sioyek/Makefile b/print/sioyek/Makefile
index d3a362c26fd6..55b04a09bf8c 100644
--- a/print/sioyek/Makefile
+++ b/print/sioyek/Makefile
@@ -1,7 +1,7 @@
PORTNAME= sioyek
DISTVERSIONPREFIX= v
DISTVERSION= 2.0.0.20250513
-PORTREVISION= 1
+PORTREVISION= 3
CATEGORIES= print
MAINTAINER= fuz@FreeBSD.org
diff --git a/print/texinfo/Makefile b/print/texinfo/Makefile
index 37c98f07f066..cfd09e9f538a 100644
--- a/print/texinfo/Makefile
+++ b/print/texinfo/Makefile
@@ -1,6 +1,6 @@
PORTNAME= texinfo
PORTVERSION= 7.1
-PORTREVISION= 11
+PORTREVISION= 12
PORTEPOCH= 1
CATEGORIES= print
MASTER_SITES= GNU \
@@ -45,7 +45,7 @@ CPE_VENDOR= gnu
HTMLXREF_CNF_RELDATE= 20250626
TEXI2DVI_RELDATE= 20241223
TEXI2PDF_RELDATE= 20241223
-TEXINFO_TEX_RELDATE= 20250618
+TEXINFO_TEX_RELDATE= 20250711
OPTIONS_DEFINE= NLS
OPTIONS_SUB= yes
diff --git a/print/texinfo/distinfo b/print/texinfo/distinfo
index 427cd742a758..dc49e49bed47 100644
--- a/print/texinfo/distinfo
+++ b/print/texinfo/distinfo
@@ -1,4 +1,4 @@
-TIMESTAMP = 1750959228
+TIMESTAMP = 1753796018
SHA256 (texinfo/texinfo-7.1.tar.xz) = deeec9f19f159e046fdf8ad22231981806dac332cc372f1c763504ad82b30953
SIZE (texinfo/texinfo-7.1.tar.xz) = 5545720
SHA256 (texinfo/htmlxref.cnf-20250626) = 3ffecc1d8941daabd2eec93697a3ced02d68d84425dba6a2e693dffd67cb5cb8
@@ -7,5 +7,5 @@ SHA256 (texinfo/texi2dvi-20241223) = cb8a5fed2801350c093aa5ccb082aa9c315717ec3e8
SIZE (texinfo/texi2dvi-20241223) = 52733
SHA256 (texinfo/texi2pdf-20241223) = cf2aa65ef663811755ff97caffb0e6df7cd65d605779996272fcae8f1886c705
SIZE (texinfo/texi2pdf-20241223) = 1163
-SHA256 (texinfo/texinfo.tex-20250618) = c29c86a0777885ee0da75e1aef8c131070731d1a71d36d2a2767a37f8dd442af
-SIZE (texinfo/texinfo.tex-20250618) = 389333
+SHA256 (texinfo/texinfo.tex-20250711) = 7cbd00e6f00472ce064fdd0a54ceb6d1697069813241e8e9e5c54048db019456
+SIZE (texinfo/texinfo.tex-20250711) = 390002
diff --git a/print/yatex/Makefile b/print/yatex/Makefile
index 159a2a7cc488..058c3a2c147f 100644
--- a/print/yatex/Makefile
+++ b/print/yatex/Makefile
@@ -1,6 +1,6 @@
PORTNAME= yatex
DISTVERSION= 1.83
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES?= print elisp
MASTER_SITES= https://www.yatex.org/
PKGNAMESUFFIX= ${EMACS_PKGNAMESUFFIX}