Hi
I would like to do this :
I need a form with one field only, in wich I want display a pdf (already generated) into that field
and print the form to have the pdf on paper ,
how can I do this?
Type of field?
how can I load the pdf to view it ?
Dominique
Hello Dominique,
We use an OCX widget with the Shell.Explorer. You can simply "navigate" to the PDF document to view and print.
$ocxhandle(field) -> Navigate("path\\document.pdf", "", "", "", "")
Alternatively you can also use the HTML-widget to view the PDF document using a small piece of HTML code.
html_body:blockdata @
Use $replace to replace the file tag in the HTML code with the actual location.
$replace($html, 1, "{file}", "path\\document.pdf", 1)
Hope this helps.
With kind regards,
John
Hi
I would like to do this :
I need a form with one field only, in wich I want display a pdf (already generated) into that field
and print the form to have the pdf on paper ,
how can I do this?
Type of field?
how can I load the pdf to view it ?
Dominique
Hi Dominque
What about a OCX-container?
If you do have adobe installed, there should be an OCX for this purpose
Ingo
Hi
I would like to do this :
I need a form with one field only, in wich I want display a pdf (already generated) into that field
and print the form to have the pdf on paper ,
how can I do this?
Type of field?
how can I load the pdf to view it ?
Dominique
reading your answers, I realized I forgot to give more details
I need to store the content of the pdf because it is linked to an invoice
So when I print the invoice, I need to print this pdf after the invoice print, knowing that this printing can be done from anywhere and when you display the invoice on the screen, I don't have anymore the pdf on disk, but need to load it from the database
Hi
I would like to do this :
I need a form with one field only, in wich I want display a pdf (already generated) into that field
and print the form to have the pdf on paper ,
how can I do this?
Type of field?
how can I load the pdf to view it ?
Dominique
We store our PDF documents in the database too. When the user wants to view the document, we save it to disk in the Windows temporary files folder. Show the PDF document and when the user leaves the form we remove the PDF document from disk,
With kind regards,
John
Hi
I would like to do this :
I need a form with one field only, in wich I want display a pdf (already generated) into that field
and print the form to have the pdf on paper ,
how can I do this?
Type of field?
how can I load the pdf to view it ?
Dominique
Is there a way to display it without having to create file on the disk
how do you store in the DB : which kind of field
is there a way to display without using ocx I don't need any "useraction"
I would like just to display the pdf like an image and print it like an image too
Hi
I would like to do this :
I need a form with one field only, in wich I want display a pdf (already generated) into that field
and print the form to have the pdf on paper ,
how can I do this?
Type of field?
how can I load the pdf to view it ?
Dominique
So, to store in the database, use a "raw data" field (sr*) in the model. CHeck out whichever database you use for the mapped field type, and how best to store that kind of data (in SQL server for example, there is the option of filestream)
Store in the database by using fileload/raw (lfileload/raw), to populate this field and then store the entity.
We don't use the uniface reports to print, but I think they'll have the same issues that crystal reports does, in that the PDF won't print, or will only print the first page.
If you look for ghostscript online, you'll find an executable that will allow you to convert the PDF into a series of images (tiff, jpeg, you choose), which you can then re-load into the report as a dummy entity using fileload/image, which will allow you to include these 'pages' alongside your invoice.
So your report code save the file from the database to a temporary location, runs the ghostscript executable to chop it up into images for each page, loads those images back into dummy fields in a dummy entity (one occ per page), runs the print, and then deletes the temporary files.... simple, no?
I can (maybe) give some hints what the various loops and command lines look like if you want.
So, to store in the database, use a "raw data" field (sr*) in the model. CHeck out whichever database you use for the mapped field type, and how best to store that kind of data (in SQL server for example, there is the option of filestream)
Store in the database by using fileload/raw (lfileload/raw), to populate this field and then store the entity.
We don't use the uniface reports to print, but I think they'll have the same issues that crystal reports does, in that the PDF won't print, or will only print the first page.
If you look for ghostscript online, you'll find an executable that will allow you to convert the PDF into a series of images (tiff, jpeg, you choose), which you can then re-load into the report as a dummy entity using fileload/image, which will allow you to include these 'pages' alongside your invoice.
So your report code save the file from the database to a temporary location, runs the ghostscript executable to chop it up into images for each page, loads those images back into dummy fields in a dummy entity (one occ per page), runs the print, and then deletes the temporary files.... simple, no?
I can (maybe) give some hints what the various loops and command lines look like if you want.
Oh, and while you're at it, you could find my wish in the wishlist that Uniface could handle pdfs as a native 'image' type, and handle display and printing of those, and give it a vote. 🙂
Hello Dominique,
We use an OCX widget with the Shell.Explorer. You can simply "navigate" to the PDF document to view and print.
$ocxhandle(field) -> Navigate("path\\document.pdf", "", "", "", "")
Alternatively you can also use the HTML-widget to view the PDF document using a small piece of HTML code.
html_body:blockdata @
Use $replace to replace the file tag in the HTML code with the actual location.
$replace($html, 1, "{file}", "path\\document.pdf", 1)
Hope this helps.
With kind regards,
John
You can also load the Pdf into memory from file or from the database and use embedded data rather than the file location, (I seem to recall it needs encoding to base64 or something).
The pdf view provided by cefrender lacks some useful functionality (rotate being the main one I seem to recall).
We have had to go with paid software which displays the pdf in a web page using the local IIS. This has the advantage that it will display other documents (word, excel, cad files etc) as well, to overcome these limitations.
Hi Dominque
What about a OCX-container?
If you do have adobe installed, there should be an OCX for this purpose
Ingo
Also, OCX containers don't print, do they? I don't use uniface for printing, so I'm behind the times on what its exact capabilities are.
Hi Dominque
What about a OCX-container?
If you do have adobe installed, there should be an OCX for this purpose
Ingo
Adobe stopped providing OCX containers with Adobe XI as far as we can tell, Adobe DC has been live three years now, and only speaks .NET as far as we can tell.
Hi
I would like to do this :
I need a form with one field only, in wich I want display a pdf (already generated) into that field
and print the form to have the pdf on paper ,
how can I do this?
Type of field?
how can I load the pdf to view it ?
Dominique
Hi Dominque,
I did a quick test with the HTML widget (using the latest Uniface 10.3 patch, 10.3.02.050) and this seems to work:
operation exec
variables
raw rPdf
endvariables
; Your pre-edit code here...
fileload/raw "some.pdf", rPdf
HTML.ENTITY = $concat($html1, $encode("BASE64", rPdf), $html2)
; Shows the form component and allow data entry
edit
return 0
html1:blockdata ~
The HTML widget (or better said CEF) has an embedded PDF viewer.
The above sample code should also work if you use a RAW field (data type: RAW, Interface SR*) instead of a RAW variable.
During my quick experiment with this I've recognized that there seems to be a problem with larger PDF files (> 2MB). The HTML widget will not show the PDF viewer, but just a blank page. When I open the same page with the Google Chrome browser then I get the same result. I'm not sure if there's a limit for the src-element, or some other limit or bug.
I hope this helps.
Kind regards,
Daniel
Hello Dominique,
We use an OCX widget with the Shell.Explorer. You can simply "navigate" to the PDF document to view and print.
$ocxhandle(field) -> Navigate("path\\document.pdf", "", "", "", "")
Alternatively you can also use the HTML-widget to view the PDF document using a small piece of HTML code.
html_body:blockdata @
Use $replace to replace the file tag in the HTML code with the actual location.
$replace($html, 1, "{file}", "path\\document.pdf", 1)
Hope this helps.
With kind regards,
John
When I check the latest Uniface 10.3 patch (10.3.02.050) then you can actually rotate a PDF document in the viewer.
Hello Dominique,
We use an OCX widget with the Shell.Explorer. You can simply "navigate" to the PDF document to view and print.
$ocxhandle(field) -> Navigate("path\\document.pdf", "", "", "", "")
Alternatively you can also use the HTML-widget to view the PDF document using a small piece of HTML code.
html_body:blockdata @
Use $replace to replace the file tag in the HTML code with the actual location.
$replace($html, 1, "{file}", "path\\document.pdf", 1)
Hope this helps.
With kind regards,
John
Ah, we're only just migrating to uniface 10 for production, must have been following the cef version update. We've been using other software to display pdfs (and other documents) for a couple of years now.