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  &lambda;) 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. &lambda;)
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