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 >>>