Hello Ben,
   UFFI does not allow you to call static libraries. Static libraries are
not executable per se, they need to be linked in another program.
As I know, the only way of using an static library from Pharo is to:
  - Build a plugin that wraps it.
  - Build a DLL exposing all the functions in the library and then they are
used through UFFI.

The second option is the easiest to me, but it depends how the library is
built up. For example, if the library uses a lot of compile time code
generation (like macros or templates) making a generic DLL is not so easy.

I think it is better to see if not other project has already tackle this
problem when using the desired static library.

Cheers,
Pablo

On Sun, Nov 5, 2017 at 1:39 PM, Ben Coman <b...@openinworld.com> wrote:

> I'm looking into calling PDFium from Pharo via FFI.
> Currently I'm stalled a bit since it doesn't have a shared-library target.
>
> If you consider access to such a library would be useful to the community,
> please take a few moments to star this issue...
> https://bugs.chromium.org/p/pdfium/issues/detail?id=826
>
> cheers -ben
>
>
> P.S. Can anyone comment on calling into a static library via FFI?
>
>
>
> On Wed, Oct 11, 2017 at 2:05 PM, Ben Coman <b...@openinworld.com> wrote:
>
>>
>>
>> On Wed, Oct 11, 2017 at 2:03 PM, Ben Coman <b...@openinworld.com> wrote:
>>
>>>
>>> > On Tue, Oct 10, 2017 at 8:58 PM, Manuel Leuenberger
>>> > <leuenber...@inf.unibe.ch> wrote:
>>> > > Hi,
>>> > >
>>> > > I want to view a PDF within Pharo. I found that Athens has a PDF
>>> canvas, but I have no idea how to use it. Is there a way to view a PDF
>>> within Pharo, so that I can scroll, zoom, click links etc. in the PDF?
>>> > >
>>> > > Cheers,
>>> > > Manuel
>>>
>>>
>>> On Wed, Oct 11, 2017 at 3:04 AM, Stephane Ducasse <
>>> stepharo.s...@gmail.com> wrote:
>>> >
>>> > Hi manuel
>>> >
>>> > So far I do not know if we have this is Pharo.
>>> > I imagine that we would have to build a renderer once we will have the
>>> > PDF reader from Christian library.
>>> >
>>> > Stef
>>>
>>>
>> [Edit: Update license link]
>>
>>
>>> A renderer will have great synergy with PDFTalk, but I think a proof of
>>> concept can be done independently.
>>> I've been poking at this topic for a while looking for options.
>>> Coincidentally a couple of days I discovered the PDFium library.
>>> I haven't had time yet to give it a run, but it seems a good candidate
>>> since...
>>> * Its a successful commercial product by Foxit built into Chrome
>>> converted to open source with Google's backing for use in Chromium
>>>        https://www.foxitsoftware.com/company/press.php?id=305
>>> * Its license is BSD style
>>>        *https://github.com/hfiguiere/pdfium/blob/master/LICENSE
>>> <https://github.com/hfiguiere/pdfium/blob/master/LICENSE>*
>>> * Although written in C++ it has a C interface
>>>       https://github.com/hfiguiere/pdfium/blob/master/public/fpdfview.h
>>>       * Search here on  " Function: "  to skim through
>>>       * Proof of concept seems to only need these key functions...
>>>           * void    FPDF_RenderPageBitmap( FPDF_BITMAP bitmap,FPDF_PAGE
>>> page, ... )
>>>           * FPDF_BITMAP    FPDFBitmap_Create( int width, int height, int
>>> alpha);
>>>           * FPDF_PAGE   FPDF_LoadPage   ( FPDF_DOCUMENT document, int
>>> page_index )
>>>           * FPDF_DOCUMENT   FPDF_LoadMemDocument   ( const void*
>>> data_buf ... )
>>>           * void    FPDF_InitLibrary ()
>>> * Has a concise getting started for POC...
>>>       https://github.com/hfiguiere/pdfium/blob/master/docs/getting
>>> -started.md
>>> * Maybe useful fork with V8 disabled by default
>>>       https://github.com/klokantech/pdfium
>>> * Master repo here
>>>       https://pdfium.googlesource.com/pdfium/
>>>
>>> So Pharo might load a PDF file into a ByteArray, pass that to
>>> FPDF_LoadMemDocument() & FPDF_LoadPage(),
>>> then get a bitmap back from FPDFBitmap_Create() &
>>> FPDF_RenderPageBitmap() and display the result in a Pharo window.
>>>
>>> The rest of this week I'm working 12 hour days on a mine site.  I could
>>> try it out once I'm home, but in the meantime is anyone else keen to try
>>> it?
>>>
>>> cheers -ben
>>>
>>
>>
>


-- 
Pablo Tesone.
teso...@gmail.com

Reply via email to