Comments (9)
I look forward to seeing out it works, the ctypesgen builds + the binaries are always temperamental for me for any project I use them for
from pypdfium2.
Source build works with no issues, though I have a bunch of dev dependencies in general on my computer, so this should probably be tested in a vm at some point
I just successfully built PyPDFium2 in VirtualBox with OpenSUSE Leap 15.3. However, I yet found some important external dependencies that I've listed in DEPS.txt
now.
from pypdfium2.
I've started experimenting in the sourcebuild
branch.
The build appears to work, but the generated binary - for some peculiar reason - is much smaller than it should be, and not even the FPDF_InitLibrary
call works. I'll have to investigate this. My guess is that I need to apply more patches from pdfium-binaries.
from pypdfium2.
Yeah, I concur. Being dependent on external binaries is a big limitation, that's why I started working on this...
from pypdfium2.
@adam-huganir I've pushed a commit incorporating more patches (5319f40). The generated binary now works and our tests pass. (Some of the patches apparently can't be applied, but I guess that's an upstream issue. Update: fixed now - I just used the wrong command to apply the patches.)
from pypdfium2.
@adam-huganir I believe that the source build script should be pretty solid now. In case you haven't done yet, could you maybe try it on your device, to confirm that PDFium builds correctly just by running the script, to make sure I haven't missed any external dependencies?
from pypdfium2.
Ok, so fresh clone of main, in a fresh python 3.8.12 environment:
- Source build works with no issues, though I have a bunch of dev dependencies in general on my computer, so this should probably be tested in a vm at some point
- because sourcebuild generates
libpdfium.so
library instead of one namedpdfium
I had to change the load line inpypdfium2/_pypdfium.py
806 # Begin libraries
>> 807 _libs["pdfium"] = load_library("libpdfium.so") # from 'pdfium'
so you will need to change wherever that is generated (I guess cytpesgen call time?)
After changing that and installing Pillow everything worked as expected 👍
from pypdfium2.
Thanks for testing!
because sourcebuild generates
libpdfium.so
library instead of one namedpdfium
I had to change the load line inpypdfium2/_pypdfium.py
I already thought about that when writing the script, and had implemented the option --destname
to allow for renaming the binary, e. g. to pdfium
. However, on my machine it was also possible to load libpdfium.so
, but that might be because I'm using a newer version of ctypesgen that I installed from its current git repository.
From looking at the library loader in the generated bindings file, this naming pattern should be detected:
class PosixLibraryLoader(LibraryLoader):
"""Library loader for POSIX-like systems (including Linux)"""
_ld_so_cache = None
_include = re.compile(r"^\s*include\s+(?P<pattern>.*)")
name_formats = ["lib%s.so", "%s.so", "%s"]
from pypdfium2.
After changing that and installing Pillow
Oh, that's a good catch - I totally forgot to list Pillow as installation requirement in setup.cfg
! I'll fix that soon.
from pypdfium2.
Related Issues (20)
- sourcebuild broken (version detection)
- `image.get_pos()` returns wrong values for images nested in Form XObjects HOT 6
- conda_raw: handle rebuild of same version, prevent scheduled release if not updated
- Library not available: "Cannot close object, library is destroyed..." HOT 4
- conda: consider reading pdfium-binaries version from system?
- Installation failures within a Docker container, problem with ctypesgen? HOT 3
- Parsing special characters leading to inconsistency among different machines HOT 6
- musl binary size concerns
- pdfium fails to load in PHP on Almalinux 8.9 (PartitionAlloc check failure) HOT 8
- Buffer size mismatch when calling `get_text_range` HOT 13
- page.set_rotation() Over Rotating Some Pages
- page.render function returns an unexpected image HOT 7
- PdfDocument.get_page is non-thread-safe HOT 1
- Got different result of "pdfium_page.render()" on MacOS and Linux HOT 1
- Extracting text with special characters HOT 7
- expose more details in PdfiumError HOT 3
- Weird "PDFium: Data format error" when using pypdfium2 in Celery task. HOT 6
- The render func does not render form fields. HOT 4
- pypdfium2 on S390x (ubuntu22.04) HOT 6
- After get_text_bounded, cannot MOVE file HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pypdfium2.