Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cross-plaftorm build #22

Open
Sroka opened this issue May 19, 2021 · 3 comments
Open

Cross-plaftorm build #22

Sroka opened this issue May 19, 2021 · 3 comments

Comments

@Sroka
Copy link

Sroka commented May 19, 2021

Hey, awesome project. Recently, I was thinking about building a PDF reader in Rust and this is just what I need :)

What platform are you able to build it for? I would like to cover as many as possible. I found a repo showing how to build PDFium for all platforms but Windows and Linux:
https://github.com/paulo-coutinho/pdfium-lib

@asafigan
Copy link
Owner

I believe that it should be able to support all platforms. I haven't tested anything other than MacOS. The only problems I can think of would be Windows file paths. I looked into the encoding requirements for PDFium on Windows and it was not straight forward. You could always load the file into memory and than pass it to PDFium that way. I do plan on testing more platforms before publishing to crates.io.

Personally I tried building PDFium from source multiple times and I gave up because it was too frustrating. I would suggest downloading a prebuilt binary. I just updated the README with a link to https://github.com/bblanchon/pdfium-binaries which is what I used. You will only need the basic library. No need for V8 and everything else. You will have to look up how to install the binary libraries and C headers correctly for your platform. I have only ever done this on MacOS.

Hopes this helps.


Just curious. Why are you building a PDF render in Rust?

@Sroka
Copy link
Author

Sroka commented May 22, 2021

Just curious. Why are you building a PDF render in Rust?

Reader not render :) I wanted to try to build an open source version of something like MarginNote3 or LiquidText. Sure, I could use PDS.js and build it in Typescript with React in tenth of the time but where is fun in that? :)

@asafigan
Copy link
Owner

May I suggest you look at poppler-rs. It is a rust wrapper around poppler. I believe it is fully featured but it hasn't been updated in 2 years. Poppler has a different license so look into it before building anything.

Also if you want to get even more low level, there are some people working on a pure Rust renderer called pdf_render. They have a web demo if you want to check it out.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants