B4J Question Open a pdf file directly in a browser using streaming output

a.consorti

Member
Licensed User
Hello lads,
I created a web portal using a server handler that generates a PDF and must allow the user to download and open it via browser or any viewer he has on his PC.

Basically I generate the PDF but then I can't find a way to start downloading it or opening it directly via the browser.
can you help me?
 

a.consorti

Member
Licensed User
I tried this:

B4X:
Sub Handle(req As ServletRequest, resp As ServletResponse)
Dim fileData() As Byte = File.ReadBytes(File.DirTemp,"temp.pdf") 
Response.ContentType= "application/pdf"
Response.OutputStream.WriteBytes(fileData,0,fileData.Length)
End Sub
 
Upvote 0

a.consorti

Member
Licensed User
I tried also this, but nothing:

B4X:
Dim filepdf As String = "temp.pdf"
    Dim osf As OutputStream
    osf.InitializeToBytesArray(0)
    pdfcreator.saveToStream(osf)
  
    
    Response.ContentType= "application/pdf"
    Response.SetHeader("Content-Disposition", "inline;filename=" & filepdf)

    Response.OutputStream.WriteBytes(osf.ToBytesArray,0,osf.ToBytesArray.Length)
    LogDebug("Streaming del file eseguito: " & osf.ToBytesArray.Length)
 
Upvote 0

DonManfred

Expert
Licensed User
Longtime User
You are calling your Server from WITHIN A BROWSER?
Or how do your call the servermethods?
 
Upvote 0

a.consorti

Member
Licensed User
the first one

I was able to generate the pdf file successfully via the pdfbox library. But I can't get it to stream from the browser.
In practice it does nothing.

I'm trying also other code like this:

B4X:
Dim filepdf As String = File.DirTemp & "temp.pdf"
pdfcreator.saveToFile(filepdf)   
pdfcreator.close

Response.ContentType= "application/pdf"
Response.SetHeader("Content-Disposition", "inline;filename=" & "temp.pdf")

Dim in As InputStream = File.OpenInput(File.DirTemp,"temp.pdf")
File.Copy2(in,Response.OutputStream)

but nothing
 
Upvote 0

aeric

Expert
Licensed User
Longtime User
Make sure the file really exists.

B4X:
If File.Exists(File.DirTemp, "temp.pdf") Then
    Response.ContentType = "application/pdf"
    Response.SetHeader("Content-Disposition", "inline;filename=temp.pdf")
    Dim in As InputStream = File.OpenInput(File.DirTemp, "temp.pdf")
    File.Copy2(in, Response.OutputStream)
Else
    Response.SendError(404, "File Not Found")
End If
 
Upvote 0

a.consorti

Member
Licensed User
Thank you Aeric for the reply but I tried and the file pdf exists.
Unfortunately, any type of download or viewing of the file does not start.
I'll try to add this information. The pdf file is generated from a POST request which I intercept in the server handler and performs the function I have shown.
 
Upvote 0

DonManfred

Expert
Licensed User
Longtime User
The pdf file is generated from a POST request
so you ARE starting a messageloop and stopping it when the result arrives?


Upload a small project showing the problem. It´s the best you can do to get help.
 
Upvote 0

aeric

Expert
Licensed User
Longtime User
I tested it works for me. Maybe the issue is in the code you create the PDF.

