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 12:49] christian [Get started] |
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:// | ||
- | The library | + | With [[releasenotes# |
The new symbol dictionary **'' | The new symbol dictionary **'' | ||
Line 24: | Line 24: | ||
The dictionary '' | The dictionary '' | ||
+ | |||
+ | With the [[releasenotes# | ||
===== Get started ===== | ===== Get started ===== | ||
Line 29: | Line 31: | ||
The proper way to get the fileout is to create it. For convenience, | The proper way to get the fileout is to create it. For convenience, | ||
- | ==== FileOut | + | ==== 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> | ||
- | GemstoneFileout.Writer | + | SmalltalkTransform.Gemstone |
- | GemstoneFileout.Writer | + | SmalltalkTransform.Gemstone |
</ | </ | ||
- | ==== Installation | + | You should change the directory in the two methods. |
+ | ==== File into Gemstone | ||
+ | The library should be installed in the open source [[https:// | ||
- | ==== FileIn Gemstone ==== | + | You have to log into GsDevKit as '' |
+ | To file-in the code do: | ||
+ | < | ||
+ | output push PDFtalk.log only | ||
+ | input PDFtalk.gs | ||
+ | output pop | ||
+ | exit | ||
+ | </ | ||
- | FileIn the resulting files '' | + | The created log file MUST be checked for problems. If you see: |
- | Check the created | + | < |
+ | topaz 1> # | ||
+ | topaz 1> # Finished file-in successfully | ||
+ | topaz 1> # | ||
+ | fileformat is now 8bit | ||
+ | topaz 1> output pop | ||
+ | </ | ||
+ | |||
+ | ...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: | ||
+ | < | ||
+ | output push cleanUp.log only | ||
+ | Doit | ||
+ | | policy | | ||
+ | # | ||
+ | (GsPackageLibrary packageNamed: | ||
+ | GsPackageLibrary uninstallPackage: | ||
+ | (GsPackageLibrary packageLibrary removeDictionaryNamed: | ||
+ | policy := GsPackagePolicy current. | ||
+ | policy homeSymbolDict: | ||
+ | policy externalSymbolList: | ||
+ | policy enable. | ||
+ | % | ||
+ | commit | ||
+ | </ | ||
===== 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 68: | 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 80: | 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 93: | 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]]. |