1CHANGES 2======= 3 4This is a summary of changes made to the reportlab source code for each release. 5Please refer to subversion backlogs (using the release dates) for more details 6or for releases which we have not provide a hig`her level changes list for. 7E.g. to retrieve the changes made between release 3.4 and release 3.5, type:: 8 9 $ hg log -r 54ce2469ba5c 10 11The contributors lists are in no order and apologies to those accidentally not 12mentioned. If we missed you, please let us know! 13 14CHANGES 3.5.68 25/06/2021 15--------------------------- 16 * graphics improve some error messages for renderPM 17 * changed lib.urilt.recursiveImport after errors in python3.10, reflect changes in readJPEGInfo 18 * pdfutils readJPEGInfo extracts dpi if present defaults to (72, 72) 19 * Image flowable allows a useDPI argument 20 * paraparser annotate some errors 21 22CHANGES 3.5.67 12/04/2021 23--------------------------- 24 * Allow unicode PDFString to use encoding directly; fixes bug where colorspace indexes are broken 25 * Ensure PIL images can be size checked 26 27CHANGES 3.5.66 19/03/2021 28--------------------------- 29 * fix obvious bug in renderPS.py cut'n'paste bah :( 30 * fix bug saving to SpooledtemporaryFile's reported by Robert Schroll <rschroll at gmail.com> 31 * fix bug in justified RTL paragraphs example & bugfix contributed by Moshe Uminer <mosheduminer at gmail.com> 32 * fix regex deprecation reported by Jürgen Gmach <juergen.gmach at apis.de> 33 34CHANGES 3.5.65 10/03/2021 35--------------------------- 36 * add yieldNoneSplits utility function 37 * fix BarChart so it lines can have markers and Nones in their data 38 39CHANGES 3.5.64 09/03/2021 40--------------------------- 41 * add ability to have lineplots in barcharts; no support yet for line markers 42 * added checkAttr method to TypedPropertyCollection 43 44CHANGES 3.5.63 05/03/2021 45--------------------------- 46 * ensure setup.py works from sdist; bug reported by Antonio P. Sagitter (sagitter at fedoraproject.org) 47 * restore broken MANIFEST.in somehow overwritten by Robin :( 48 49CHANGES 3.5.62 03/03/2021 50--------------------------- 51 * simplify annotateException and add better error messages for asUnicode/Bytes etc 52 * improve embeddedHyphenation in paragraph.py 53 54CHANGES 3.5.61 25/02/2021 55--------------------------- 56 * add adjustableArrow widget 57 * allow para tag borderPadding attribute 58 * minor cosmetics in renderPM C extension and add fontSize setattr 59 * allow a bounding box constraint in definePath 60 * efficiency savings in text2Path 61 * refactor transformation math and text2Path functionality 62 * allow a renderPM plugin cairo backend package rlPyCairo 63 64CHANGES 3.5.60 22/01/2021 65--------------------------- 66 * Allow legend column control of vertical alignment 67 * Allow renderTextMode attribute in reportlab.graphics.shapes.String 68 * Allow renderTextMode drawString handling in renderPDF/PM/PS/SVG 69 * Some fixes to fillMode handling 70 71CHANGES 3.5.59 04/01/2021 72--------------------------- 73 * Minor changes to table rounded corners; some documentation updates 74 75CHANGES 3.5.58 01/01/2021 76--------------------------- 77 * Allow variant corners in Canvas.roundRect 78 * Allow tables to have rounded corners 79 80CHANGES 3.5.57 27/12/2020 81--------------------------- 82 * added ddfStyle to Label 83 * allowed for embedded(and ordinary)Hyphenation to pre-empt splitting when embeddedHyphenation>=2 84 * fix extension escapePDF so it can handle unicode 85 * fix poundsign in Ean5BarcodeWidget 86 * Table can use __styledWrap__ for sizing 87 * test fixes so 3.9 and 2.7 produce same pdf 88 89CHANGES 3.5.56 10/12/2020 90--------------------------- 91 * added .github action wheel.yml 92 * micro change to userguide doc 93 94RELEASE 3.5.56 01/12/2020 95--------------------------- 96 * micro changes for Big Sur in C extensions 97 * allow Drawing.outDir to be a callable for more control in save method 98 99RELEASE 3.5.55 29/10/2020 100--------------------------- 101 * add trustedHosts and trustedSchemes for url management 102 * deifinitely drop 3.5 support (Jon Ribbens points out it may have happened in 3.5.54). 103 104RELEASE 3.5.54 23/10/2020 105--------------------------- 106 * Allow extra fields in AcroForm suggested by Chris Else ubuntu247 at gmail.com 107 * Allow DocTemplate.\_firstPageTemplateIndex to be a list of PageTemplate ids 108 * improve PageBreak repr 109 * minor changes to travis & appveyor scripts; drop forml support for python 3.5 110 111RELEASE 3.5.53 02/10/2020 112--------------------------- 113 * Fix bug that allowed type 0 postscript commands to persist 114 115RELEASE 3.5.52 01/10/2020 116--------------------------- 117 * add support for DataMatrix barcode 118 119RELEASE 3.5.51 24/09/2020 120--------------------------- 121 * fix malloc(0) issue in \_rl_accel.c \_fp_str thanks to Hans-Peter Jansen <hpj@urpla.net> @ openSUSE 122 123RELEASE 3.5.50 18/09/2020 124--------------------------- 125 * Add BM ExtGState option (suggestion by tjj021 @ github 126 * Fix memory leak in \_renderPM.c 127 128RELEASE 3.5.49 02/09/2020 129--------------------------- 130 * ViewerPreferencesPDFDictionary add /Duplex as possibility 131 * Doctemplate add support for all ViewerPreferencesPDFDictionary keys 132 * fix bugs in USPS_4State; Barcode inherits from Flowable and object. 133 134RELEASE 3.5.48 18/08/2020 135--------------------------- 136 * bug fix for balanced column special case unsplittable half column 137 138RELEASE 3.5.47 7/08/2020 139--------------------------- 140 * try to limit table style cell ranges 141 142RELEASE 3.5.46 22/07/2020 143--------------------------- 144 * fix style-data mismatch in LinePlot found by Anshika Sahay 145 146RELEASE 3.5.45 10/07/2020 147--------------------------- 148 * fix some documentation bugs reported by Lele Gaifax 149 * fix error in BarChart axes joining reported by Faisal.Fareed 150 151RELEASE 3.5.44 26/06/2020 152--------------------------- 153 * ensure qr bar colour is passed (contrib by Lele Gaifax) 154 * fix img layout bug (reported by Lele Gaifax) 155 156RELEASE 3.5.43 03/06/2020 157--------------------------- 158 * small change to improve strokeDashArray handling to allow [phase, [values]] and allow stroke-dashoffset 159 * Hatching class which inherits from shapes.Path 160 * add support for soft hyphens u'\xad' 161 * apply a pr from KENLYST @ bitbucket (gfe.py) 162 163RELEASE 3.5.42 17/03/2020 164-------------------------- 165 * fix bug in tables.py reported by Kamil Niski https://bitbucket.org/rptlab/reportlab/issues/182 & Adam Kalinsky 166 167RELEASE 3.5.41 4/03/2020 168-------------------------- 169 * fix python3 bug in DDIndenter.__getattr__ 170 171RELEASE 3.5.40 28/02/2020 172-------------------------- 173 * fix broken (by robin) simple bar lables found by Djan 174 175RELEASE 3.5.39 26/02/2020 176-------------------------- 177 * allow selection of ttf subfonts by PS name 178 * revert to old style recursiveGetAttr 179 * raise error for problematic Canvas.setDash reported by Mike Carter from sitemorse 180 181RELEASE 3.5.38 14/02/2020 182-------------------------- 183 * bug fix for normalDate monthnames; bump travis; version-->3.5.38 184 185RELEASE 3.5.37 07/02/2020 186-------------------------- 187 * experimental support for 2d pie/doughnut shading 188 189RELEASE 3.5.36 28/01/2020 190-------------------------- 191 * update travis version of multibuild contrib by Matthew Brett 192 * fixes to cope with python 3.9 193 * imrove Drawing formats handling and ensure asString can do svg 194 195RELEASE 3.5.35 22/01/2020 196-------------------------- 197 * test fixes 198 * Label enhancement 199 * added isSubclassOf validator 200 * added CrossHair widget 201 202RELEASE 3.5.34 14/01/2020 203-------------------------- 204 * attempted restriction of the reportlab.lib.color.toColor function 205 206RELEASE 3.5.33 30/10/2019 207-------------------------- 208 * fix bug in Pie3d reported by Eldon Ziegler <eldonz@atlanticdb.com> 209 * fix bug in background splitting in repeatRows cases reported by David VanEe <david.vanee@convergent.ca> 210 * small improvements to CandleSticks 211 * created NotSet validator (use in CandleStickProperties) 212 * update .travis.yml and .appeyor.yml hopefully to create 3.8 wheels 213 214RELEASE 3.5.32 24/10/2019 215-------------------------- 216 * some chart efficiency changes 217 * use clock in fontFinder contributed by Matěj Cepl @ bitbucket 218 * improve recursive access and do some minor eval/exec fixes 219 * improve use of eval/exec 220 221RELEASE 3.5.31 15/10/2019 222-------------------------- 223 * paraparser fix contributed by ravi prakash giri <raviprakashgiri@gmail.com> 224 225RELEASE 3.5.30 15/10/2019 226-------------------------- 227 * better support for candlestick charts using smartGetItem 228 229RELEASE 3.5.29 14/10/2019 230-------------------------- 231 * Support for candlestick charts and infilled pair plots 232 233RELEASE 3.5.28 02/10/2019 234-------------------------- 235 * improve support for AES encryption 236 237RELEASE 3.5.27 01/10/2019 238-------------------------- 239 * fix to justified para splits contributed by Niharika Singh <nsingh@shoobx.com> 240 * fix BalanceColumn width calculation 241 * preliminary support for AES encryption (contributed by https://github.com/talebi1) 242 243RELEASE 3.5.26 17/09/2019 244-------------------------- 245 * micro changes to normalDate 246 * fix warnings about is not (detected in python 3.8b4) 247 * implement PR #59 bug fix contributed by Vytis Banaitis 248 249RELEASE 3.5.25 23/08/2019 250-------------------------- 251 * add recursive ttf searching 252 * sync with rlextra 253 * fix Barchart axis crossing issue reported by Martin Jones (Zeidler) 254 255RELEASE 3.5.24 07/08/2019 256-------------------------- 257 * prepare for python3.8, drop support for python3.4 258 259RELEASE 3.5.23 31/05/2019 260-------------------------- 261 * fix issue #180 raised by Christoph Berg 262 * fix issue #181 raised by Daniel Terecuk 263 * brutalist fix for Marius Gedminas' issue #183 264 * add wordSpace keyword to Canvas draw methods 265 * fix for Marius Gedminas' issue #184 266 267RELEASE 3.5.22 23/05/2019 268-------------------------- 269 * Allow kewords in PDFResourceDictionary 270 * pr #58 issue #174 contribution by Marius Gedminas 271 * Allow AcroForm to have SigFlags 272 * Bug Fixes and tests 273 274RELEASE 3.5.21 3/05/2019 275-------------------------- 276 * fix bug in legends 277 * add extra table info in spanning error case 278 279RELEASE 3.5.20 25/04/2019 280-------------------------- 281 * Preliminary MultiCol implementation 282 * fix missing xrange import 283 * allow rgb to have fractions of 1 in css colors 284 285RELEASE 3.5.19 15/04/2019 286-------------------------- 287 * fix bug with a tag href not having a scheme 288 * all0w LineChart/LinePlot area fills to differe from the stroke colour 289 * add canvas setProducer method 290 291RELEASE 3.5.18 03/04/2019 292-------------------------- 293 * more FrameBG changes vs BalancedColumns 294 * fix bb issues #176/#177 reported by graingert & droidzone 295 296RELEASE 3.5.17 29/03/2019 297-------------------------- 298 * more FrameBG fixes; added canvas cross method, frame static drawBoundary 299 300RELEASE 3.5.16 27/03/2019 301-------------------------- 302 * fix stroking for frame background in container 303 304RELEASE 3.5.15 27/03/2019 305-------------------------- 306 * add stroking for frame background 307 308RELEASE 3.5.14 14/03/2019 309-------------------------- 310 * added axes tickStrokeWidth etc etc 311 312RELEASE 3.5.13 15/01/2019 313-------------------------- 314 * added rl_setting.reserveTTFNotdef inspired by e3office at bitbucket (pr #50) 315 316RELEASE 3.5.12 30/11/2018 317-------------------------- 318 * log axis handles rangeRound & avoidBoundspace 319 * FrameBG can start with "frame" & frame-permanent" start options 320 321RELEASE 3.5.11 20/11/2018 322-------------------------- 323 * Improve log axis ticks & grids 324 * move some samples into tests 325 326 327RELEASE 3.5.10 15/11/2018 328-------------------------- 329 * Bug fix for underline (contrib. Lennart Regebro @ bitbucket) 330 * Paragraph indentation bug fix 331 * Initial support for richtext graphics text labels 332 * Initial support for log axes (ideas from hoel@germanlloyd.org) 333 334RELEASE 3.5.9 01/10/2018 335------------------------- 336 * add hyphenationMinWordLength to address PR #44 (contrib Michael V. Reztsov) 337 338RELEASE 3.5.8 21/09/2018 339------------------------- 340 * Allow structured barLabelFormat (suggestion from Ravinder Baid) 341 342RELEASE 3.5.7 22/08/2018 343------------------------- 344 * Fix tables.py splitting for line comands. 345 346RELEASE 3.5.6 20/08/2018 347------------------------- 348 * Restore DocTemplate seq attribute lost in rev c985bd7093ad (4405) 349 version 3.4.41 bug report from Jim Parinisi jimandkimparinisi@yahoo.com 350 351RELEASE 3.5.5 14/08/2018 352------------------------- 353 * Bug fix underlined space in XPreformatted 354 355RELEASE 3.5.4 06/08/2018 356------------------------- 357 * Bug fix for Paragraph space bugs reported by Kayley Lane 358 * Use local libart code by default (libart 2.3.21-3) 359 360RELEASE 3.5.3 06/07/2018 361------------------------- 362 * Bug fix release to make really simple paras work OK 363 Reported by Kayley.Lane @ oracle.com 364 * Use local libart by default 365 * Use upgrade libart source to 2.3.21-3 https://salsa.debian.org/gnome-team/libart-lgpl@aa059539 366 367RELEASE 3.5.2 23/07/2018 368------------------------- 369 * Bug fix release to make th sdist work properly 370 371RELEASE 3.5.1 17/07/2018 372------------------------- 373 * Bug fix for infinite looping in Paragraph (likely caused by small available Widths). 374 Reported by Kayley.Lane @ oracle.com 375 376RELEASE 3.5 07/07/2018 377----------------------- 378 * BalancedColumns flowable added 379 * primitive hyphenation functionality (with Pyphen installed) 380 * simple paragraphs now allow space shrinkage 381 * mixed parallel / stacked barcharts mechanism 382 * makeStream compression fix for python 3.x 383 * reproducibility fixes 384 * Bugfix for KeepWithNext and None 385 * Fix pie chart issue 386 * allow canvas filename to be a wrapped OS level file 387 * added DocTemplate._makeCanvas 388 * _text2Path fix 389 * AcroForm improvements 390 * added anchorAtXY parameter for images 391 * fix PDF syntax error with no Outlines 392 * fix bullet code 393 * qrencoder fix 394 * table minRowHeights support 395 * stopped abusing builtins to aid compatibility 396 * fix embedded font & fontfinder bugs 397 * fix zero width paragraph layout error 398 * doughnut charts support innerRadiusFraction 399 * more controllable under and strike lines 400 401### Contributors: 402 * Axel P. Kielhorn 403 * ben @ readingtype.org.uk 404 * Chris Jerdonek cjerdonek @ bitbucket 405 * Dan Palmer danpalmer @ bitbucket 406 * Garry Williams gary_williams @ bit_bucket 407 * Greg Svitak 408 * htgoebel @ bitbucket 409 * Johann Du Toit https://bitbucket.org/johanndt/ 410 * Jon Hinton (inivatajon @ bitbucket.org) 411 * Lele Gaifax 412 * lisandrija @ bitbucket.org 413 * lostbard @ bitbucket 414 * Martin J. Laubach bitbucket issue #140 415 * Moritz Pfeiffer moritzpfeiffer @ bitbucket 416 * Raji Sundar 417 * Silas Sewell silassewell @ bitbucket 418 * simonkagwe @ bitbucket 419 * Tom Alexander @ bitbucket 420 * Trevor Bullock 421 * Waldemar Osuch 422 423RELEASE 3.4 07/03/2017 424----------------------- 425 * More pagesizes from https://en.wikipedia.org/wiki/Paper_size (contributed by https://bitbucket.org/alainchiasson/) 426 * add in fillMode (fill-rule) variable to the graphics state for drawings 427 * add support for automatic bullet rotation in ListFlowables. 428 * fix acroform annotation bug in radios (reported by Olivia Zhang) 429 * fix split paragraph rendering bug (reported by Olivia Zhang & Echo Bell) 430 * Allow Image to have a drawing as argument 431 * support for Path autoclose & fillMode; version --> 3.3.29 432 * add support for different fill policies in renderXX drawPath; version-->3.3.28 433 * allow for UTF_16_LE BOM, fix for bug contributed by Michael Poindexter mpoindexter@housecanary.com 434 * improved support for images in renderPM/renderSVG bug report from Claude Paroz 435 * add AcroForm support to canvas; version --> 3.3.22 436 * avoid cr lf line endings 437 * attempt to ensure zipImported has some files or returns None 438 * added additonal test to barcode/test.py 439 * add an invisible font test thanks https://bitbucket.org/kb/ Konstantin Baierer 440 * add mailto href test 441 * improve UPCA barcode contribution by Kyle McFarlane https://bitbucket.org/kylemacfarlane/ 442 * attempt to fix __loader__ issues in pyinstaller suggested by dbrnz @ bitbucket 443 * fix NormalDate comprisons in python3.x 444 * fix ypad use in ParagraphAndImage contrib annamarianfr@bitbucket, version-->3.3.16 445 * try to prevent multiple saving contrib by Tim Meneely 446 * fix problems with svg drawToString contrib by Eric Gillet & Johann Du Toit 447 * fix issue reported by Yitzchak Scott-Thoennes <sthoenna@gmail.com> 448 * fix fake KeepTogether setup in handle_keepWithNext 449 * add NullActionFlowable, fix empty KeepTogether 450 * really merge para-measure-fix 451 * merge para-measure-fix changes 452 * fixes to TypedPropertyCollection 453 * changes to Render class; allow drawings to specify initialFontName/Size 454 * fix python>=3.2 default axis labelling to match python2.x; bugfix contributed by Robin Westin bitbucket issue #82 455 * fix AttributeError reported by Kay Schluehr bitbucket issue #81 456 * add experimental time value axis 457 * fix bug in python shapes rendering 458 * add negative span style to test_platypus_tables splitting example 459 * fix segfault in _rl_accel.c; fix contributed by Neil Schemenauer as issue #78 460 * attempt to remove quadratic performance hit when longTableOptimize is set 461 * allow DATA: scheme in open for read 462 * import Table _rowpositions calculation 463 * support small ttfs which do not allow subsets 464 * add rl_settings allowTTFSubsetting 465 * address issue #76 (deprecated immports) reported by Richard Eames 466 * add table cell support for simple background shadings, contributed by Jeffrey Creem jcreem@bitbucket 467 * fix bug in tables.py reported by Vytis Banaitis @ bitbucket; version-->3.3.2 468 * minor change to allow barWidth setting in ecc200datamatrix.py (suggested by Kyle MacFarlane @ bitbucket) 469 * make paraparser syntax errors real and fix <sup/sub> tags to have relative values; version-->3.3.1 470 * ReportLab now runs all tests under Python 2.7, 3.3, 3.4, 3.5 & 3.6. 471 472### Contributors: 473 * Alain Chiasson https://bitbucket.org/alainchiasson/ 474 * annamarianfr@bitbucket 475 * Claude Paroz 476 * dbrnz @ bitbucket 477 * Dinu Gherman 478 * Echo Bell 479 * Eric Gillet 480 * Jeffrey Creem jcreem@bitbucket 481 * Johann Du Toit 482 * Kay Schluehr bitbucket issue #81 483 * Konstantin Baierer 484 * Kyle McFarlane https://bitbucket.org/kylemacfarlane/ 485 * Michael Poindexter mpoindexter@housecanary.com 486 * Neil Schemenauer 487 * Olivia Zhang 488 * Richard Eames 489 * Robin Westin 490 * Tim Meneely 491 * Vytis Banaitis @ bitbucket 492 * Yitzchak Scott-Thoennes <sthoenna@gmail.com> 493 494 495RELEASE 3.3 17/02/2016 496----------------------- 497 * Canvas & Doctemplate now allow specification of the initial font Name, Size & Leading. Prevously you had to mess with rl_settings to accomplish this. 498 * Canvas & Doctemplate now support specification of the crop/art/trim/bleed boxes. 499 * Add option to auto generate missing TTF font names. Handy for CJKers with home produced fonts. Also attempt to prevent usage of multiple TTFs with same name. 500 * Paragraph styles now have justifyBreaks to control justification of lines broken with <br/>. 501 * Paragraph styles now have justifyLastLine=n to control justification of last lines with more than n words (0 means do not). 502 * Added EAN-5 and ISBN barcode widgets (contribution by Edward Greve). 503 * Bug fix of QrCodeWidget (prompted by https://bitbucket.org/fubu/). 504 * Frames now have support for automatic flowables at the top of frame. story support via the class reportlab.platypus.flowables.SetTopFlowables. 505 * Added support for Trapped and ModDate PDF info dictionary keys. 506 * Bug fix for pie charts with no data (raised by Michael Spector). 507 * New barcodes BarcodeCode128Auto & BarcodeECC200DataMatrix (contributed by Kyle MacFarlane). 508 * Improved LinePlot marker handling. 509 * PyPy improvements inspired by Marius Gedminas. 510 * Bug fix in reportlab.lib.utils.simpleSplit (reported by Chris Buergi <cb@enerweb.ch>). 511 * Unwanted escaping in renderSVG fixed (reported by Ruby Yocum). 512 * Bug fix in _rl_accel.c (remove excess state and fix refcount breakage reported by Mark De Wit <mark.dewit@iesve.com>). 513 * Code128 barcode length optimization inspired by Klaas Feenstra. 514 * Paragraph <sup>/<super> & <sub> tags now support rise & size attributes to allow special control over position & font size. 515 * Splitting tables now remove unwanted styles in the first part of the split (reported by Lele Gaifax). 516 * test changes inspired by https://bitbucket.org/stoneleaf 517 * ReportLab now runs all tests under Python 2.7, 3.3, 3.4 & 3.5. 518 519 520### Contributors: 521 * Edward Greve 522 * https://bitbucket.org/fubu/ 523 * Michael Spector 524 * Kyle MacFarlane 525 * Marius Gedminas 526 * Chris Buergi 527 * Ruby Yocum 528 * Mark de Wit 529 * Klaas Feenstra 530 * Lele Gaifax 531 * https://bitbucket.org/stoneleaf 532 533RELEASE 3.2 01/06/2015 534----------------------- 535 536 * Added proportional underlining specific to font sizes, set via the `underlineProportion` attribute of ParagraphStyles. 537 * TrueType fonts: added support for cmaps 10 & 13 538 * DocTemplate class now supports a boolean `displayDocTitle` argument. 539 * TableofContents now supports a formatter argument to allow formatting of the displayed page numbers (eg for appendices etc). 540 * Table `repeatRows` can now be a tuple of row numbers to allow incomplete ranges of rows to be repeated. 541 * Tables now do pass instance.`spaceBefore` & `spaceAfter` to their split children when split 542 * Several strangenesses were fixed in the pdfbase.pdfform module; Multiple usage is now allowed. 543 * Error message fixes 544 * Various environment fixes for Google Application Environment 545 * Resource fixes 546 * PDFDoc can now set the `Lang` attribute 547 * canvas.drawString and similar now allow the character spacing to be set 548 * Index of accented stuff has been improved 549 * RTL code was improved 550 * fix Propertyset.clone 551 * `flowables.py`: fix ImageAndFlowables so it avoids testing negative availableWidth 552 553### Contributors: 554 * Steven Jacobs 555 * Philip Semanchuk 556 * Marius Gedminas 557 * masklinn 558 * Kale Franz 559 * Albertas Agejavas 560 • Anders Hammarquist 561 * jvanzuela @ bitbucket 562 * Glen Lindermann 563 * Greg Jones 564 * James Bynd 565 * fcoelho @ bitbucket 566 567 568RELEASE 3.1 22/04/2014 569----------------------- 570 571If you are running ReportLab 3.0.x, the changes are minor. 572 * support for emoji - characters outside the Unicode basic multilingual plane 573 * improved pip-based installers will pull in all the needed dependencies; Pillow 2.4 appears to deal with all our issues. 574 575### Contributors 576 * Ivan Tchomgue 577 * Waldemar Osuch 578 * masayuku 579 * alexandrel_sgi 580 581 582RELEASE 3.0 14/02/2014 583----------------------- 584 585ReportLab 3.0 now supports Python 2.7, 3.3 and higher. 586 587There has been a substantial internal rewrite to ensure consistent use of unicode strings for 588 natural-language text, and of bytes for all file format internals. The intent 589 is to make as few API changes as possible so that there should be little or no 590 impact on users and their applications. Changes are too numerous but can be 591 seen on Bitbucket. 592 593### Python 3.x compatibility 594 * Python 3.x compatibility. A single line of code should run on 2.7 and 3.3 595 * __init__.py restricts to 2.7 or >=3.3 596 * __init__.py allow the import of on optional reportlab.local_rl_mods to allow monkey patching etc. 597 * rl_config now imports rl_settings & optionally local_rl_settings 598 * ReportLab C extensions now live inside reportlab; _rl_accel is no longer required; All _rl_accel imports now 599 pass through reportlab.lib.rl_accel 600 * xmllib is gone, alongside the paraparser stuff that caused issues in favour of HTMLParser. 601 * some obsolete C extensions (sgmlop and pyHnj) are gone 602 * Improved support for multi-threaded systems to the _rl_accel extension module. 603 * Removed reportlab/lib/ para.py & pycanvas.py; these would better belong in third party packages, 604 which can make use of the monkeypatching feature above. 605 606 607### New features 608 * Add ability to output greyscale and 1-bit PIL images without conversion to RGB. (contributed by Matthew Duggan) 609 * highlight annotation (contributed by Ben Echols) 610 611### Other 612 * numerous very minor fixes, visible through BitBucket. 613 614 615RELEASE 2.7 04/04/2013 616----------------------- 617 618#### Charts / graphics enhancements 619 * Added SimpleTimeSeriesPlot 620 * added _computeMaxSpace 621 * added in lineStyle (for bars) 622 * improved SVG rendering 623 * Pie Chart now has an `innerRadiusFraction` to allow doughnut-like appearance for 2d charts (it has no effect with 3d charts). 624 The separate 'doughnut' chart lacks many pie chart features and should only be used if you wanted multiple nested doughnuts. 625 626#### Charts/graphics bug fixes 627 * piecharts.py: fix Pie3d __init__ to call its superclass 628 * linecharts.py: fix swatch creation 629 * fixed `y` axis in the simple time series plot 630 631#### PDF 632 * Fixes to testshapes & pdfform resetting 633 * colors.py 634 * various minor fixes 635 636#### Platypus 637 * Defined a small bullet rather than a big circle as the default for unordered lists 638 * fixed attribute spelling bug 639 * fixed CJK + endDots 640 641### Acknowledgements 642 Many thanks to Andrew Cutler, Dinu Gherman, Matthias Kirst and Stephan Richter for their contributions to this release. 643 644 645RELEASE 2.6 27/09/2012 646----------------------- 647 648This is a minor release focusing mainly on improved documentation. There are a 649number of minor enhancements, and a larger number of previous-undocumented 650enhancements which we have documented better. 651 652#### General changes 653 * Manuals have been reformatted with more pleasing code snippets and tables of 654 contents, and reviewed and expanded 655 656#### Flowing documents (Platypus) 657 * Added support for HTML-style list objects 658 * Added flexible mechanism for drawing bullets 659 * Allowed XPreformatted objects to use Asian line wrapping 660 * Added an `autoNextPageTemplate` attribute to PageTemplates. For example you 661 can now set up a 'chapter first page template' which will always be followed 662 by a 'continuation template' on the next page break, saving the programmer from 663 having to issue control flow commands in the story. 664 * added a TopPadder flowable, which will 'wrap' another Flowable and move it 665 to the bottom of the current page. 666 * More helpful error messages when large tables cannot be rendered 667 * Documentation for images within text (`test_032_images`) 668 * Trailing dots for use on contents pages 669 670#### Charts and graphics 671 * Support for UPCA bar codes 672 * We now have a semi-intelligent system for labelling pie charts with 673 callout lines. Thanks to James Martin-Collar, a maths student at Warwick 674 University, who did this as his summer internship. 675 * Axes - added startOffset and endOffset properties; allowed for axis 676 background annotations. 677 * Bar charts - allow more control of z Index (i.e. drawing order of axes and 678 lines) 679 * Pie charts - fixed bugs in 3d appearance 680 * SVG output back end has seen some bugs fixed and now outputs resizeable SVG 681 682### Contributors 683 * Alex Buck 684 * Felix Labrecque <felixl@densi.com> 685 * Peter Johnson <johnson.peter@gmail.com> 686 * James Martin-Collar 687 * Guillaume Francois 688 689 690RELEASE 2.5 at 18:00 GMT 01/Oct/2010 691-------------------------------------- 692 693Many new features have been added and numerous bugs have been fixed. 694 695Thanks to everybody who has contributed to the open-source toolkit in 696the run-up to the 2.5 release, whether by reporting bugs, sending patches, 697or contributing to the reportlab-users mailing list. 698Major contributors are credited in the user documentation. 699 700 * Support for colour separated PDF output and other optimisations and 701 features for high-quality printing, including enforcement of colour 702 models for CMYK, RGB, and "spot colours" 703 * Long table optimisations are now turned on by default. Previously, 704 documents with very long tables spanning many pages could take a long 705 time to create because we considered the whole table to work out row 706 and column sizes. A patch was submitted some time ago to fix this 707 controlled by a flag in the rl_config file, but this was set 'off' 708 for compatibility. Users are often not aware of this and we haven't 709 found any real-world cases where the new layout technique works badly, 710 so we are turning this behaviour on. 711 * New support for QR barcodes - [try our demo!](https://www.reportlab.com/demos/qr/) 712 713#### PDF 714 * Colour separation and other enhancements for high-end print 715 * Python 2.7 support 716 717#### Charts 718 * reportlab.graphics.charts.axes 719 * ValueAxis 720 * avoidBoundSpace - Space to allow above and below 721 * abf_ignore_zero - Set to True to make the avoidBoundFrac calculations treat zero as non-special 722 * keepTickLabelsInside - Ensure tick labels do not project beyond bounds of axis if true 723 * NormalDateXValueAxis 724 * specialTickClear - clear rather than delete close ticks when forced first/end dates 725 * AdjYValueAxis 726 * labelVOffset - add this to the labels 727 * reportlab.graphics.charts.barcharts 728 * BarChart 729 * categoryLabelBarSize - width to leave for a category label to go between categories 730 * categoryLabelBarOrder - where any label bar should appear first/last 731 * barRecord (advanced) - callable(bar,label=labelText,value=value,**kwds) to record bar information 732 * reportlab.graphics.charts.legends 733 * SubColProperty 734 * dx - x offset from default position 735 * dy - y offset from default position 736 * Legend 737 * swdx - x position adjustment for the swatch 738 * swdy - y position adjustment for the swatch 739 * reportlab.graphics.charts.piecharts 740 * Pie 741 * wedgeRecord (advanced) - callable(wedge,*args,**kwds) 742 743 * reportlab.graphics.charts.utils 744 * DrawTimeCollector - generic mechanism for collecting information about nodes at the time they are about to be drawn 745 746 747RELEASE 2.4 at 18:00 GMT 20/Jan/2010 748-------------------------------------- 749 750#### PDF 751 * lots of improvements and verbosity to error messages and the way they are handled. 752 * font size can now be specified in pixels 753 * unicode file names are now accepted 754 755#### Platypus 756 * canvas auto cropmarks 757 * added support for styles h4-h6 758 * Improved support for onDraw and SimpleIndex 759 * Add support for index tableStyle 760 * Added an alphabetic grouping indexing class 761 * Added support for multi-level and alphabetical indexes 762 * Added support for an unlimited number of TOC levels with default styles 763 * Index entries can now be clickable. 764 765#### Graphics 766 * Axes values can be reversible. 767 * Labels on the axes can now be drawn above or below the axes (hi or low). 768 * A per swatch callout is now allowed in the legend. 769 * A new anchroing mode for string 'numeric' that align numerical strings by their decimal place. 770 * Shapes have new attributes to specify if the shape should grow to take all canvas area (vertically or horizontally) or if the canvas should shrink to fit the shape size. 771 * color objects now have a clone method. 772 * colors module has a fade function that returns a list of different shades made up of one base colour. 773 * added in support for Overprint/Opacity & Separated colours 774 775#### Bugs fixes 776 * word counting in complex paragraphs has been fixed. 777 * SimpleIndex and TableOfContents bugs have been fixed. 778 * Fix for position of hyperlinks when crop marks are added. 779 * flowables.py: fix special case of doctemplate with no frames 780 * PDFFormXObject.format missing Resources bug patch from Scott Meyer 781 * KeepInFrame justification bug has been fixed. 782 * paragraph.py: fix linebreaking bug thanks to Roberto Alsina 783 * fix unicode/str issue bug found by Michael Egorov <michwill@gmail.com> 784 * YCategoryAxis makeTickLabels fix contributed by Mike Folwell <mjf@pearson.co.uk> 785 * pdfdoc.py: fix ro PDFDate contributed by Robert Alsina 786 * and others .. 787 788### Contributors 789 * PJACock's (<peter@maubp.freeserve.co.uk>) 790 * Hans Brand 791 * Ian Stevens 792 * Yoann Roman <yroman-reportlab@altalang.com> 793 * Randolph Bentson 794 * Volker Haas 795 * Simon King 796 * Henning Vonbargen 797 * Michael Egorov <michwill@gmail.com> 798 * Mike Folwell <mjf@pearson.co.uk> 799 * Robert Alsina 800 * and more ... 801 802 803RELEASE 2.3 at 18:00 GMT 04/Feb/2009 804-------------------------------------- 805 806#### PDF 807 * Encryption support (see encrypt parameter on Canvas and BaseDocTemplate constructor) 808 809#### Platypus 810 * TableOfContents - Creates clickable tables of contents 811 * Variable border padding for paragraphs (using the borderPadding style attribute) 812 * New programming Flowable, docAssert, used to assert expressions on wrap time. 813 814#### Bug fixes 815 * Fixed old documentation and installation issues 816 * 610 - Fixed Image anchoring code to match documentation 817 * 704 - renderSVG groups problem 818 * 706 - rl_codecs.py now compatible with WordAxe 819 * and others... 820 821### Contributors 822 * Yoann Roman 823 * Dinu Gherman 824 * Dirk Holtwick 825 * Marcel Tromp 826 * Henning von Bargen 827 * Paul Barrass 828 * Adrian Klaver 829 * Hans Brand 830 * Ian Stevens 831 832 833RELEASE 2.2 at 18:00 GMT 10/Sep/2008 834-------------------------------------- 835 836#### PDF 837 * pdfmetrics: Added registerFontFamily function 838 * Basic support for pdf document viewer preferences (e.g.: fullscreen). 839 840#### Platypus 841 * Paragraph <img> tag support for inline images. 842 * Paragraph autoleading support (helps with <img> tags). 843 * Platypus doctemplate programming support. 844 * Support for tables with non-uniform row length. 845 846#### Graphics 847 * RGBA image support for suitable bitmap types. 848 * LTO labelling barcode. 849 850And many bugfixes... 851 852### Contributors 853 * Matt Folwell 854 * Jerome Alet 855 * Harald Armin Massa 856 * kevin@booksys.com 857 * Sebastian Ware 858 * Martin Tate 859 * Wietse Jacobs 860 * Christian Jacobs 861 * Volker Haas 862 * Dinu Gherman 863 * Dirk Datzert 864 * Yuan Hong 865 * Ilpo Nyyss�nen 866 * Thomas Heller 867 * Gael Chardon 868 * Alex Smishlajev 869 * Martin Loewis 870 * Dirk Holtwick 871 * Philippe Makowskic 872 * Ian Sparks 873 * Albertas Agejevas 874 * Gary Poster 875 * Martin Zohlhuber 876 * Francesco Pierfederici 877 * michael@stroeder.com 878 * Derik Barclay 879 * Publio da Costa Melo 880 * Jon Dyte 881 * David Horkoff 882 * picodello@yahoo.it 883 * R�diger M�hl 884 * Paul Winkler 885 * Bernhard Herzog 886 * Alex Martelli 887 * Stuart Bishop 888 * Gael Chardon 889 890 891RELEASE 2.1 at 15:00 GMT 24/May/2007 892-------------------------------------- 893 894### Contributors 895 * Ilpo Nyyss�nen 896 * Thomas Heller 897 * Gael Chardon 898 * Alex Smishlajev 899 * Martin Loewis 900 * Dirk Holtwick 901 * Philippe Makowskic 902 * Dinu Gherman 903 * Ian Sparks 904 905 906RELEASE 2.0 at 15:00 GMT 23/May/2006 907-------------------------------------- 908 909### Contributions 910 * Andre Reitz 911 * Max M 912 * Albertas Agejevas 913 * T Blatter 914 * Ron Peleg 915 * Gary Poster 916 * Steve Halasz 917 * Andrew Mercer 918 * Paul McNett 919 * Chad Miller 920 921### Unicode support 922 923This is the Big One, and the reason some apps may break. You must now pass in 924text either in UTF-8 or as unicode string objects. The library will handle 925everything to do with output encoding. There is more information on this below. 926 927Since this is the biggest change, we'll start by reviewing how it worked in the 928past. In ReportLab 1.x, any string input you passed to our APIs was supposed to 929be in the same encoding as the font you selected for output. If using the 930default fonts in Acrobat Reader (Helvetica/Times/Courier), you would have 931implicitly used WinAnsi encoding, which is almost exactly the same as Latin-1. 932However, if using TrueType fonts, you would have been using UTF-8. For Asian 933fonts, you had a wide choice of encodings but had to specify which one (e.g 934Shift-JIS or EUC for Japanese). This state of affairs meant that you had to 935make sure that every piece of text input was in the same encoding as the font 936used to display it. 937 938With ReportLab 2, none of that necessary. Instead: 939 940Here is what's different now: 941 942#### Input text encoding is UTF-8 or Python Unicode strings 943 944 Any text you pass to a canvas API (drawString etc.), Paragraph or other 945 flowable constructor, into a table cell, or as an attribute of a graphic (e.g. 946 chart.title.text), is supposed to be unicode. If you use a traditional Python 947 string, it is assumed to be UTF-8. If you pass a Unicode object, we know it's 948 unicode. 949 950#### Font encodings 951 952 Fonts still work in different ways, and the built-in ones will still use 953 WinAnsi or MacRoman internally while TrueType will use UTF-8. However, the 954 library hides this from you; it converts as it writes out the PDF file. As 955 before, it's still your job to make sure the font you use has the characters 956 you need, or you may get either a traceback or a visible error character. 957 Asian CID fonts 958 959 You no longer need to specify the encoding for the built-in Asian fonts, 960 just the face name. ReportLab knows about the standard fonts in Adobe's Asian 961 Language Packs. 962 963#### Asian Truetype fonts 964 965 The standard Truetype fonts differ slightly for Asian languages (e.g 966 msmincho.ttc). These can now be read and used, albeit somewhat inefficiently. 967 Asian word wrapping 968 969 Previously we could display strings in Asian languages, but could not 970 properly wrap paragraphs as there are no gaps between the words. We now have a 971 basic word wrapping algorithm. 972 973#### unichar tag 974 975 A convenience tag, <unichar/> has also been added. You can now do <unichar 976 code="0xfc"/> or <unichar name='LATIN SMALL LETTER U WITH DIAERESIS'/> and get 977 a lowercase u umlaut. Names should be those in the Unicode Character Database. 978 Accents, Greeks and symbols 979 980 The correct way to refer to all non-ASCII characters is to use their 981 unicode representation. This can be literal Unicode or UTF-8. Special symbols 982 and Greek letters (collectively, "greeks") inserted in paragraphs using the 983 greek tag (e.g. <greek>lambda</greek>) or using the entity references (e.g. 984 λ) are now processed in a different way than in version 1. Previously, 985 these were always rendered using the Zapf Dingbats font. Now they are always 986 output in the font you specified, unless that font does not support that 987 character. If the font does not support the character, and the font you 988 specified was an Adobe Type 1 font, Zapf Dingbats is used as a fallback. 989 However, at present there is no fallback in the case of TTF fonts. Note that 990 this means that documents that contain greeks and specify a TTF font may need 991 changing to explicitly specify the font to use for the greek character, or you 992 will see a black square in place of that character when you view your PDF 993 output in Acrobat Reader. 994 995### Other New Features 996 997#### PDF 998 999 * Improved low-level annotation support for PDF "free text annotations" 1000 FreeTextAnnotation allows showing and hiding of an arbitrary PDF "form" 1001 (reusable chunk of PDF content) depending on whether the document is printed or 1002 viewed on-screen, or depending on whether the mouse is hovered over the 1003 content, etc. 1004 * TTC font collection files are now readable: 1005 ReportLab now supports using TTF fonts packaged in .TTC files 1006 * East Asian font support (CID and TTF): 1007 You no longer need to specify the encoding for the built-in Asian 1008 fonts, just the face name. ReportLab knows about the standard fonts in Adobe's 1009 Asian Language Packs. 1010 * Native support for JPEG CMYK images: 1011 ReportLab now takes advantage of PDF's native JPEG CMYK image support, 1012 so that JPEG CMYK images are no longer (lossily) converted to RGB format before 1013 including them in PDF. 1014 1015#### Platypus 1016 1017 * Link support in paragraphs: 1018 Platypus paragraphs can now contain link elements, which support both 1019 internal links to the same PDF document, links to other local PDF documents, 1020 and URL links to pages on the web. Some examples: 1021 1022 Web links:: 1023 1024 <link href="http://www.reportlab.com/">ReportLab<link> 1025 1026 Internal link to current PDF document:: 1027 1028 <link href="summary">ReportLab<link> 1029 1030 External link to a PDF document on the local filesystem:: 1031 1032 <link href="pdf:c:/john/report.pdf">ReportLab<link> 1033 1034 * Improved wrapping support: 1035 Support for wrapping arbitrary sequence of flowables around an image, 1036 using reportlab.platypus.flowables.ImageAndFlowables (similar to 1037 ParagraphAndImage). 1038 * `KeepInFrame`: 1039 Sometimes the length of a piece of text you'd like to include in a 1040 fixed piece of page "real estate" is not guaranteed to be constrained to a 1041 fixed maximum length. In these cases, KeepInFrame allows you to specify an 1042 appropriate action to take when the text is too long for the space allocated 1043 for it. In particular, it can shrink the text to fit, mask (truncate) 1044 overflowing text, allow the text to overflow into the rest of the document, or 1045 raise an error. 1046 * Improved convenience features for inserting unicode symbols and other 1047 characters: 1048 `<unichar/>` lets you conveniently insert unicode characters using the 1049 standard long name or code point. Characters inserted with the `<greek>` tags 1050 (e.g. `<greek>lambda</greek>`) or corresponding entity references (e.g. λ) 1051 support arbitrary fonts (rather than only Zapf Dingbats). 1052 * Table spans and splitting improved: 1053 Cell spanning in tables used to go wrong sometimes when the table split 1054 over a page. We believe this is improved, although there are so many table 1055 features that it's hard to define correct behaviour in all cases. 1056 * `KeepWithNext` improved: 1057 Paragraph styles have long had an attribute keepWithNext, but this was 1058 buggy when set to True. We believe this is fixed now. keepWithNext is important 1059 for widows and orphans control; you typically set it to True on headings, to 1060 ensure at least one paragraph appears after the heading and that you don't get 1061 headings alone at the bottom of a column. 1062 1063#### Graphics 1064 * Barcodes: 1065 The barcode package has been added to the standard reportlab 1066 toolkit distribution (it used to live separately in our contributions area). It 1067 has also seen fairly extensive reworking for production use in a recent 1068 project. These changes include adding support for the standard European EAN 1069 barcodes (EAN 8 and EAN13). 1070 * Improvements to Legending: 1071 Instead of manual placement, there is now a attachment point (N, 1072 S, E, W, etc.), so that the legend is always automatically positioned correctly 1073 relative to the chart. Swatches (the small sample squares of colour / pattern 1074 fill sometimes displayed in the legend) can now be automatically created from 1075 the graph data. Legends can now have automatically-computed totals (useful for 1076 financial applications). 1077 * More and better ways to place piechart labels: 1078 New smart algorithms for automatic pie chart label positioning 1079 have been added. You can now produce nice-looking labels without manual 1080 positioning even for awkward cases in big runs of charts. 1081 * Adjustable piechart slice ordering: 1082 For example. pie charts with lots of small slices can be 1083 configured to alternate thin and thick slices to help the label placement 1084 algorithm work better. 1085 * Improved spiderplots 1086 1087#### Noteworthy bug fixes 1088 * Fixes to TTF splitting (patch from Albertas Agejevas): 1089 This affected some documents using font subsetting 1090 * Tables with spans improved splitting: 1091 Splitting of tables across pages did not work correctly when the table had 1092 row/column spans 1093 * Fix runtime error affecting keepWithNext 1094 1095 1096Older releases 1097-------------- 1098 1099Please refer to subversion backlogs for a low level change list 1100 1101 RELEASE 1.20 at 18:00 GMT 25/Nov/2004 1102 RELEASE 1.19 at 18:00 GMT 21/Jan/2004 1103 RELEASE 1.18 at 12:00 GMT 9/Jul/2003 1104 RELEASE 1.17 at 16:00 GMT 3/Jan/2003 1105 RELEASE 1.16 at 16:00 GMT 7/Nov/2002 1106 RELEASE 1.15 at 14:00 GMT 9/Aug/2002 1107 RELEASE 1.14 at 18:00 GMT 28/May/2002 1108 RELEASE 1.13 at 15:00 GMT 27/March/2002 1109 RELEASE 1.12 at 17:00 GMT 28/February/2002 1110 RELEASE 1.11 at 14:00 GMT 12/December/2001 1111 RELEASE 1.10 at 14:00 GMT 06/November/2001 1112 RELEASE 1.09 at 14:00 BST 13/August/2001 1113 RELEASE 1.08 at 12:00 BST 19/June/2001 1114 RELEASE 1.07 at 11:54 BST 2001/05/02 1115 RELEASE 1.06 at 14:00 BST 2001/03/30 1116 RELEASE 1.03 on 2001/02/09 1117 RELEASE 1.02 on 2000/12/11 1118 RELEASE 1.01 on 2000/10/10 1119 RELEASE 1.00 on 2000/07/20 1120 RELEASE 0.95 on 2000/07/14 1121 RELEASE 0.94 on 2000/06/20 1122