Top Banner
Mail merge embedding in LibreOffice Writer By Miklos Vajna Software Engineer at Collabora Productivity 2016-01-30 @CollaboraOffice www.CollaboraOffice.com
19

Mail merge embedding in LibreOffice Writer - FOSDEM · Mail merge embedding in LibreOffice Writer By Miklos Vajna Software Engineer at Collabora Productivity 2016-01-30 @CollaboraOffice

Jun 02, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Mail merge embedding in LibreOffice Writer - FOSDEM · Mail merge embedding in LibreOffice Writer By Miklos Vajna Software Engineer at Collabora Productivity 2016-01-30 @CollaboraOffice

Mail merge embeddingin LibreOffice Writer

By Miklos VajnaSoftware Engineer at Collabora Productivity

2016-01-30

@CollaboraOffice www.CollaboraOffice.com

Page 2: Mail merge embedding in LibreOffice Writer - FOSDEM · Mail merge embedding in LibreOffice Writer By Miklos Vajna Software Engineer at Collabora Productivity 2016-01-30 @CollaboraOffice

2 / 19 FOSDEM 2016, Brussels | Miklos Vajna

About Miklos

● From Hungary● More blurb: http://vmiklos.hu/

● Google Summer of Code 2010/2011● Rewrite of the Writer RTF import/export

● Writer developer since Feb 2012● Contractor at Collabora since Sept 2013

Page 3: Mail merge embedding in LibreOffice Writer - FOSDEM · Mail merge embedding in LibreOffice Writer By Miklos Vajna Software Engineer at Collabora Productivity 2016-01-30 @CollaboraOffice

Embedding a mail merge data source definition

Page 4: Mail merge embedding in LibreOffice Writer - FOSDEM · Mail merge embedding in LibreOffice Writer By Miklos Vajna Software Engineer at Collabora Productivity 2016-01-30 @CollaboraOffice

4 / 19 FOSDEM 2016, Brussels | Miklos Vajna

Embedded objects

● Cross-platform for native data models● Windows-only: OLE● Bitmap (replacement image) + native data● In Writer: text embedded object

● Part of the document body (anchored, etc.)

Page 5: Mail merge embedding in LibreOffice Writer - FOSDEM · Mail merge embedding in LibreOffice Writer By Miklos Vajna Software Engineer at Collabora Productivity 2016-01-30 @CollaboraOffice

5 / 19 FOSDEM 2016, Brussels | Miklos Vajna

Mail mergedata source definition

● Typical use-case:● Real data source● Base document (wrapper): data source

definition

● Global inside LibreOffice● Mail merge uses a data source from this list

Page 6: Mail merge embedding in LibreOffice Writer - FOSDEM · Mail merge embedding in LibreOffice Writer By Miklos Vajna Software Engineer at Collabora Productivity 2016-01-30 @CollaboraOffice

6 / 19 FOSDEM 2016, Brussels | Miklos Vajna

Results #1

● Save your document template● Tools → Mail Merge Wizard● Select Address list → e.g. a .ods file● Edit document

Page 7: Mail merge embedding in LibreOffice Writer - FOSDEM · Mail merge embedding in LibreOffice Writer By Miklos Vajna Software Engineer at Collabora Productivity 2016-01-30 @CollaboraOffice

7 / 19 FOSDEM 2016, Brussels | Miklos Vajna

Results #2

● Insert mail merge fields● Return to the wizard

Page 8: Mail merge embedding in LibreOffice Writer - FOSDEM · Mail merge embedding in LibreOffice Writer By Miklos Vajna Software Engineer at Collabora Productivity 2016-01-30 @CollaboraOffice

8 / 19 FOSDEM 2016, Brussels | Miklos Vajna

Results #3

● Save merged document● Save as single document● Click on save document● Close the merged result, no need to save

Page 9: Mail merge embedding in LibreOffice Writer - FOSDEM · Mail merge embedding in LibreOffice Writer By Miklos Vajna Software Engineer at Collabora Productivity 2016-01-30 @CollaboraOffice

9 / 19 FOSDEM 2016, Brussels | Miklos Vajna

Results #4

● Embedded data source is registered● Close the mail template● Data source definition disappears

Page 10: Mail merge embedding in LibreOffice Writer - FOSDEM · Mail merge embedding in LibreOffice Writer By Miklos Vajna Software Engineer at Collabora Productivity 2016-01-30 @CollaboraOffice

10 / 19 FOSDEM 2016, Brussels | Miklos Vajna

