| Summary: | Bug 38516 breaks PDF export for basket groups when using API2::PDF < 2.042 | ||
|---|---|---|---|
| Product: | Koha | Reporter: | Katrin Fischer <katrin.fischer> |
| Component: | Acquisitions | Assignee: | David Cook <dcook> |
| Status: | Failed QA --- | QA Contact: | Testopia <testopia> |
| Severity: | critical | ||
| Priority: | P5 - low | CC: | anna.leissle, cornelius.hertfelder, david, dcook, fridolin.somers, nick |
| Version: | Main | ||
| Hardware: | All | ||
| OS: | All | ||
| GIT URL: | Initiative type: | --- | |
| Sponsorship status: | --- | Comma delimited list of Sponsors: | |
| Crowdfunding goal: | 0 | Patch complexity: | --- |
| Documentation contact: | Documentation submission: | ||
| Text to go in the release notes: |
This fixes the PDF export for basket groups when the Debian or Ubuntu operating system is using a version of the API2::PDF Perl module that is less than version 2.042 (includes Debian 11).
An error was generated when using the "Export as PDF" action for basket groups:
Can't locate object method "to_string" via package "PDF::API2" at /usr/share/koha/lib/Koha/pdfformat/layout2pagesde.pm line 250.
(This is related to Bug 38516 - Closed group basket not able to open PDF file with Adobe - The root object is missing or invalid, which is in Koha 25.11.00, 25.05.06, and 24.11.11.)
|
Version(s) released in: | |
| Circulation function: | |||
| Bug Depends on: | 38516 | ||
| Bug Blocks: | |||
| Attachments: |
Bug 41601: Create Koha::PDF::Loader wrapper for PDF::API2
Bug 41601: Create Koha::PDF::Loader wrapper for PDF::API2 Bug 41601: Create Koha::PDF::Loader wrapper for PDF::API2 |
||
|
Description
Katrin Fischer
2026-01-13 14:42:40 UTC
That's fun... but I do have an idea! Created attachment 191398 [details] [review] Bug 41601: Create Koha::PDF::Loader wrapper for PDF::API2 This patch adds a wrapper around PDF::API2 so that we can use the right method names depending on the version of PDF::API2 being used when we're loading in PDF templates Test plan: 0. Apply the patch and koha-plack --restart kohadev 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 there's no error and your PDF opens fine 7. Repeat the "Export as PDF" process for every option of the system preference "OrderPdfFormat". Every option should work without errors. 8. Celebrate! Alternatively, I suppose we could subclass PDF::API2 and use our own namespace for names, but I thought this was a fairly light touch, which works well. The unit test uses both the new and old method names, but this should still be tested on Debian 11 to make sure the automatic method name setting happens. I've only tested this on Debian 12. Created attachment 191591 [details] [review] Bug 41601: Create Koha::PDF::Loader wrapper for PDF::API2 This patch adds a wrapper around PDF::API2 so that we can use the right method names depending on the version of PDF::API2 being used when we're loading in PDF templates Test plan: 0. Apply the patch and koha-plack --restart kohadev 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 there's no error and your PDF opens fine 7. Repeat the "Export as PDF" process for every option of the system preference "OrderPdfFormat". Every option should work without errors. 8. Celebrate! Signed-off-by: David Nind <david@davidnind.com> Testing notes (using KTD): 1. Current main uses Debian 12 (Bookworm) and has PDF::API2 2.044, so you can't reproduce the error. 2. To test with a Debian version that has API2::PDF less than 2.042, start up KTD with Debian 11 (Bullseye) (Debian 11 has 2.038 of the Perl module): . Change your .env file to: KOHA_IMAGE-main-bullseye . ktd pull . ktd up Thanks for the patch David C. and for testing David N.! Created attachment 191793 [details] [review] Bug 41601: Create Koha::PDF::Loader wrapper for PDF::API2 This patch adds a wrapper around PDF::API2 so that we can use the right method names depending on the version of PDF::API2 being used when we're loading in PDF templates Test plan: 0. Apply the patch and koha-plack --restart kohadev 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 there's no error and your PDF opens fine 7. Repeat the "Export as PDF" process for every option of the system preference "OrderPdfFormat". Every option should work without errors. 8. Celebrate! Signed-off-by: David Nind <david@davidnind.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com> Worth noting, the tests fail on bullseye:L not ok 2 - No tests run for subtest "PDF loader tests" # Failed test 'No tests run for subtest "PDF loader tests"' # at /kohadevbox/koha/t/Koha/PDF/Loader.t line 51. invalid method invocation: use 'saveas' instead. at /usr/share/perl5/PDF/API2.pm line 989. as long as we are okay assuming tests will not run on bullseye this seems okay (In reply to Nick Clemens (kidclamp) from comment #8) > Worth noting, the tests fail on bullseye:L > not ok 2 - No tests run for subtest "PDF loader tests" > > # Failed test 'No tests run for subtest "PDF loader tests"' > # at /kohadevbox/koha/t/Koha/PDF/Loader.t line 51. > invalid method invocation: use 'saveas' instead. at > /usr/share/perl5/PDF/API2.pm line 989. > > as long as we are okay assuming tests will not run on bullseye this seems > okay Bullseye is a supported OS so I think we have to fail this one. I'll have to take another look at this.. |