From 7aa2ccdf5fd5f8bb89848afbe05aba0385768f24 Mon Sep 17 00:00:00 2001 From: David Cook Date: Thu, 30 Oct 2025 01:36:53 +0000 Subject: [PATCH] Bug 38516: Use PDF template copy for exporting PDFs Due to a bug in PDF::API2 or related libraries, you cannot export a PDF if you do not have write permission on the PDF template. We bypass this problem by taking a string copy of the PDF template and working on that instead. Test plan: 0. DO NOT APPLY THE PATCH YET 1. chmod 444 /kohadevbox/koha/koha-tmpl/intranet-tmpl/prog/pdf/*.pdf 2. Create a basket with a vendor 3. Add an order to the basket 4. Close basket (and attach the basket to a new basket group with the same name) 5. Go to "Closed" tab and click "Export as PDF" 6. Note that you get an error when you try to open it in Adobe or some other PDF program 7. Apply the patch and restart koha (e.g. koha-plack --restart kohadev) 8. Try to "Export as PDF" again 9. Note that this time there is no warning and your PDF opens just fine 10. Celebrate! --- Koha/pdfformat/layout3pages.pm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Koha/pdfformat/layout3pages.pm b/Koha/pdfformat/layout3pages.pm index 4edff813c8..d17d230882 100644 --- a/Koha/pdfformat/layout3pages.pm +++ b/Koha/pdfformat/layout3pages.pm @@ -455,7 +455,9 @@ sub printpdf { # open the default PDF that will be used for base (1st page already filled) my $pdf_template = C4::Context->config('intrahtdocs') . '/' . C4::Context->preference('template') . '/pdf/layout3pages.pdf'; - my $pdf = PDF::API2->open($pdf_template); + my $pdf_template_obj = PDF::API2->open($pdf_template); + my $pdf_template_str = $pdf_template_obj->to_string(); + my $pdf = PDF::API2->from_string($pdf_template_str); $pdf->pageLabel( 0, { -- 2.39.5