Results #5

● Open the mail template● Embedded data source definition is

registered again

Page 11: Mail merge embedding in LibreOffice Writer - FOSDEM · Mail merge embedding in LibreOffice Writer By Miklos Vajna Software Engineer at Collabora Productivity 2016-01-30 @CollaboraOffice

How is this implemented?

Page 12: Mail merge embedding in LibreOffice Writer - FOSDEM · Mail merge embedding in LibreOffice Writer By Miklos Vajna Software Engineer at Collabora Productivity 2016-01-30 @CollaboraOffice

12 / 19 FOSDEM 2016, Brussels | Miklos Vajna

Embedding a Base document

● dbaccess::ODatabaseDocument● Does not inherit from SfxBaseModel

● dbaccess::ODatabaseContext is the global manager

● No SwOLENode, just OCommonEmbeddedObject

● SwDBManager's StoreEmbeddedDataSource() is the implementation

Page 13: Mail merge embedding in LibreOffice Writer - FOSDEM · Mail merge embedding in LibreOffice Writer By Miklos Vajna Software Engineer at Collabora Productivity 2016-01-30 @CollaboraOffice

13 / 19 FOSDEM 2016, Brussels | Miklos Vajna

ODF filter

● Newly handled parameters:● TargetStorage● StreamRelPath● BaseURI

● dbaxml::ODBFilter is the importer● dbaxml::ODBExport is the export● loadFromStorage() not implemented,

storeToStorage() needed fixing

Page 14: Mail merge embedding in LibreOffice Writer - FOSDEM · Mail merge embedding in LibreOffice Writer By Miklos Vajna Software Engineer at Collabora Productivity 2016-01-30 @CollaboraOffice

14 / 19 FOSDEM 2016, Brussels | Miklos Vajna

Embeddingwithout a text embedded object

● ODatabaseContext owns the doc model● In ODF, settings.xml refers the storage of

the XML streams● It gets registered on load● It gets removed on close

Page 15: Mail merge embedding in LibreOffice Writer - FOSDEM · Mail merge embedding in LibreOffice Writer By Miklos Vajna Software Engineer at Collabora Productivity 2016-01-30 @CollaboraOffice

15 / 19 FOSDEM 2016, Brussels | Miklos Vajna

Mail merge wizard

● SwDBManager's LoadAndRegisterDataSource() does the creation

● The Writer document has to be saved, so it has a storage● The embedded model then can be a sub-

storage

Page 16: Mail merge embedding in LibreOffice Writer - FOSDEM · Mail merge embedding in LibreOffice Writer By Miklos Vajna Software Engineer at Collabora Productivity 2016-01-30 @CollaboraOffice

16 / 19 FOSDEM 2016, Brussels | Miklos Vajna

Address book wizard

● Another user interface to create data source definitions

● Code in extensions/source/abpilot/

Page 17: Mail merge embedding in LibreOffice Writer - FOSDEM · Mail merge embedding in LibreOffice Writer By Miklos Vajna Software Engineer at Collabora Productivity 2016-01-30 @CollaboraOffice

17 / 19 FOSDEM 2016, Brussels | Miklos Vajna

Relative references, testing

● Feature: relative references● So .odt and .ods can travel together

● But ../ would refer to the non-embedded parent model

● Have to support even ../../● If the parent doc moves → need to re-

save the embedded doc● SwUiWriterTest's

testEmbeddedDataSource()

Page 18: Mail merge embedding in LibreOffice Writer - FOSDEM · Mail merge embedding in LibreOffice Writer By Miklos Vajna Software Engineer at Collabora Productivity 2016-01-30 @CollaboraOffice

18 / 19 FOSDEM 2016, Brussels | Miklos Vajna

Thanks

● Collabora is an open source consulting company● What we do and share with the community

has to be paid by someone

● LHM sponsored this work

Page 19: Mail merge embedding in LibreOffice Writer - FOSDEM · Mail merge embedding in LibreOffice Writer By Miklos Vajna Software Engineer at Collabora Productivity 2016-01-30 @CollaboraOffice

19 / 19 FOSDEM 2016, Brussels | Miklos Vajna

Summary

● Mail merge embedding allows mail merge with just two (ODT and e.g. ODS) documents● Available in LibreOffice 5.1● Improves experience for those who migrate from

Microsoft Office● One more long-standing problem solved

● Thanks for listening! :-)● Slides: http://vmiklos.hu/odp