Install
Works with Drupal: ^11 || ^12Using Composer to manage Drupal site dependencies
Alternative installation files
Download tar.gz
37.43 KB
MD5: 3553195ebb9fe5a2b1280f098ac8bc9e
SHA-1: 5a8b6691c6377920c63909eeb344b0b90dd49563
SHA-256: c2f94607105c3ff70e495a9591c5353e36d6e1abbedf0defebdd2742b18a689e
Download zip
56.03 KB
MD5: a74369afa2d25452c53d33b202311b26
SHA-1: 51ae7d150fa7663b95f60baeef47ec6ec6d5a56e
SHA-256: 0bb84ac086dedde0153b925731e7601154920bac4090e0dbbb43c42b97886825
Release notes
Fairly big release. The main addition is appending the export to an existing PDF, and deferred exports got a security overhaul. Read the upgrade notes before updating: deferred exports need the private file system now, and there are a few update hooks.
Before you update
- Run
composer update, the module now depends onsetasign/fpdi^2.6. - Minimum Drupal version is 11.
- Set up the private file system first, then run
drush updb. Without it, exports are generated inline and you'll see a warning in the status report. - Run cron before updating. Deferred exports queued by the old version are discarded (a warning is logged).
- The update hooks move existing exports from
public://views_data_export_tcpdf_exportsto private and delete the public folder. - They also rename the
PDFformat topdfin your views and drop unused options. - Default settings are installed (keep exports 7 days, email users). Check them afterwards.
- Roles that saw other users' exports through "administer users" need the new "View any generated PDF export" permission.
- If cron runs from Drush, pass
--urior the links in notification emails will point to the wrong domain. - PDFs with compressed cross-reference streams (PDF 1.5+) can't be used as templates, the free FPDI parser doesn't support them.
New
- Append the export to an existing PDF, either uploaded or set as the display's default file. Works with deferred exports too.
- Font option: Helvetica, Times, Courier, DejaVu Sans, FreeSans. Use the last two for non-Latin text.
- Tokens in header title, subtitle, address, notes and footer (
[site:name],[view:title],[current-date:short], etc). - Per-field column width (%) and alignment.
- Group rows by a field, with subtotals and a grand total for numeric columns.
- Diagonal watermark (text with tokens, opacity).
- PDF protection with AES-256: open password (tokens allowed), owner password, and allowed actions.
- Email when a deferred export is ready.
- Old deferred exports are deleted on cron, 7 days by default.
- Settings page under Configuration » Content authoring » PDF Views Data Export.
- Drush command:
drush views-data-export-tcpdf:export(aliasvdet-export). - New permission "View any generated PDF export".
- Worker logs go to the
views_data_export_tcpdfchannel. - Config schema and kernel tests.
Security
- Deferred exports were stored in the public file system. They're in
private://now, downloadable only by the owner or users with the new permission. - File names use a cryptographically random suffix.
- Exported rows are no longer stored in the queue. The worker re-runs the view as the requesting user, so access checks apply and blocked users get nothing.
- Anonymous users no longer share deferred exports. Deferred processing is for authenticated users only.
- Uploaded PDFs get renamed instead of overwriting temp files with the same name.
- Uploaded and preselected files are checked by PDF signature and must actually parse, not just match the MIME type.
- Upload errors don't show internal exception messages anymore.
Fixes
- Installing the module restricted every Views Data Export display to PDF. CSV, XLS etc. are back.
- "Current page only" exported everything.
- Export route was missing
display_id. - The selected PDF file was being passed to the view as a contextual argument.
- Fatal error on PDF upload (wrong
FileUploadHandlercall). - Upload validators moved to
FileExtension/FileSizeLimit, the old ones are gone in Drupal 11. - "PDF exports" page gave a 500 instead of 403 for unauthorized users, and used
format_size()which no longer exists in D11. - Going over the row limit threw an error instead of scheduling a deferred export.
- Views were executed and rendered twice per export.
- Deferred exports used a different, unstyled table and ignored field labels.
- Header logo was never made permanent, so file GC could delete it.
&showing up literally in cells (double-encoded entities).- Deferred export failures were silently swallowed.
- Uninstalling could delete entire views that had a PDF display. Now only the PDF displays are removed, along with generated files and pending queue items.
- "Page X of Y", summary, empty text and Yes/No are translatable.
Other changes
- After scheduling a deferred export you're redirected to your exports page.
- Exports page uses a route access check and proper cache metadata.
- Removed unused metadata options (last modified by, description, category, manager, company).
- Added dependency on
file. - Removed hardcoded
versionfromcomposer.jsonand.info.yml, packaging adds it.