I guess I’ll point you to the issue too.

PDFStreamPrinter>printPDFDataStream: aPDFDataStream     
……
Line 13: (self compression) ifTrue: [ streamData := (self compressWithGZip: 
streamData) asByteArray  ].

> On Jan 17, 2024, at 5:13 PM, Todd Blanchard via Pharo-users 
> <pharo-users@lists.pharo.org> wrote:
> 
> Try this:
> 
> (PDFDocument new compression: false)add: (PDFPage new add: (PDFTextElement 
> new text: 'Hello'; from: 10mm@10mm)); exportTo: 'test.pdf' asFileReference 
> writeStream.
> 
> Compression causes your string to be gzip’d which is a ByteArray and not a 
> String of any kind.
> 
> Unfortunately, the write stream is a ZnCharacterWriteStream which is 
> expecting some kind of String.
> 
> This is going to take some untangling so just turn off compression (which is 
> on by default) and it seems to work.  
> 
>> On Jan 17, 2024, at 4:43 PM, Richard O'Keefe <rao...@gmail.com> wrote:
>> 
>> So the method is expecting some kind of string, but it received a
>> ByteArray, which is NOT any kind of string.
>> What's in the ByteArray?  Where did it come from?  Why isn't it a string?
>> 
>> On Thu, 18 Jan 2024 at 04:34, sergio ruiz <sergio....@gmail.com> wrote:
>>> 
>>> Hi, all.
>>> 
>>> I am working on creating a PDF with Artefact 
>>> (https://github.com/pharo-contributions/Artefact) and am having an issue 
>>> running the first example.
>>> 
>>> the Example looks like:
>>> 
>>> PDFDocument new add: (PDFPage new add: (PDFTextElement new text: 'Hello'; 
>>> from: 10mm@10mm)); exportTo: 'test.pdf' asFileReference writeStream.
>>> 
>>> 
>>> When running this, I get the error:
>>> 
>>> Instance of ByteArray did not understand #isByteString
>>> 
>>> indeed, ByteArray does not have a method called isByteString.
>>> 
>>> I have tried creating a method that returns either true or false (I tried 
>>> them both), but I have not successfully built the PDF.
>>> 
>>> The method calling isByteString looks like:
>>> 
>>> 
>>> ZnUTF8Encoder
>>> 
>>> next: count putAll: string startingAt: offset toStream: stream
>>> "Write count characters from string starting at offset to stream."
>>> "Overwritten for performance reasons - create a fast path for byte strings"
>>> 
>>> string isByteString
>>> ifTrue: [ self next: count putAllByteString: string startingAt: offset 
>>> toStream: stream ]
>>> ifFalse: [ super next: count putAll: string startingAt: offset toStream: 
>>> stream ]
>>> 
>>> I TOTALLY get this. This is a whole bunch of very specific questions. But 
>>> my ultimate goal is to take a deep dive into stream processing to figure 
>>> this out.
>>> 
>>> Thanks!
>>> 
>>> ----
>>> peace,
>>> sergio
>>> photographer, journalist, visionary
>>> 
>>> Public Key: 
>>> https://pgp.key-server.io/pks/lookup?op=get&search=0x69B08F58923AB3A2
>>> #BitMessage BM-NBaswViL21xqgg9STRJjaJaUoyiNe2dV
>>> @sergio_101@mastodon.social
>>> https://sergio101.com
>>> http://www.codeandmusic.com
>>> http://www.twitter.com/sergio_101
>>> http://www.facebook.com/sergio101
>>> 

Reply via email to