Thx for the tip.�� However Envice is GPLd to constrain its use.��

cheers -ben

On Mon, Nov 6, 2017 at 2:16 AM, Andrew Glynn <aglynn42@gmail.com> wrote:

Evince is pretty easy to embed.

��

Sent from Mail for Windows 10

��

From: tesonep@gmail.com
Sent: Sunday, November 5, 2017 10:25 AM
To: Any question about pharo is welcome
Subject: Re: [Pharo-users] Embedded PDF viewer?

��

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 <btc@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...

��

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 <btc@openinworld.com> wrote:

��

��

On Wed, Oct 11, 2017 at 2:03 PM, Ben Coman <btc@openinworld.com> wrote:


> On Tue, Oct 10, 2017 at 8:58 PM, Manuel Leuenberger
> <leuenberger@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.self@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
* 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.
tesonep@gmail.com

��