Re: DocumentHandler
Annick Fron <[email protected]> Thu, 4 Jun 2020 18:00:06 +0200
| Newsgroups | gmane.comp.lang.smalltalk.squeak.seaside |
|---|---|
| Message-ID | <[email protected]> |
Hi Esteban, I have tried your code >>> html anchor >>> document: documentContents mimeType: ( Seaside.WAMimeType main: >>> 'application' sub: 'pdf' ) fileName: 'YourFile.pdf'; >>> with: 'Download PDF’ but the issue is that it generates the file when the page is created, and not when the user clicks. So I have derived a new class DelayedDocumentHandler that takes a GRDelayedSend instead of a string or binary, and generates the document only if needed by evaluating the Delayed send. I have added also delayedDocument:mimeType:fileName: on HtmlAnchorTag. Annick > Le 2 juin 2020 à 15:04, Esteban Maringolo <[email protected]> a écrit : > > I am using both BS3 and BS4 (in a newer application). > In both cases using Torsten's wrapper: > > BS3: https://github.com/astares/Seaside-Bootstrap > BS4: https://github.com/astares/Seaside-Bootstrap4 > > Regards! > > Esteban A. Maringolo > > On Tue, Jun 2, 2020 at 9:47 AM Annick Fron <[email protected]> wrote: >> >> Hi Esteban, >> >> This is the solution that I will use, thank you all for your answers ! >> >> For your records, I just use the cairo library to draw the PDF. >> >> By the way, is anybody using the Bootstrap library with seaside ? >> >> Annick >> >> >>> Le 2 juin 2020 à 13:47, Esteban Maringolo <[email protected]> a écrit : >>> >>> If instead of setting a callback on an anchor, you set a document, it >>> will be treated slightly different. >>> >>> E.g. >>> >>> You can do something like: >>> >>> html anchor >>> document: documentContents mimeType: ( Seaside.WAMimeType main: >>> 'application' sub: 'pdf' ) fileName: 'YourFile.pdf'; >>> with: 'Download PDF' >>> >>> This will be handled differently to a regular action continuation of a >>> callback and will trigger the download immediately, also the document >>> will be returned as a response to never expire. >>> >>> In some cases you want to use `document:` and in others it could be >>> more flexible to use a regular `respond:` from the >>> WACurrentRequestContext (e.g. if the decision on the file format or >>> other things are deep down in the logic, away from the anchor). >>> >>> E.g. >>> >>> WACurrentRequestContext value respond: [:response | >>> response >>> attachmentWithFileName: self exportedFilename , '.pdf'; >>> doNotCache; >>> contentType: ( Seaside.WAMimeType main: 'application' sub: 'pdf' ); >>> binary; >>> nextPutAll: pdfContents; >>> respond >>> ] >>> >>> Or directly pass an instance of WAMimeDocument to the response. >>> >>> WACurrentRequestContext value respond: [:response | >>> response document: aWAMimeDocument >>> ] >>> >>> Best regards, >>> >>> Esteban A. Maringolo >>> >>> On Tue, Jun 2, 2020 at 6:20 AM Annick Fron <[email protected]> wrote: >>>> >>>> Hi, I would like to serve a custom dynamically generated PDF file, what is the best option ? Use a DocumentHandler ? >>>> If yes how ? >>>> >>>> Annick >>>> _______________________________________________ >>>> seaside mailing list >>>> [email protected] >>>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside >>> _______________________________________________ >>> seaside mailing list >>> [email protected] >>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside >> >> _______________________________________________ >> seaside mailing list >> [email protected] >> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside > _______________________________________________ > seaside mailing list > [email protected] > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside _______________________________________________ seaside mailing list [email protected] http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside