Merge branch 'MDL-79665' of https://github.com/paulholden/moodle
This commit is contained in:
@@ -1,3 +1,23 @@
|
||||
6.6.5 (2023-09-06)
|
||||
- Fix corrupted file.
|
||||
|
||||
6.6.4 (2023-09-06)
|
||||
- Fix GitHub automation tests.
|
||||
|
||||
6.6.3 (2023-09-06)
|
||||
- Fix SPDX license ID (#591)
|
||||
- Fix warning "array offset on value of type null" (#620)
|
||||
- Improve the README about the status of this library (#589)
|
||||
- Fix deprecation warning with PHP 8.1 (#614)
|
||||
- Fixes for PHP 8.2 in tcpdf_fonts.php (#632)
|
||||
- Fix some php 8+ edge cases (#630)
|
||||
- Fix composite glyph output (#581)
|
||||
- Fix "access array offset on value of type bool" with PDF/A (#583)
|
||||
- Fix non-numeric value warning (#627)
|
||||
- Fix issues with S25 barcode (#611)
|
||||
- Fix return type annotations (#613)
|
||||
- Fix some inconsistencies in type hints (#598)
|
||||
|
||||
6.6.2 (2022-12-17)
|
||||
- Ensure pregSplit return type is always array.
|
||||
- Add ability to run tests on various operating systems (#566)
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
published by the Free Software Foundation, either version 3 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
2002-2022 Nicola Asuni - Tecnick.com LTD
|
||||
2002-2023 Nicola Asuni - Tecnick.com LTD
|
||||
|
||||
**********************************************************************
|
||||
**********************************************************************
|
||||
|
||||
+3
-4
@@ -6,15 +6,14 @@
|
||||
|
||||
* **category** Library
|
||||
* **author** Nicola Asuni <info@tecnick.com>
|
||||
* **copyright** 2002-2022 Nicola Asuni - Tecnick.com LTD
|
||||
* **copyright** 2002-2023 Nicola Asuni - Tecnick.com LTD
|
||||
* **license** http://www.gnu.org/copyleft/lesser.html GNU-LGPL v3 (see LICENSE.TXT)
|
||||
* **link** http://www.tcpdf.org
|
||||
* **source** https://github.com/tecnickcom/TCPDF
|
||||
|
||||
|
||||
## IMPORTANT
|
||||
A new version of this library is under development at https://github.com/tecnickcom/tc-lib-pdf and as a consequence this version will not receive any additional development or support.
|
||||
This version should be considered obsolete, new projects should use the new version as soon it will become stable.
|
||||
## NOTE
|
||||
A new version of this library is under development at https://github.com/tecnickcom/tc-lib-pdf and as a consequence this library is in support only mode.
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -12,8 +12,8 @@
|
||||
"barcodes"
|
||||
],
|
||||
"homepage": "http://www.tcpdf.org/",
|
||||
"version": "6.6.2",
|
||||
"license": "LGPL-3.0-only",
|
||||
"version": "6.6.5",
|
||||
"license": "LGPL-3.0-or-later",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Nicola Asuni",
|
||||
|
||||
@@ -888,6 +888,7 @@ class QRcode {
|
||||
if ($col >= $this->rsblocks[0]['dataLength']) {
|
||||
$row += $this->b1;
|
||||
}
|
||||
$row = (int) $row;
|
||||
$ret = $this->rsblocks[$row]['data'][$col];
|
||||
} elseif ($this->count < $this->dataLength + $this->eccLength) {
|
||||
$row = ($this->count - $this->dataLength) % $this->blocks;
|
||||
|
||||
@@ -1323,43 +1323,43 @@ class TCPDF_FONTS {
|
||||
// set the checkSumAdjustment to 0
|
||||
$table[$tag]['data'] = substr($table[$tag]['data'], 0, 8)."\x0\x0\x0\x0".substr($table[$tag]['data'], 12);
|
||||
}
|
||||
$pad = 4 - ($table[$tag]['length'] % 4);
|
||||
if ($pad != 4) {
|
||||
// the length of a table must be a multiple of four bytes
|
||||
$table[$tag]['length'] += $pad;
|
||||
$table[$tag]['data'] .= str_repeat("\x0", $pad);
|
||||
}
|
||||
$table[$tag]['offset'] = $offset;
|
||||
$offset += $table[$tag]['length'];
|
||||
$numPad = ($offset + 3 & ~3) - $offset;
|
||||
if($numPad > 0) {
|
||||
$table[$tag]['data'] .= str_repeat("\x0", $numPad);
|
||||
$offset += $numPad;
|
||||
}
|
||||
// check sum is not changed (so keep the following line commented)
|
||||
//$table[$tag]['checkSum'] = self::_getTTFtableChecksum($table[$tag]['data'], $table[$tag]['length']);
|
||||
//$table[$tag]['checkSum'] = self::_getTTFtableChecksum($table[$tag]['data'], $table[$tag]['length'] + $numPad);
|
||||
} else {
|
||||
unset($table[$tag]);
|
||||
}
|
||||
}
|
||||
// add loca
|
||||
$table['loca'] = array();
|
||||
$table['loca']['data'] = $loca;
|
||||
$table['loca']['length'] = strlen($loca);
|
||||
$pad = 4 - ($table['loca']['length'] % 4);
|
||||
if ($pad != 4) {
|
||||
// the length of a table must be a multiple of four bytes
|
||||
$table['loca']['length'] += $pad;
|
||||
$table['loca']['data'] .= str_repeat("\x0", $pad);
|
||||
}
|
||||
$table['loca']['offset'] = $offset;
|
||||
$table['loca']['checkSum'] = self::_getTTFtableChecksum($table['loca']['data'], $table['loca']['length']);
|
||||
$offset += $table['loca']['length'];
|
||||
$numPad = ($offset + 3 & ~3) - $offset;
|
||||
if($numPad > 0) {
|
||||
$table['loca']['data'] .= str_repeat("\x0", $numPad);
|
||||
$offset += $numPad;
|
||||
}
|
||||
$table['loca']['checkSum'] = self::_getTTFtableChecksum($table['loca']['data'], $table['loca']['length'] + $numPad);
|
||||
// add glyf
|
||||
$table['glyf'] = array();
|
||||
$table['glyf']['data'] = $glyf;
|
||||
$table['glyf']['length'] = strlen($glyf);
|
||||
$pad = 4 - ($table['glyf']['length'] % 4);
|
||||
if ($pad != 4) {
|
||||
// the length of a table must be a multiple of four bytes
|
||||
$table['glyf']['length'] += $pad;
|
||||
$table['glyf']['data'] .= str_repeat("\x0", $pad);
|
||||
}
|
||||
$table['glyf']['offset'] = $offset;
|
||||
$table['glyf']['checkSum'] = self::_getTTFtableChecksum($table['glyf']['data'], $table['glyf']['length']);
|
||||
$offset += $table['glyf']['length'];
|
||||
$numPad = ($offset + 3 & ~3) - $offset;
|
||||
if($numPad > 0) {
|
||||
$table['glyf']['data'] .= str_repeat("\x0", $numPad);
|
||||
$offset += $numPad;
|
||||
}
|
||||
$table['glyf']['checkSum'] = self::_getTTFtableChecksum($table['glyf']['data'], $table['glyf']['length'] + $numPad);
|
||||
// rebuild font
|
||||
$font = '';
|
||||
$font .= pack('N', 0x10000); // sfnt version
|
||||
@@ -1383,7 +1383,7 @@ class TCPDF_FONTS {
|
||||
}
|
||||
// set checkSumAdjustment on head table
|
||||
$checkSumAdjustment = 0xB1B0AFBA - self::_getTTFtableChecksum($font, strlen($font));
|
||||
$font = substr($font, 0, $table['head']['offset'] + 8).pack('N', $checkSumAdjustment).substr($font, $table['head']['offset'] + 12);
|
||||
$font = substr($font, 0, $table['head']['offset'] + $offset + 8).pack('N', $checkSumAdjustment).substr($font, $table['head']['offset'] + $offset + 12);
|
||||
return $font;
|
||||
}
|
||||
|
||||
@@ -1780,9 +1780,9 @@ class TCPDF_FONTS {
|
||||
*/
|
||||
public static function UTF8ArrayToUniArray($ta, $isunicode=true) {
|
||||
if ($isunicode) {
|
||||
return array_map(array('TCPDF_FONTS', 'unichrUnicode'), $ta);
|
||||
return array_map(get_called_class().'::unichrUnicode', $ta);
|
||||
}
|
||||
return array_map(array('TCPDF_FONTS', 'unichrASCII'), $ta);
|
||||
return array_map(get_called_class().'::unichrASCII', $ta);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2002,7 +2002,7 @@ class TCPDF_FONTS {
|
||||
if ($isunicode) {
|
||||
// requires PCRE unicode support turned on
|
||||
$chars = TCPDF_STATIC::pregSplit('//','u', $str, -1, PREG_SPLIT_NO_EMPTY);
|
||||
$carr = array_map(array('TCPDF_FONTS', 'uniord'), $chars);
|
||||
$carr = array_map(get_called_class().'::uniord', $chars);
|
||||
} else {
|
||||
$chars = str_split($str);
|
||||
$carr = array_map('ord', $chars);
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
// File name : tcpdf_static.php
|
||||
// Version : 1.1.4
|
||||
// Begin : 2002-08-03
|
||||
// Last Update : 2022-08-12
|
||||
// Last Update : 2023-09-06
|
||||
// Author : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - [email protected]
|
||||
// License : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html)
|
||||
// -------------------------------------------------------------------
|
||||
// Copyright (C) 2002-2022 Nicola Asuni - Tecnick.com LTD
|
||||
// Copyright (C) 2002-2023 Nicola Asuni - Tecnick.com LTD
|
||||
//
|
||||
// This file is part of TCPDF software library.
|
||||
//
|
||||
@@ -55,7 +55,7 @@ class TCPDF_STATIC {
|
||||
* Current TCPDF version.
|
||||
* @private static
|
||||
*/
|
||||
private static $tcpdf_version = '6.6.2';
|
||||
private static $tcpdf_version = '6.6.5';
|
||||
|
||||
/**
|
||||
* String alias for total number of pages.
|
||||
@@ -1780,7 +1780,7 @@ class TCPDF_STATIC {
|
||||
if ($ret === false) {
|
||||
return array();
|
||||
}
|
||||
return $ret;
|
||||
return is_array($ret) ? $ret : array();
|
||||
}
|
||||
// preg_split is bugged - try alternative solution
|
||||
$ret = array();
|
||||
|
||||
+17
-11
@@ -1,13 +1,13 @@
|
||||
<?php
|
||||
//============================================================+
|
||||
// File name : tcpdf.php
|
||||
// Version : 6.6.2
|
||||
// Version : 6.6.5
|
||||
// Begin : 2002-08-03
|
||||
// Last Update : 2022-12-06
|
||||
// Last Update : 2023-09-06
|
||||
// Author : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - [email protected]
|
||||
// License : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html)
|
||||
// -------------------------------------------------------------------
|
||||
// Copyright (C) 2002-2022 Nicola Asuni - Tecnick.com LTD
|
||||
// Copyright (C) 2002-2023 Nicola Asuni - Tecnick.com LTD
|
||||
//
|
||||
// This file is part of TCPDF software library.
|
||||
//
|
||||
@@ -104,7 +104,7 @@
|
||||
* Tools to encode your unicode fonts are on fonts/utils directory.</p>
|
||||
* @package com.tecnick.tcpdf
|
||||
* @author Nicola Asuni
|
||||
* @version 6.6.2
|
||||
* @version 6.6.5
|
||||
*/
|
||||
|
||||
// TCPDF configuration
|
||||
@@ -128,7 +128,7 @@ require_once(dirname(__FILE__).'/include/tcpdf_static.php');
|
||||
* TCPDF project (http://www.tcpdf.org) has been originally derived in 2002 from the Public Domain FPDF class by Olivier Plathey (http://www.fpdf.org), but now is almost entirely rewritten.<br>
|
||||
* @package com.tecnick.tcpdf
|
||||
* @brief PHP class for generating PDF documents without requiring external extensions.
|
||||
* @version 6.6.2
|
||||
* @version 6.6.5
|
||||
* @author Nicola Asuni - info@tecnick.com
|
||||
* @IgnoreAnnotation("protected")
|
||||
* @IgnoreAnnotation("public")
|
||||
@@ -574,12 +574,14 @@ class TCPDF {
|
||||
/**
|
||||
* Minimum distance between header and top page margin.
|
||||
* @protected
|
||||
* @var float
|
||||
*/
|
||||
protected $header_margin;
|
||||
|
||||
/**
|
||||
* Minimum distance between footer and bottom page margin.
|
||||
* @protected
|
||||
* @var float
|
||||
*/
|
||||
protected $footer_margin;
|
||||
|
||||
@@ -2461,7 +2463,7 @@ class TCPDF {
|
||||
*/
|
||||
public function getCellHeight($fontsize, $padding=TRUE) {
|
||||
$height = ($fontsize * $this->cell_height_ratio);
|
||||
if ($padding) {
|
||||
if ($padding && !empty($this->cell_padding)) {
|
||||
$height += ($this->cell_padding['T'] + $this->cell_padding['B']);
|
||||
}
|
||||
return round($height, 6);
|
||||
@@ -3372,7 +3374,7 @@ class TCPDF {
|
||||
/**
|
||||
* Set header margin.
|
||||
* (minimum distance between header and top page margin)
|
||||
* @param int $hm distance in user units
|
||||
* @param float $hm distance in user units
|
||||
* @public
|
||||
*/
|
||||
public function setHeaderMargin($hm=10) {
|
||||
@@ -3392,7 +3394,7 @@ class TCPDF {
|
||||
/**
|
||||
* Set footer margin.
|
||||
* (minimum distance between footer and bottom page margin)
|
||||
* @param int $fm distance in user units
|
||||
* @param float $fm distance in user units
|
||||
* @public
|
||||
*/
|
||||
public function setFooterMargin($fm=10) {
|
||||
@@ -4102,6 +4104,7 @@ class TCPDF {
|
||||
* @param float $fontsize Font size in points. The default value is the current size.
|
||||
* @param boolean $getarray if true returns an array of characters widths, if false returns the total length.
|
||||
* @return float[]|float total string length or array of characted widths
|
||||
* @phpstan-return ($getarray is true ? float[] : float) total string length or array of characted widths
|
||||
* @author Nicola Asuni
|
||||
* @public
|
||||
* @since 1.2
|
||||
@@ -4118,6 +4121,7 @@ class TCPDF {
|
||||
* @param float $fontsize Font size in points. The default value is the current size.
|
||||
* @param boolean $getarray if true returns an array of characters widths, if false returns the total length.
|
||||
* @return float[]|float total string length or array of characted widths
|
||||
* @phpstan-return ($getarray is true ? float[] : float) total string length or array of characted widths
|
||||
* @author Nicola Asuni
|
||||
* @public
|
||||
* @since 2.4.000 (2008-03-06)
|
||||
@@ -6409,7 +6413,7 @@ class TCPDF {
|
||||
// calculate maximum width for a single character on string
|
||||
$chrw = $this->GetArrStringWidth($chars, '', '', 0, true);
|
||||
array_walk($chrw, array($this, 'getRawCharWidth'));
|
||||
$maxchwidth = max($chrw);
|
||||
$maxchwidth = ((is_array($chrw) || $chrw instanceof Countable) && count($chrw) > 0) ? max($chrw) : 0;
|
||||
// get array of chars
|
||||
$uchars = TCPDF_FONTS::UTF8ArrayToUniArray($chars, $this->isunicode);
|
||||
// get the number of characters
|
||||
@@ -6872,6 +6876,8 @@ class TCPDF {
|
||||
}
|
||||
// resize the block to be contained on the remaining available page or column space
|
||||
if ($fitonpage) {
|
||||
// fallback to avoid division by zero
|
||||
$h = $h == 0 ? 1 : $h;
|
||||
$ratio_wh = ($w / $h);
|
||||
if (($y + $h) > $this->PageBreakTrigger) {
|
||||
$h = $this->PageBreakTrigger - $y;
|
||||
@@ -9925,7 +9931,7 @@ class TCPDF {
|
||||
}
|
||||
$out .= ' >> >>';
|
||||
}
|
||||
$font = $this->getFontBuffer('helvetica');
|
||||
$font = $this->getFontBuffer((($this->pdfa_mode) ? 'pdfa' : '') .'helvetica');
|
||||
$out .= ' /DA (/F'.$font['i'].' 0 Tf 0 g)';
|
||||
$out .= ' /Q '.(($this->rtl)?'2':'0');
|
||||
//$out .= ' /XFA ';
|
||||
@@ -22055,7 +22061,7 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value:
|
||||
public function setTextRenderingMode($stroke=0, $fill=true, $clip=false) {
|
||||
// Ref.: PDF 32000-1:2008 - 9.3.6 Text Rendering Mode
|
||||
// convert text rendering parameters
|
||||
if ($stroke < 0) {
|
||||
if ($stroke < 0 || !is_numeric($stroke)) {
|
||||
$stroke = 0;
|
||||
}
|
||||
if ($fill === true) {
|
||||
|
||||
@@ -828,7 +828,7 @@ class TCPDFBarcode {
|
||||
$chr['5'] = '11101011101010';
|
||||
$chr['6'] = '10111011101010';
|
||||
$chr['7'] = '10101011101110';
|
||||
$chr['8'] = '10101110111010';
|
||||
$chr['8'] = '11101010111010';
|
||||
$chr['9'] = '10111010111010';
|
||||
if ($checksum) {
|
||||
// add checksum
|
||||
@@ -838,7 +838,7 @@ class TCPDFBarcode {
|
||||
// add leading zero if code-length is odd
|
||||
$code = '0'.$code;
|
||||
}
|
||||
$seq = '11011010';
|
||||
$seq = '1110111010';
|
||||
$clen = strlen($code);
|
||||
for ($i = 0; $i < $clen; ++$i) {
|
||||
$digit = $code[$i];
|
||||
@@ -848,7 +848,7 @@ class TCPDFBarcode {
|
||||
}
|
||||
$seq .= $chr[$digit];
|
||||
}
|
||||
$seq .= '1101011';
|
||||
$seq .= '111010111';
|
||||
$bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array());
|
||||
return $this->binseq_to_array($seq, $bararray);
|
||||
}
|
||||
|
||||
@@ -175,12 +175,13 @@
|
||||
<location>tcpdf</location>
|
||||
<name>TCPDF</name>
|
||||
<description>Class to generate PDF files</description>
|
||||
<version>6.6.2</version>
|
||||
<version>6.6.5</version>
|
||||
<license>LGPL</license>
|
||||
<licenseversion>3.0-only</licenseversion>
|
||||
<licenseversion>3.0-or-later</licenseversion>
|
||||
<repository>https://github.com/tecnickcom/TCPDF</repository>
|
||||
<copyrights>
|
||||
<copyright>Olivier PLATHEY</copyright>
|
||||
<copyright>Nicola Asuni</copyright>
|
||||
</copyrights>
|
||||
<customised/>
|
||||
</library>
|
||||
|
||||
Reference in New Issue
Block a user