B4X:
Public Sub GetPDF
    ' #Version = v2
    ' #Desc = Download PDF file
    Dim SU As StringUtils
    'Dim FileBase64 As String = SU.EncodeBase64(File.ReadBytes(File.DirAssets, "temp.pdf"))
    Dim FileBase64 As String = "JVBERi0xLjcNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFuZyhlbi1HQikgL1N0cnVjdFRyZWVSb290IDE1IDAgUi9NYXJrSW5mbzw8L01hcmtlZCB0cnVlPj4vTWV0YWRhdGEgMjkgMCBSL1ZpZXdlclByZWZlcmVuY2VzIDMwIDAgUj4+DQplbmRvYmoNCjIgMCBvYmoNCjw8L1R5cGUvUGFnZXMvQ291bnQgMS9LaWRzWyAzIDAgUl0gPj4NCmVuZG9iag0KMyAwIG9iag0KPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9SZXNvdXJjZXM8PC9Gb250PDwvRjEgNSAwIFIvRjIgMTIgMCBSPj4vRXh0R1N0YXRlPDwvR1MxMCAxMCAwIFIvR1MxMSAxMSAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dC9JbWFnZUIvSW1hZ2VDL0ltYWdlSV0gPj4vTWVkaWFCb3hbIDAgMCA1OTUuMzIgODQxLjkyXSAvQ29udGVudHMgNCAwIFIvR3JvdXA8PC9UeXBlL0dyb3VwL1MvVHJhbnNwYXJlbmN5L0NTL0RldmljZVJHQj4+L1RhYnMvUy9TdHJ1Y3RQYXJlbnRzIDA+Pg0KZW5kb2JqDQo0IDAgb2JqDQo8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDIwOD4+DQpzdHJlYW0NCnicrY/NqsIwEIX3gbzDWeoF05mkaVMoAa1VFF1oKy7EhQvtyuLP+4MRkdt73TowDHPmwJwPUXU5tMjzaFnMxqBocWgb9I7tYFP1vcdoXOAqBSl6lnMpg2Azq4yGi1llGrejFNsftFKMaimiCcMkqE9SPK0EhtaZylKkJlEG9Tl4phUTmvvbcmteGne09VSKXU6kCyKbht/Gswu7GXrHYVod2hLFZZhJuMd+j3ouRRlCrKRAuSyAv3T8BTr9n84kVsVdul+mDkkP/c94D/ZBThoNCmVuZHN0cmVhbQ0KZW5kb2JqDQo1IDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UeXBlMC9CYXNlRm9udC9UaW1lc05ld1JvbWFuUFNNVC9FbmNvZGluZy9JZGVudGl0eS1IL0Rlc2NlbmRhbnRGb250cyA2IDAgUi9Ub1VuaWNvZGUgMjUgMCBSPj4NCmVuZG9iag0KNiAwIG9iag0KWyA3IDAgUl0gDQplbmRvYmoNCjcgMCBvYmoNCjw8L0Jhc2VGb250L1RpbWVzTmV3Um9tYW5QU01UL1N1YnR5cGUvQ0lERm9udFR5cGUyL1R5cGUvRm9udC9DSURUb0dJRE1hcC9JZGVudGl0eS9EVyAxMDAwL0NJRFN5c3RlbUluZm8gOCAwIFIvRm9udERlc2NyaXB0b3IgOSAwIFIvVyAyNyAwIFI+Pg0KZW5kb2JqDQo4IDAgb2JqDQo8PC9PcmRlcmluZyhJZGVudGl0eSkgL1JlZ2lzdHJ5KEFkb2JlKSAvU3VwcGxlbWVudCAwPj4NCmVuZG9iag0KOSAwIG9iag0KPDwvVHlwZS9Gb250RGVzY3JpcHRvci9Gb250TmFtZS9UaW1lc05ld1JvbWFuUFNNVC9GbGFncyAzMi9JdGFsaWNBbmdsZSAwL0FzY2VudCA4OTEvRGVzY2VudCAtMjE2L0NhcEhlaWdodCA2OTMvQXZnV2lkdGggNDAxL01heFdpZHRoIDI2MTQvRm9udFdlaWdodCA0MDAvWEhlaWdodCAyNTAvTGVhZGluZyA0Mi9TdGVtViA0MC9Gb250QkJveFsgLTU2OCAtMjE2IDIwNDYgNjkzXSAvRm9udEZpbGUyIDI2IDAgUj4+DQplbmRvYmoNCjEwIDAgb2JqDQo8PC9UeXBlL0V4dEdTdGF0ZS9CTS9Ob3JtYWwvY2EgMT4+DQplbmRvYmoNCjExIDAgb2JqDQo8PC9UeXBlL0V4dEdTdGF0ZS9CTS9Ob3JtYWwvQ0EgMT4+DQplbmRvYmoNCjEyIDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UcnVlVHlwZS9OYW1lL0YyL0Jhc2VGb250L1RpbWVzTmV3Um9tYW5QU01UL0VuY29kaW5nL1dpbkFuc2lFbmNvZGluZy9Gb250RGVzY3JpcHRvciAxMyAwIFIvRmlyc3RDaGFyIDMyL0xhc3RDaGFyIDMyL1dpZHRocyAyOCAwIFI+Pg0KZW5kb2JqDQoxMyAwIG9iag0KPDwvVHlwZS9Gb250RGVzY3JpcHRvci9Gb250TmFtZS9UaW1lc05ld1JvbWFuUFNNVC9GbGFncyAzMi9JdGFsaWNBbmdsZSAwL0Fz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eXBlL1hNTC9MZW5ndGggMzA1NT4+DQpzdHJlYW0NCjw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+PHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iMy4xLTcwMSI+CjxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczpwZGY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGRmLzEuMy8iPgo8cGRmOlByb2R1Y2VyPk1pY3Jvc29mdMKuIFdvcmQgMjAxOTwvcGRmOlByb2R1Y2VyPjwvcmRmOkRlc2NyaXB0aW9uPgo8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KPGRjOmNyZWF0b3I+PHJkZjpTZXE+PHJkZjpsaT5hZXJpYzwvcmRmOmxpPjwvcmRmOlNlcT48L2RjOmNyZWF0b3I+PC9yZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iPgo8eG1wOkNyZWF0b3JUb29sPk1pY3Jvc29mdMKuIFdvcmQgMjAxOTwveG1wOkNyZWF0b3JUb29sPjx4bXA6Q3JlYXRlRGF0ZT4yMDIzLTA1LTE2VDE1OjU5OjI0KzA4OjAwPC94bXA6Q3JlYXRlRGF0ZT48eG1wOk1vZGlmeURhdGU+MjAyMy0wNS0xNlQxNTo1OToyNCswODowMDwveG1wOk1vZGlmeURhdGU+PC9yZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyI+Cjx4bXBNTTpEb2N1bWVudElEPnV1aWQ6NTA3MkQxNTItNUNGQy00M0JFLUIxN0EtNERDQUQ0MTI3NzRGPC94bXBNTTpEb2N1bWVudElEPjx4bXBNTTpJbnN0YW5jZUlEPnV1aWQ6NTA3MkQxNTItNUNGQy00M0JFLUIxN0EtNERDQUQ0MTI3NzRGPC94bXBNTTpJbnN0YW5jZUlEPjwvcmRmOkRlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPC9yZGY6UkRGPjwveDp4bXBtZXRhPjw/eHBhY2tldCBlbmQ9InciPz4NCmVuZHN0cmVhbQ0KZW5kb2JqDQozMCAwIG9iag0KPDwvRGlzcGxheURvY1RpdGxlIHRydWU+Pg0KZW5kb2JqDQozMSAwIG9iag0KPDwvVHlwZS9YUmVmL1NpemUgMzEvV1sgMSA0IDJdIC9Sb290IDEgMCBSL0luZm8gMTQgMCBSL0lEWzw1MkQxNzI1MEZDNUNCRTQzQjE3QTREQ0FENDEyNzc0Rj48NTJEMTcyNTBGQzVDQkU0M0IxN0E0RENBRDQxMjc3NEY+XSAvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAxMTQ+Pg0Kc3RyZWFtDQp4nDXOMQ5AUAwG4D4PT5gkErdxC4MbcACTkyARkwuIg5hsDmKh/p8O/fI3aVMRrfs22lORl4WcwFzAZqQnG/BLMoFgJDsIHVmBm0U8vZmLTwISEkcs8ci3EOl61P3JaIoL3EwGUB+g4bCpQKu/PFPKEBoNCmVuZHN0cmVhbQ0KZW5kb2JqDQp4cmVmDQowIDMyDQowMDAwMDAwMDE1IDY1NTM1IGYNCjAwMDAwMDAwMTcgMDAwMDAgbg0KMDAwMDAwMDE2NiAwMDAwMCBuDQowMDAwMDAwMjIyIDAwMDAwIG4NCjAwMDAwMDA1MDYgMDAwMDAgbg0KMDAwMDAwMDc4OCAwMDAwMCBuDQowMDAwMDAwOTIxIDAwMDAwIG4NCjAwMDAwMDA5NDkgMDAwMDAgbg0KMDAwMDAwMTEwOSAwMDAwMCBuDQowMDAwMDAxMTgyIDAwMDAwIG4NCjAwMDAwMDE0MzUgMDAwMDAgbg0KMDAwMDAwMTQ4OSAwMDAwMCBuDQowMDAwMDAxNTQzIDAwMDAwIG4NCjAwMDAwMDE3MTUgMDAwMDAgbg0KMDAwMDAwMTk1MiAwMDAwMCBuDQowMDAwMDAwMDE2IDY1NTM1IGYNCjAwMDAwMDAwMTcgNjU1MzUgZg0KMDAwMDAwMDAxOCA2NTUzNSBmDQowMDAwMDAwMDE5IDY1NTM1IGYNCjAwMDAwMDAwMjAgNjU1MzUgZg0KMDAwMDAwMDAyMSA2NTUzNSBmDQowMDAwMDAwMDIyIDY1NTM1IGYNCjAwMDAwMDAwMjMgNjU1MzUgZg0KMDAwMDAwMDAyNCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDI2MjIgMDAwMDAgbg0KMDAwMDAwMjk3MCAwMDAwMCBuDQowMDAwMDI2ODM5IDAwMDAwIG4NCjAwMDAwMjY5NDIgMDAwMDAgbg0KMDAwMDAyNjk2OSAwMDAwMCBuDQowMDAwMDMwMTA3IDAwMDAwIG4NCjAwMDAwMzAxNTIgMDAwMDAgbg0KdHJhaWxlcg0KPDwvU2l6ZSAzMi9Sb290IDEgMCBSL0luZm8gMTQgMCBSL0lEWzw1MkQxNzI1MEZDNUNCRTQzQjE3QTREQ0FENDEyNzc0Rj48NTJEMTcyNTBGQzVDQkU0M0IxN0E0RENBRDQxMjc3NEY+XSA+Pg0Kc3RhcnR4cmVmDQozMDQ2Nw0KJSVFT0YNCnhyZWYNCjAgMA0KdHJhaWxlcg0KPDwvU2l6ZSAzMi9Sb290IDEgMCBSL0luZm8gMTQgMCBSL0lEWzw1MkQxNzI1MEZDNUNCRTQzQjE3QTREQ0FENDEyNzc0Rj48NTJEMTcyNTBGQzVDQkU0M0IxN0E0RENBRDQxMjc3NEY+XSAvUHJldiAzMDQ2Ny9YUmVmU3RtIDMwMTUyPj4NCnN0YXJ0eHJlZg0KMzEyNjQNCiUlRU9G"
    'Log(FileBase64)
   
    File.WriteBytes(File.DirTemp, "temp.pdf", SU.DecodeBase64(FileBase64))  
    If File.Exists(File.DirTemp, "temp.pdf") Then
        Response.ContentType = "application/pdf"
        'Response.SetHeader("Content-Disposition", "inline;filename=temp.pdf")
        Response.SetHeader("Content-Disposition", "attachment;filename=temp.pdf")
        Dim in As InputStream = File.OpenInput(File.DirTemp, "temp.pdf")
        File.Copy2(in, Response.OutputStream)
    Else
        Response.SendError(404, "File Not Found")
    End If
