SlideShare ist ein Scribd-Unternehmen logo
1 von 21
Downloaden Sie, um offline zu lesen
PDFtalk for Gemstone
Christian Haider
PDFtalk
Overview
• News from the PDF library for VisualWorks
• New „PDFtalk for Gemstone“
• New goodie for porting VW code to
Gemstone
„Gemstone Fileout Project“
ESUG 2017 2
PDFtalk
PDFtalk – PDF library version 2
• Commercial intent
– More professional support
– End user tools
ESUG 2017 3
PDFtalk
Whats new in PDFtalk
• Typing redesigned
• Added basic support for annotations
• (older) support for bitmapped images
ESUG 2017 4
PDFtalk
Typing in PDFtalk
• PDF objects are typed
– Some explicitely
– Some implicitely
• (acquired by being in an attribute of an object)
(show)
ESUG 2017 5
PDFtalkESUG 2017 6
PDFtalk
Typing in PDFtalk
• Advantages of the new typing design
– Aids porting to non-namespace Smalltalks
– Ordinary classes can act as PDF objects
• UndefinedObject, Boolean, Number (to be done)
(show)
ESUG 2017 7
PDFtalk
Change for the user
• Instead of using the class itself
Page
• one should use
PDF classAt: #Page
• The implementation classes can be named
different now
• Often used classes can be accessed directly
PDF Dictionary
– Instead of (PDF classAt: #Dictionary)
– the implementation class is now PDFDictionary
ESUG 2017 8
PDFtalk
PDFtalk for Gemstone
• Free MIT licence
• Paid work for a HTS
– To create PDFs from a Seaside application
– Using the report tool of Bob Nemec
• Just the server part – no tools or UI
ESUG 2017 9
PDFtalk
PDFtalk namespaces in Gemstone
ESUG 2017 10
Globals
PDFtalkLibrary
UserGlobals
Published
PDFtalk Fonts
CFF
OpenType
PDFtalk.Fonts.Type1Font (in VisualWorks)
(PDFtalk at: #Fonts) at: #Type1Font (in Gemstone)
(All PDF objects) (Font objects)
Type1Font
…
PDFtalk
Porting challenges
• Learning Gemstone
• Something similar to namespaces
• Different approaches
• Other tools
– No support for namespaces
– No tests
• => Rolled my own
ESUG 2017 11
PDFtalk
Porting approach
• Generate Topaz input file from VW
• Based on GLASS (with seaside loaded)
• No changes to the origin
• No compatibility libraries for VW or GS
• Describe the transformation declaritively
only
ESUG 2017 12
PDFtalk
Porting Strategy
• File in
– Missing superclasses
– Missing classes for extensions
– Missing referenced classes
– Syntactical differences
• Dotted names
• If(Not)Nil: needs a block
ESUG 2017 13
PDFtalk
Porting Strategy II
• Make the tests pass
– Reimplement items depending on VW infrastructure
• Encoders
• Font support
• UninterpretedBytes -> Byte(Read|Write)Stream
– Create common abstractions
• Pragmas
– Understand differences
• Streams (Line end convention (cr / lf)), different
semantics
• Numbers (LargeIntegers, printString of Floats)
ESUG 2017 14
PDFtalk
More differences
• Some classes don‘t like #new
• printString is usually different
• Different error class hierarchy
• #thisContext not in Gemstone
• Announcers need to be subclass of Announcer
• Streams: different semantics
• Timestamp: includes offset (time zone) in GS
ESUG 2017 15
PDFtalk
Fun Facts I
• Colors
– Representation
• VW: 13 bit per component
• Squeak: 10 bits
– Names
• VW: 31
• GS: 35
• Common: 18
ESUG 2017 16
PDFtalk
Fun Facts II
ESUG 2017 17
black
white
red
green
blue
cyan
magenta
yellow
gray
lightGray
veryLightGray
darkGray
veryDarkGray
brown
lightCyan
orange
paleGreen
lightYellow
VW GS VW GS
PDFtalk
Fun Facts III
(show)
• Different base dates
– Unix: 1.1.1970
– VW: 1.1.1900
– GS: 1.1.1900 and 1.1.2000
– OpenType: 1.1.1904
• Dont use #fromSeconds: and #asSeconds
ESUG 2017 18
PDFtalk
Porting Strategy
• VW is the source
• VW should not change
• Output by transformations
– Add method
– Add system method
– Ignore method
– Replace method
– Rewrite method
(show)
ESUG 2017 19
PDFtalk
Gemstone Fileout
• Open source with MIT licence
• Describe the differences as a Value
– Measure of portability
– General transforms
– Specific transforms
ESUG 2017 20
PDFtalk
Thank you for your attention!
Questions?
More information at http://wiki.pdftalk.de
ESUG 2017 21

Weitere ähnliche Inhalte

Mehr von ESUG

The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapESUG
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoESUG
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...ESUG
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsESUG
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6ESUG
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationESUG
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingESUG
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesESUG
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportESUG
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsESUG
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector TuningESUG
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseESUG
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FutureESUG
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the DebuggerESUG
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing ScoreESUG
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptESUG
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocESUG
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsESUG
 
BioSmalltalk
BioSmalltalkBioSmalltalk
BioSmalltalkESUG
 
gt4atproto, A Programmable Environment for Social Media
gt4atproto, A Programmable Environment for Social Mediagt4atproto, A Programmable Environment for Social Media
gt4atproto, A Programmable Environment for Social MediaESUG
 

Mehr von ESUG (20)

The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector Tuning
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the Debugger
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing Score
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
 
BioSmalltalk
BioSmalltalkBioSmalltalk
BioSmalltalk
 
gt4atproto, A Programmable Environment for Social Media
gt4atproto, A Programmable Environment for Social Mediagt4atproto, A Programmable Environment for Social Media
gt4atproto, A Programmable Environment for Social Media
 

Kürzlich hochgeladen

What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noidabntitsolutionsrishis
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....kzayra69
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 

Kürzlich hochgeladen (20)

What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 

PDFtalk for Gemstone

  • 2. PDFtalk Overview • News from the PDF library for VisualWorks • New „PDFtalk for Gemstone“ • New goodie for porting VW code to Gemstone „Gemstone Fileout Project“ ESUG 2017 2
  • 3. PDFtalk PDFtalk – PDF library version 2 • Commercial intent – More professional support – End user tools ESUG 2017 3
  • 4. PDFtalk Whats new in PDFtalk • Typing redesigned • Added basic support for annotations • (older) support for bitmapped images ESUG 2017 4
  • 5. PDFtalk Typing in PDFtalk • PDF objects are typed – Some explicitely – Some implicitely • (acquired by being in an attribute of an object) (show) ESUG 2017 5
  • 7. PDFtalk Typing in PDFtalk • Advantages of the new typing design – Aids porting to non-namespace Smalltalks – Ordinary classes can act as PDF objects • UndefinedObject, Boolean, Number (to be done) (show) ESUG 2017 7
  • 8. PDFtalk Change for the user • Instead of using the class itself Page • one should use PDF classAt: #Page • The implementation classes can be named different now • Often used classes can be accessed directly PDF Dictionary – Instead of (PDF classAt: #Dictionary) – the implementation class is now PDFDictionary ESUG 2017 8
  • 9. PDFtalk PDFtalk for Gemstone • Free MIT licence • Paid work for a HTS – To create PDFs from a Seaside application – Using the report tool of Bob Nemec • Just the server part – no tools or UI ESUG 2017 9
  • 10. PDFtalk PDFtalk namespaces in Gemstone ESUG 2017 10 Globals PDFtalkLibrary UserGlobals Published PDFtalk Fonts CFF OpenType PDFtalk.Fonts.Type1Font (in VisualWorks) (PDFtalk at: #Fonts) at: #Type1Font (in Gemstone) (All PDF objects) (Font objects) Type1Font …
  • 11. PDFtalk Porting challenges • Learning Gemstone • Something similar to namespaces • Different approaches • Other tools – No support for namespaces – No tests • => Rolled my own ESUG 2017 11
  • 12. PDFtalk Porting approach • Generate Topaz input file from VW • Based on GLASS (with seaside loaded) • No changes to the origin • No compatibility libraries for VW or GS • Describe the transformation declaritively only ESUG 2017 12
  • 13. PDFtalk Porting Strategy • File in – Missing superclasses – Missing classes for extensions – Missing referenced classes – Syntactical differences • Dotted names • If(Not)Nil: needs a block ESUG 2017 13
  • 14. PDFtalk Porting Strategy II • Make the tests pass – Reimplement items depending on VW infrastructure • Encoders • Font support • UninterpretedBytes -> Byte(Read|Write)Stream – Create common abstractions • Pragmas – Understand differences • Streams (Line end convention (cr / lf)), different semantics • Numbers (LargeIntegers, printString of Floats) ESUG 2017 14
  • 15. PDFtalk More differences • Some classes don‘t like #new • printString is usually different • Different error class hierarchy • #thisContext not in Gemstone • Announcers need to be subclass of Announcer • Streams: different semantics • Timestamp: includes offset (time zone) in GS ESUG 2017 15
  • 16. PDFtalk Fun Facts I • Colors – Representation • VW: 13 bit per component • Squeak: 10 bits – Names • VW: 31 • GS: 35 • Common: 18 ESUG 2017 16
  • 17. PDFtalk Fun Facts II ESUG 2017 17 black white red green blue cyan magenta yellow gray lightGray veryLightGray darkGray veryDarkGray brown lightCyan orange paleGreen lightYellow VW GS VW GS
  • 18. PDFtalk Fun Facts III (show) • Different base dates – Unix: 1.1.1970 – VW: 1.1.1900 – GS: 1.1.1900 and 1.1.2000 – OpenType: 1.1.1904 • Dont use #fromSeconds: and #asSeconds ESUG 2017 18
  • 19. PDFtalk Porting Strategy • VW is the source • VW should not change • Output by transformations – Add method – Add system method – Ignore method – Replace method – Rewrite method (show) ESUG 2017 19
  • 20. PDFtalk Gemstone Fileout • Open source with MIT licence • Describe the differences as a Value – Measure of portability – General transforms – Specific transforms ESUG 2017 20
  • 21. PDFtalk Thank you for your attention! Questions? More information at http://wiki.pdftalk.de ESUG 2017 21