Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
pdftalk4gemstone [2021/07/28 16:02] christian [File into Gemstone] |
pdftalk4gemstone [2022/03/05 08:48] christian [PDFtalk for Gemstone] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== PDFtalk for Gemstone ====== | ====== PDFtalk for Gemstone ====== | ||
- | Library for reading and writing PDF files in Gemstone. | + | Library for reading and writing PDF files in [[https:// |
The source is on [[https:// | The source is on [[https:// | ||
+ | |||
+ | With [[releasenotes# | ||
The new symbol dictionary **'' | The new symbol dictionary **'' | ||
Line 23: | Line 25: | ||
The dictionary '' | The dictionary '' | ||
- | With the 2.5 release, the new '' | + | With the [[releasenotes# |
===== Get started ===== | ===== Get started ===== | ||
Line 31: | Line 33: | ||
==== File out Gemstone code ==== | ==== File out Gemstone code ==== | ||
- | To create the fileout, you need to load the bundle '' | + | To create the fileout, you need to load the bundle '' |
<code smalltalk> | <code smalltalk> | ||
SmalltalkTransform.Gemstone fileOutPDFtalk. | SmalltalkTransform.Gemstone fileOutPDFtalk. | ||
Line 37: | Line 39: | ||
</ | </ | ||
+ | You should change the directory in the two methods. | ||
==== File into Gemstone ==== | ==== File into Gemstone ==== | ||
The library should be installed in the open source [[https:// | The library should be installed in the open source [[https:// | ||
- | You have to log into GsDevKit as '' | + | You have to log into GsDevKit as '' |
- | + | To file-in | |
- | For the fileIn, Topaz needs to be prepared: | + | |
< | < | ||
output push PDFtalk.log only | output push PDFtalk.log only | ||
Line 51: | Line 53: | ||
</ | </ | ||
- | The created log files MUST be checked for problems. If you see: | + | The created log file MUST be checked for problems. If you see: |
< | < | ||
Line 61: | Line 63: | ||
</ | </ | ||
- | ...then everything is OK and PDFtalk can be used. | + | ...then everything is OK and PDFtalk can be used. In case of a problem, you will see an error message with a useful stacktrace. |
+ | |||
+ | Do the same to load '' | ||
When doing this repeatedly, one need to undo and clean up the previous installation with: | When doing this repeatedly, one need to undo and clean up the previous installation with: | ||
Line 81: | Line 85: | ||
===== Look around ===== | ===== Look around ===== | ||
+ | |||
+ | Loading '' | ||
==== Tests ==== | ==== Tests ==== | ||
- | Inspect | + | Print the following: |
<code smalltalk> | <code smalltalk> | ||
PDF runAllTests | PDF runAllTests | ||
</ | </ | ||
- | and check that 245 tests are passing without errors or failures. | + | and check that 497 tests are passing without errors or failures. |
==== Demos ==== | ==== Demos ==== | ||
Line 102: | Line 108: | ||
</ | </ | ||
to find many generated PDFs in your $HOME directory. | to find many generated PDFs in your $HOME directory. | ||
+ | |||
+ | The last demo appends all demo PDFs into this {{ : | ||
===== Runtime considerations ===== | ===== Runtime considerations ===== | ||
- | There are some global variables caching objects (fonts, encodings, the type hierarchy). These caches are lazily filled when accessed first. In a runtime, you may want to reset and fill all caches before deploying, either because of limited rights of the runtime user or to eliminate startup overhead-. | + | There are some global variables caching objects (fonts, encodings, the type hierarchy). These caches are lazily filled when accessed first. In a runtime, you may want to reset and fill all caches before deploying, either because of limited rights of the runtime user or to eliminate startup overhead. |
After all your application code is loaded, do the following to reset and fill all caches: | After all your application code is loaded, do the following to reset and fill all caches: | ||
Line 114: | Line 122: | ||
===== Images ===== | ===== Images ===== | ||
- | There is code to save ImageXObjects as Value (i.e. source code which will reconstruct | + | There is code to save ImageXObjects as Value (i.e. source code which will reconstruct |
To produce the source string for a PDF image you send it '' | To produce the source string for a PDF image you send it '' | ||
This string can be evaluated in Gemstone with '' | This string can be evaluated in Gemstone with '' | ||
Line 127: | Line 135: | ||
anImageXObject asMethod: selectorSymbol in: protocolSymbol package: packageString | anImageXObject asMethod: selectorSymbol in: protocolSymbol package: packageString | ||
</ | </ | ||
- | I added several example images with this to ImageXObject. You can also look at the new ImageXTests where the images are used. | + | I added several example images with this to ImageXObject. You can also look at ImageXTests where the images are used. |
These methods can be transferred easily form VW to Gemstone and you get the image just by calling that method. | These methods can be transferred easily form VW to Gemstone and you get the image just by calling that method. | ||
- | ===== older ideas about porting ===== | ||
- | |||
- | [[: | ||
- | Older thoughts and discussion about [[Porting]]. |