End Sub

You can try my web api (pre-release v2.02)
Open http://127.0.0.1:8080/web/api/v2/download
 

Attachments

  • WebAPI202.zip
    310.7 KB · Views: 117
Upvote 0

a.consorti

Member
Licensed User
I haven't included any messageloops in the code. In your opinion, how would it be better to insert it? I thought they were only used in WaitFor
so you ARE starting a messageloop and stopping it when the result arrives?


Upload a small project showing the problem. It´s the best you can do to get help.
I haven't included any messageloops in the code. In your opinion, how would it be better to insert it? I thought they were only used in WaitFor
 
Upvote 0

a.consorti

Member
Licensed User
RESOLVED
Thank you both,
I found my mistake. In practice it was due to the fact that I called everything via a Jquery POST and within the resonse I only had to return the streaming of the PDF.

Basically, after generating the file I redirected to Aeric's GetPDF method and now it works.

JavaScript:
        $.ajax({
        url: "/assets/createPDF",
        method: "POST",
        data: dati,
        success: function(response) {
          // Callback to getPDF
          window.location.href = "/assets/print"     
        },
        error: function(xhr, status, error) {
          // Callback di errore
          console.log(error);
        }
        });

I don't know if what I did is the best method but it works.
 
Upvote 0

DonManfred

Expert
Licensed User
Longtime User
I thought they were only used in WaitFor
you are using WAITFOR to get the result of the PDF-Creating or not?
If yes then it is MANDATORY to use a Eventloop. See the link i posted above.

Again. Upload a small project showing the problem. I hate fishing.... I´m out.
 
Upvote 0

a.consorti

Member
Licensed User
you are using WAITFOR to get the result of the PDF-Creating or not?
If yes then it is MANDATORY to use a Eventloop. See the link i posted above.

Again. Upload a small project showing the problem. I hate fishing.... I´m out.
Sorry for the misunderstanding, I thought I answered your question.
At the moment I solved it, and thank you for the support.
 
Upvote 0
Top