Changes (Release 5.0.0b2)
Summary (pypdfium2)
API changes
- Rendering / Bitmap
- Removed
PdfDocument.render()
(see deprecation rationale in v4.25 changelog). Instead, usePdfPage.render()
with a loop or process pool. - Removed
PdfBitmap.get_info()
andPdfBitmapInfo
, which existed mainly on behalf of data transfer withPdfDocument.render()
. Instead, take the info from thePdfBitmap
object directly. (If using an adapter that copies, you may want to store the relevant info in variables to avoid holding a reference to the original buffer.) PdfBitmap.fill_rect()
: Changed argument order. Thecolor
parameter now goes first.PdfBitmap.to_numpy()
: If the bitmap is single-channel (grayscale), use a 2d shape to avoid needlessly wrapping each pixel value in a list.PdfBitmap.from_pil()
: Removedrecopy
parameter.
- Removed
- Pageobjects
- Renamed
PdfObject.get_pos()
to.get_bounds()
. - Renamed
PdfImage.get_size()
to.get_px_size()
. PdfImage.extract()
: Removedfb_render
option because it does not fit in this API. If the image's rendered bitmap is desired, use.get_bitmap(render=True)
in the first place.
- Renamed
PdfDocument.get_toc()
: ReplacedPdfOutlineItem
namedtuple with method-oriented wrapper classesPdfBookmark
andPdfDest
, so callers may retrieve only the properties they actually need. This is closer to pdfium's original API and exposes the underlying raw objects. Provides signed count as-is rather than splitting inn_kids
andis_closed
. Also distinguishes betweendest is None
and a dest with unknown mode.- Renamed misleading
PdfMatrix.mirror()
parametersv, h
toinvert_x, invert_y
, as the terms horizontal/vertical flip commonly refer to the transformation applied, not the axis around which is being flipped (i.e. the previousv
meant flipping around the Y axis, which is vertical, but the resulting transform is inverting the X coordinates and thus actually horizontal). No behavior change if you did not use keyword arguments. PdfTextPage.get_text_range()
: Removed implicit translation of default calls to.get_text_bounded()
, as pdfium revertedFPDFText_GetText()
to UCS-2, which resolves the allocation concern. However, callers are encouraged to explicitly use.get_text_bounded()
for full Unicode support.- Removed legacy version flags
V_PYPDFIUM2, V_LIBPDFIUM, V_BUILDNAME, V_PDFIUM_IS_V8, V_LIBPDFIUM_FULL
in favor ofPYPDFIUM_INFO, PDFIUM_INFO
.
Improvements and new features
- Added
PdfPosConv
andPdfBitmap.get_posconv(page)
helper for bidirectional translation between page and bitmap coordinates. - Added
PdfObject.get_quad_points()
to get the corner points of an image or text object. - Exposed
PdfPage.flatten()
(previously semi-private_flatten()
), after having found out how to correctly use it. Added check and updated docs accordingly. - With
PdfImage.get_bitmap(render=True)
, addedscale_to_original
option (defaults to True) to temporarily scale the image to its native pixel size. This should improve output quality and make the API substantially more useful. Thanks to Lei Zhang for the suggestion. - Added context manager support to
PdfDocument
, so it can be used in awith
-statement, because opening from a file path binds a file descriptor (usually on the C side), which should be released explicitly, given OS limits. - If document loading failed,
err_code
is now assigned to thePdfiumError
instance so callers may programmatically handle the error subtype. This addresses {issue}308
. - In
PdfPage.render()
, added a new optionuse_bgra_on_transparency
. If there is page content with transparency, using BGR(x) may slow down PDFium. Therefore, it is recommended to set this option to True if dynamic (page-dependent) pixel format selection is acceptable. Alternatively, you might want to use only BGRA viaforce_bitmap_format=pypdfium2.raw.FPDFBitmap_BGRA
(at the cost of occupying more memory compared to BGR). - In
PdfBitmap.new_*()
methods, avoid use of.from_raw()
, and instead call the constructor directly, as most parameters are already known on the caller side when creating a bitmap. PdfPage.remove_obj()
is now aware of objects nested in Form XObjects, and will use the new pdfium APIFPDFFormObj_RemoveObject()
in that case. Correspondingly, a.container
attribute has been added toPdfObject
, which points to the parent Form XObject, or None if the object is not nested.- In the rendering CLI, added
--invert-lightness --exclude-images
post-processing options to render with selective lightness inversion. This may be useful to achieve a "dark theme" for light PDFs while preserving different colors, but goes at the cost of performance. (PDFium also provides a color scheme option, but this only allows you to set colors for certain object types, which are then forced on all instances of the type in question. This may flatten different colors into one, leading to a loss of visual information.) - Corrected some null pointer checks: we have to use
bool(ptr)
rather thanptr is None
. - In
PdfDocument.save()
, changed default offlags
fromFPDF_NO_INCREMENTAL
to0
, as suggested by an upstream maintainer. - Avoid creation of sized pointer types at runtime, to not blow up an unbounded pointer type cache of ctypes, which could effectively lead to a memory leak in a long-running application (i.e. do
(type * size).from_address(addressof(first_ptr.contents))
instead ofcast(first_ptr, POINTER(type * size)).contents
). Thanks to Richard Hundt for the bug report, {issue}346
. The root issue (ctypes using an unbounded cache in the first place) has been fixed recently in Python3.14
. See below for a list of APIs that were affected:- Anything using
_buffer_reader
/_buffer_writer
under the hood (PdfDocument
created from byte stream input,PdfImage.load_jpeg()
,PdfDocument.save()
). PdfBitmap.from_raw()
rsp.PdfBitmap._get_buffer()
and their internal callers (PdfBitmap
makersnew_foreign
andnew_foreign_simple
,PdfImage.get_bitmap()
).- Also, some Readme snippets were affected, including the raw API rendering example. The Readme has been updated to mention the problem and use
.from_address(...)
instead. - With older versions of pypdfium2/python, periodically calling
ctypes._reset_cache()
can work around this issue.
- Anything using
- Improved startup performance by deferring imports of optional dependencies to the point where they are actually needed, to avoid overhead if you do not use them.
- Simplified version classes (no API change expected).
Platforms
- Experimental Android (PEP 738) and iOS (PEP 730) support added.
Androidarm64_v8a
,armeabi_v7a
,x86_64
,x86
and iOSarm64
device andarm64
,x86_64
simulators are now handled in setup and should implicitly download the right pdfium-binaries. Provided on a best effort basis, and largely untested. Testers/feedback welcome. - pypdfium2's setup is now also capable of producing wheels for these platforms, but they will not actually be included in releases at this time. (Once Termux ships Python 3.13, we may want to publish Android
arm64_v8a
and maybearmeabi_v7a
wheels, but we do not intend to provide wheels for simulators.) - iOS will not actually work yet, as the PEP indicates binaries ought to be moved to a special Frameworks location for permission reasons, in which case you'd also have to patch pypdfium2's library search. We cannot do anything about this yet without access to a device or clearer instructions. Community help would be appreciated here.
Setup
- When pdfium binaries are downloaded implicitly on setup or
emplace.py
is run, we now pin the pdfium version by default. This is to prevent possible API breakage when pypdfium2 is installed from source. It should also make thegit
dependency optional on default setup.update.py
andcraft.py
continue to default to the latest pdfium-binaries version. update.py
: added--verify
option to confirm authenticity of pdfium-binaries release via SLSA provenance. Requiresslsa-verifier
. Thanks to Benoit Blanchon for the upstream part. Also thanks to ArcticLampyrid for the pointer.- We finally have a build script that works without Google's toolchain, and instead uses system tools/libraries (
build_native.py
). This has been inspired by thelibpdfium
COPR /libpdfium-nojs
AUR recipes. Thanks to the respective packagers for showing how to do this. By default, this will use the GCC compiler, but Clang should also work if you set up some symlinks. As of this writing, both passes on our Ubuntu x84_64/arm64 CI. - On host platforms not covered with
pdfium-binaries
, setup now looks for system/libreoffice pdfium. If this is not available either,build_native.py
will be triggered. This can also be requested explicitly by settingPDFIUM_PLATFORM
tofallback
,system-search
orbuild-native
. - Reworked setup to expose all targets through
PDFIUM_PLATFORM
. Added propersystem
staging directory. Refactored integration of caller-provided data files to avoid ambiguity. See the updated Readme for details. - The toolchained build script continues to be available as well, but has been renamed from
sourcebuild.py
tobuild_toolchained.py
. - Both build scripts now pin pdfium to the version last tested by pypdfium2-team.
- By default, the build scripts now generate separate DLLs for dependency libraries, but you may pass
--single-lib
to restore the previous behavior of bundling dependencies into a single pdfium DLL. Setup has been changed accordingly to collect libraries with globbing patterns. - With
build_toolchained.py --update
, avoid callinggclient revert
andgclient sync
, because this seems to sync twice, which is slow. Instead, call onlygclient sync
with-D --reset
. - With
pdfium-binaries
, read the full version from theVERSION
file embedded in the tarballs. This avoids a potentially expensivegit ls-remote
call to get Chromium tags. - Also added
GIVEN_FULLVER
andIGNORE_FULLVER
env vars to manually set or skip the full version for other targets. - Use build-specific license files collected by pdfium-binaries. Replaced outdated
LicenseRef-PdfiumThirdParty
withBUILD_LICENSES/
directory. - Take
PDFIUM_BINDINGS=reference
into account on sourcebuild as well. Automatically fall back to reference bindings if ctypesgen is not installed (except on CI). - If packaging with
PDFIUM_PLATFORM=sourcebuild
, forward the platform tag determined bybdist_wheel
's wrapper, rather than using the underlyingsysconfig.get_platform()
directly. This may provide more accurate results, e.g. on macOS. - Avoid needlessly calling
_get_libc_ver()
. Instead, call it only on Linux. A negative side effect of calling this unconditionally is that, on non-Linux platforms, an empty string may be returned, in which case the musllinux handler would be reached, which uses non-public API and isn't meant to be called on other platforms (though it seems to have passed).
Project
- Replaced the bash
./run
file with ajustfile
. Note that the runfile previously did not fail fast and propagate errors, which is potentially dangerous for a release workflow. This had been fixed on the runfile in v5.0.0b1 before introducing the justfile. - CI: Added Linux aarch64 (GH now provides free runners) and Python 3.13 to the test matrix.
- Merged
tests_old/
back intotests/
. - Migrated from deprecated
.reuse/dep5
to more visibleREUSE.toml
. Removed non-standard.reuse/dep5-wheel
. - Docs: Improved logic when to include the unreleased version warning and upcoming changelog.
- Bumped minimum pdfium requirement in conda recipe to
>6635
(effectively>=6638
), due to new errchecks. - Cleanly split out conda packaging into an own file, and confined it to the
conda/
directory, to avoid polluting the main setup code.
pypdfium2 commit log
Commits between 5.0.0b1
and 5.0.0b2
(latest commit first):
60b8f3a
[autorelease main] update 5.0.0b2a751071
autorelease: prepare for another beta release46192bc
Minor Readme improvements746c4ac
Style nits04d0961
changelog: add note about 4.30.1 yankd6a6809
test_setup: use verbose installation8ce7c00
setup/autorelease: properly pin pdfium54d9c96
conda_raw: try to fix description rendering4a4d915
Inline post_ver handling into pack_sourcebuild()a40e020
Readme: Hard wrap caller-provided data files code block63a2b5e
test_setup: remove outdated todo7d1b315
test_setup workflow: drop python 3.8b27c4f0
req/docs: bump sphinx requirementb0bf367
test_setup workflow: use latest pdfium95f8ee1
Makejust check
happierf8f746e
build(deps): bump slsa-framework/slsa-verifier from 2.7.0 to 2.7.14f76a49
setup: introduce subtargets (#363)c3f3d7b
other issue: add stumbling block696ea6a
Pick issue template changes from #363f2c3a54
base.py nit: slightly improve a log message0a8f81c
Drop non-standard REUSE-wheel.tomlecf0427
PdfDocument.save(flags=): FPDF_NO_INCREMENTAL -> 0739b0e6
Verify pdfium-binaries packages via SLSA (#360)8a5e80d
python_api.rst: fix typo in footnote namedc8d108
Flatten BUILD_LICENSES/v8_xfa35a88d2
Add V8 licensesac76eac
Fix typo in build_native.py helpe93c594
readme: clean up an orphaned footnote03ef291
Migrate flags lists to tuplesed8961e
slightly improve readme, reorder members in setup base6eeb544
Revert "Attempt to verify pdfium-binaries builds (#359)"df92e8c
Add musl license to aggregated BUILD_LICENSES8213000
Attempt to verify pdfium-binaries builds (#359)01db641
Check in licenses for V8/XFA enabled builds77d8014
update changelog on remove_obj()20ba258
system_pdfium: join paths properly0e31690
system_pdfium: fix path concatentation914efcb
changelog_staging: try to fix orderd48dcfc
build_toolchained: align parameters9808c3b
build_toolchained: don't use WindowsPath explicitly388ef80
build_toolchained: help nit8c65a9d
Update copyright for dependabot.yml56650c4
Licenses branch (#357)72fdb03
readme: reorder "Thanks to" section3792af7
build_native: build abseil as separate shared library88ae1a8
update changeloga86cd52
setup/sourcebuild improvements (#356)9f76534
Also update the Readme86a77d1
Update changelog864d52b
win/resources.rc: bump copyright year93b4e5b
build_native: prefer NaN over Inf4dd2f3c
build_native: use filter() function3225ed9
hash: add "g" prefix3720692
system_pdfium: use run_cmd() for pkg-config0e05c4c
build_native: get commit hash if building from main7a6e51f
run_cmd: don't merge stderr into stdout by default16dfaa2
conda-helpers build: fix type errorc6f8248
build_native: update a comment1eb51f4
build_native: use git rather than tarballs (#355)7d4091d
build_native: set clang_path only if compiler is actually clang742720f
build_native: slightly correct help7427ea2
setup: look for system pdfium if we don't have binaries (#353)4c3f8d3
readme: avoid meaningless filler phrases8b0d15c
Rename build_lean to build_native1ec780e
build_lean: don't use shutil.which()3df6cce
build_lean: honor clang base path in lld patch95d73b3
build_lean: indicate build from main in version.json865914e
setup.py: expand comments around unknown host6b1b39d
Update changelogde3d19b
build_lean: add option to override number of build jobsf4036f0
test_sourcebuild: try to fix clang build (#352)98a38bd
test_sourcebuild: comment out clang after all6dd18a9
test_sourcebuild: progress on clangd26764e
windows: update build patch3a08903
Update sourcebuild test workflow5051e9d
Passjust check
5b2f26e
Lean build script (#350)8bd57b1
Handle new FPDFBitmap_BGRA_Premul pixel format4f6959f
PdfBitmap.fill_rect(): tolerate older pdfium3cd7096
readme: shorten libreoffice sectioncaee9ea
Slightly update comment in _library_scope.py02783ed
bases: slightly relax warning9551425
cli/render: unwrap default PIL hookf0d6c33
Slightly update changelog_stagingee6698c
build(deps): bump extractions/setup-just from 2 to 33731559
Avoid creation of sized POINTER types at runtime (#347)09e06cc
Replace./run
script with ajustfile
(#344)4e48c34
Readme: Fix docs build command0d38fa1
Update a comment regarding android58ab942
changelog: pypi should now support PEPs 730/7385288325
sourcebuild: add taskb154a30
posconv: add repr90cf7e2
Rename darwin_universal to darwin_univ26fa0058
Add an explicit exception for legacy mac arches0d0b589
Remove note about intelda1a3d0
Add android_arm64 to extra platforms build example2c3d1a9
emplace.py: fix outdated name in help6687b6e
More null-term to NUL-termeda5fc4
changelog nits again4359717
changelog: remove obsolete commentee329f9
PdfImage.extract(): a few cleanupscf8378d
changelog: better explain the benefits ofscale_to_original
46a78f7
GH release: fix inclusion of sdist (amends 9b06578)542f966
Clean up now-unused importb4ff562
Rename "null terminator" to "NUL terminator"f8843dd
Remove the textpage version check as well5a87303
Remove some checks for legacy pdfium versions64aaafe
changelog nits9b06578
Avoid publishing the attestation files
PDFium commit log
Commits between 6996
and 7323
(latest commit first):
7f80ad740
Rename "pDoc" instances to "doc" in //fxjs and //testing02ed40c03
Avoid calls to deprecated GetIsolate methodse8b8183f4
Rename "pDoc" instances to "doc" or "document" in //fpdfsdk and //xfa20159328a
Fix a JPEG2000 decoding regressionb000116ef
Move RGB conversion code out of CPDF_DIB::LoadJpxBitmap()0294ae7cc
Simplify CPDF_SecurityHandler::GetUserPassword()646f89bda
Encapsulate more JPEG2000 decoding logicb5b7809a5
Add alternate CJS_Object constructor for testing.468f8ba85
Make jbig2 data in recently-added file more spec-compliant612e92d68
Roll Catapult from a03b70978cc5 to 26075d3aef24 (34 revisions)e51c3ed6c
Roll Memory Tools from cc38b4b04fbf to 7f4bdaac14af (1 revision)9128fd668
Roll Depot Tools from 909e2921a011 to dd6e72e96818 (41 revisions)0db284a42
Fix drawing of MMR general regions in JBIG2 imagesf87423057
Use NOTREACHED() in more switch statements inside cpdf_dib.cpp0a845e675
Get rid of JpxDecodeAction::kFail enum value519938c8f
golden_fetch.sh: Tolerate dashes in filenames0289dc71b
Fix decoding of halftone JBIG2 files that use HENABLESKIP98b41bcc4
Add comments for UNSAFE_TODOs in cpdf_pageobjectholder.cpp5b21a9c19
Update test expectations for macOS 14441eafa8b
Roll goldctl from 2da73c426d1b to 39c6fad2c962030a06e26
Update siso_version to f96f46a8e4cf30c097110903d4b71516ef976fb6ea5d1f0b8
Roll third_party/skia/ e8ef1a27c..34a40032f (89 commits; 9 trivial rolls)3c3290b5c
Update skia/BUILD.gn and roll third_party/skia71eeeea2c
Roll third_party/skia/ df7ab9373..ddb944ebd (134 commits; 20 trivial rolls)305f67d88
Spanify fx_skia_device.cpp and roll third_party/skia58e257468
Roll third_party/rust, third_party/skia6759df861
Roll tools/clang/ a8d02857f..b17ffb3e8 (44 commits)e8def5657
Roll third_party/libunwind/src/ e3eb847e5..634c60974 (3 commits)4ab45c56d
Roll v8/ e82d457e6..9bfa30b42 (688 commits)9f3bd4ab8
Update reclient_version to 0.179.0.28341fc7-gomaip4b9edc5ba
Roll third_party/libc++abi/src/ aca866473..4a1b48642 (5 commits)3906df47e
Roll third_party/llvm-libc/src/ 81a117beb..f37e727ed (98 commits)790e3d1c0
Roll libpng from 058e1ebb3139 to cb7e5155c4a1 (1 revision)ef39ac22b
Rename resultdb_version DEPS entry to result_adapter_revision35490756a
Update gn_version to 97b68a0bb62b7528bc3491c7949d6804223c2b826fe031a59
Roll third_party/nasm/ 9f916e90e..e2c93c349 (2 commits)a71746210
Roll third_party/googletest/src/ e9092b12d..c67de1173 (10 commits)bfec2a4f5
Roll third_party/freetype/src/ 320b72a29..39d85f169 (34 commits)effd2bcfc
Roll base/allocator/partition_allocator/ e3668842c..79b418050 (15 commits)bc45accd9
Roll third_party/simdutf/ 9d3e4d7c1..a1046f20f (2 commits)f3033bbec
Roll Zlib from a1f2fe223f55 to 4028ebf8710e (2 revisions)65003eb85
Do IWYU for free()fdb2a3c32
Avoid -Wcharacter-conversione697afe4f
Use default/projection forms of C++20 std::ranges::lower_bound()27620197d
Fix UNSAFE_TODOs in cpdf_security_handler.cppf2d1266fe
Fix FPDFText_GetText() handling with invalid characterse50e167c9
Fix UNSAFE_TODOs in cpdf_crypto_handler.cpp429bf9f4c
Add embedder test for FPDFText_GetText() behavior with invalid charsc8d8bdcb9
Fix truncated hash value used in GetEventParaInfoByName().af8ef613c
Remove another is_nacl test from PDFium build file.fb4c7337a
Avoid some copies in CPDF_TextPage::AddCharInfoBy*()e5f58bf24
Remove IS_NACL codeb86a4ccff
Roll Jinja2 from 5e1ee241ab04 to c3027d884967 (1 revision)698a1addd
Roll Catapult from 938fc9953b41 to a03b70978cc5 (27 revisions)faeb83f19
Roll MarkupSafe from 9f8efc8637f8 to 4256084ae141 (1 revision)1dbcd29c4
Roll Depot Tools from e0ece52cfb4f to 909e2921a011 (49 revisions)b6457bccc
Avoid loose bounds for invalid char codes9ee2baba3
Convert UNSAFE_TODO() to UNSAFE_BUFFERS() at API point.a4646686a
Ensure all TrueType Unicode cmap formats are equal5da0e90fa
Treat all Unicode character maps like MSUnicodeb8e298a2c
Use DecodeTestData::input_span() to avoid UNSAFE_TODOs0f7507cc6
Avoid -Wcharacter-conversion warnings6c8172a19
Change some comments in core/fxcrt/utf16.h to static_assertsfd17f2f5f
Fix UNSAFE_TODO() in BC_OnedCode128Writer_unittest.cpp.06efa0399
Improve comment for flags parameter to FPDF_SaveAsCopy()522bc4598
Stop using soon-to-be-deprecated V8 Apisfe0d0540a
Roll goldctl from db7e9d50d2f8 to c0a24f7ae77d421860a28
Discard portion of decrypt key longer than 32 bytes.591ce25a2
Fix AES block size as 128 bits (it is always that).08585679e
Remove last memcpys from AESa06ddbc0f
Resolve some UNSAFE_TODO() in AES096f61b5c
Ignore whitespace in ToUnicode codepoint strings54b23007a
Fix Form XObject content regeneration when removing objects7fc72177a
Pass span to CRYPT_AESSetIV()4c40fce83
[fxge] Modernize cfx_fillrenderoptions2d93912bb
Beef up AES test cases prior to spanificationd70b6fd6a
Sync third_party/googletest/README.pdfium with Chromium's58ab383fc
Roll libpng from 28213bcabe21 to 058e1ebb3139 (2 revisions)be8a89829
Roll third_party/freetype/src/ 2f2dfad59..320b72a29 (74 commits)abfac2f8e
Roll third_party/freetype/src/ 4792cff5c..2f2dfad59 (1 commit)0b93112b5
Roll third_party/freetype/src/ 79912716e..4792cff5c (19 commits)7ae4bd4f2
Fix undo counting in CPWL_EditImpl::ReplaceSelection for cut operationsc3c804498
Add FPDFPage_InsertObjectAtIndex() API58b63c9ef
Roll third_party/rust/ e4c474081..483563e40 (50 commits)f9977af27
Roll third_party/llvm-libc/src/ e9d9246e8..81a117beb (47 commits)66eadc183
Roll third_party/libc++abi/src/ f2a7f2987..aca866473 (8 commits)2a731f818
Roll third_party/libunwind/src/ 81e2cb40a..e3eb847e5 (6 commits)4e4d7a14a
Current font need not contain part of ActualTextc374e352f
Roll third_party/skia/ b82ac22e2..eaa402365 (272 commits; 39 trivial rolls)cff4f499c
Update resultdb_version to git_revision:5fb3ca203842fd691cab615453f8e5a14302a1d8a61a35790
Update gn_version to 99a82ca8ee957da829d6313b818b99df8e7ccb801e3f4a27
Roll base/allocator/partition_allocator/ 299f79368..e3668842c (15 commits)f532682a2
Roll third_party/googletest/src/ 90a415211..e9092b12d (11 commits)a650631fd
Small code simplification in patch drawing0dd9ef40a
Roll v8/ 4d69b8272..e82d457e6 (345 commits)24684aa10
Roll Code Coverage from dea8d7c1bd51 to ef6864ec11f1 (2 revisions)95a31df84
Roll Zlib from 6f9b4e619240 to a1f2fe223f55 (8 revisions)ea75ab993
Remove FXARGB_SetRGBOrderDIB()190fe4d3e
Correctly handle component bounds for shadings 4-7f16c9fa83
Spanify FXARGB_SetDIB()a1375d8d9
Store 8-bpp mask value as a separate variant in CFX_ScanlineCompositor205d9d92b
Use structs to represent mask colors in cfx_scanlinecompositor.cppea8017210
For shading types 4-7, evaluate function per pixel if present200e96136
Roll abseil-cpp, build, buildtools, clang, icu and tools/rust217e37a83
Rename "pDict" instances to "dict"06c12145c
pdfium_test: Add a --render-repeats= flagd67b1b105
Support Siso builds66b63bba6
Add another test patch to shade-tensor.ine43a86c0f
Add scoped objects and methods for saved doc / page in EmbedderTest8db533196
Rename most "pFont" instances to "font"669737aaf
Roll Depot Tools from 1fcc527019d7 to e0ece52cfb4f (51 revisions)77c73af7d
Roll Catapult from 000f47cfa393 to 938fc9953b41 (65 revisions)ae7d47693
Remove TODO about upstreaming InsertBraces to Chromium clang-format61cab1eb0
Rename most "pDocument" instances to "document"cf433ae55
Avoid a case of float-int-float conversion in CPDF_Page92725d5c9
Add freetext annotation support to FPDFAnnot_GetFontColor()b81e7ceb3
Add experimental FPDFAnnot_SetFontColor() APIbe2fc5287
Rename IPDF_Page::GetDisplayMatrix()2b754ba30
Handle negative rotation case in CPDF_Page::GetDisplayMatrix()13cb04222
RenameiRotate
torotation
139579cce
Shorten ScopedEmbedderTestPage to ScopedPage9d59dcd0a
Use ByteStringView in more methods17201fb9f
Rename CJS_Document::getPropertyInternal()f40f993d3
Change CPDF_Dictionary getters to take ByteStringView83f11d630
Fix build with system libpngcffbd3c96
Add FPDFFormObj_RemoveObject API to remove objects from forms61e138929
Roll goldctl from cce6d37d624f to 649709ff0442baab5f7cd
Roll v8/ bb856da62..4d69b8272 (168 commits)00ca21a09
Roll v8/ 0ee17041e..bb856da62 (2 commits)b461f27c0
Roll v8 and simdutf175e50930
Add third_party/dragonbox dependencyf01c61742
Roll base/allocator/partition_allocator/ d691f607f..299f79368 (25 commits)58e8e0ffa
Roll base/allocator/partition_allocator/ a5083e082..d691f607f (1 commit)d3b3c3590
Roll base/allocator/partition_allocator/ 53e916ce2..a5083e082 (14 commits)df5eed8d8
Only checkout Highway when V8 is being checked outa378c291e
Roll build, clang, and tools/rustc9eac6c71
Roll build/ 2e5d994c2..28c2aef2b (1 commit)155e8a04f
Roll build/ 49491ecc7..2e5d994c2 (24 commits)5a18d4587
Roll buildtools/, third_party/libc++/src17d5aeac6
Roll third_party/skia/ 290c4fb91..b82ac22e2 (110 commits; 9 trivial rolls)6551a206a
Roll third_party/skia/ 68e53210b..290c4fb91 (1 commit)0be9b6bf1
Move GetDefaultAppearanceString() into cpdf_defaultappearance.cppb1df13e6f
Add/remove STL includesa9fd58f6f
Replace a (1.0f / 2.0f) with 0.5f2cadd25ea
Add test case for a bunch of shading type 7 (and 6) corner cases.c6b8c8e6a
Change CPDF_Dictionary::KeyExist() to take ByteStringView429e3b091
Remove out-parameter from CPDF_DefaultAppearance::GetFont()e49c5ef91
Fix testing_rust_revision after pdfium-review.googlesource.com/131370cce603a3d
Stop handling coons patches in CFX_SkiaDeviceDriver::DrawShading3d37e944c
Implement support for drawing bezier patches61be18b57
Use absl::flat_hash_set inside cpdf_nametree.cpp28557e89b
Remove explicit template argument from ScopedSetInsertion usersc432752b4
Add test for multidimensional reinterpret_span<>() flattening.a907ba08a
Add FPDFAnnot_SetFormFieldFlags API to modify form field flags0034a5091
Improve FPDF_GetPageWidthF() / FPDF_GetPageHeightF() documentationc92cd178b
Rewrite CPDF_Annot::AnnotSubtypeToString() with switch-statementb8e8a35d0
testing/tools: Add a script to renumber objects in file order88d42b166
Extend shade.pdf test93ea99df7
Explain preconditions whenever UNSAFE_BUFFER_USAGE.3e8d18425
Fix GCC build issue in fxcodec.DecodeDataZeroSize test (try 2)1ece8a1b7
Clean up CPDF_DefaultAppearance3ef4650c6
Update reclient_version to 0.177.1.e58c0145-gomaip38d16b8b7
Roll third_party/googletest/src/ 52204f78f..90a415211 (9 commits)642c3be53
Roll third_party/nasm/ 767a169c8..9f916e90e (426 commits)d6ebd129e
Roll v8/ 04fa9cbe2..d91bd611c (362 commits)8b14de9bb
Roll third_party/libc++abi/src/ 94c5d7a8e..f2a7f2987 (8 commits)f9b941a26
Roll third_party/skia/ 7d56b9cc7..68e53210b (103 commits)0ace6369f
Roll third_party/libunwind/src/ 62e217a12..81e2cb40a (2 commits)e265bde6f
Fix botched UnownedPtr refactor4d936fae8
Revert "Rework inline image parsing in content streams"6058b2ad6
Revert "Fix crash in CPDF_StreamContentParser::Handle_BeginImageData()"46f456133
Roll third_party/llvm-libc/src/ 4b760d9a7..e9d9246e8 (49 commits)136d704af
Roll third_party/freetype/src/ 82090e67c..79912716e (81 commits)acffebe1b
Roll third_party/abseil-cpp/ 1e8b41f1e..91f1a3775 (8 commits)9490e64a3
Modernize all remaining operator==() code.1eb36c32e
Replace extern const with inline constexpr in //constantsaf6de9b6a
Modernize PDFium strings operator==().7d8f6a47b
Update android_toolchain_version to KXOia11cm9lVdUdPlbGLu8sCz6Y4ey_HV2s8_8qeqhgC37b2c595a
Roll third_party/rust/ d05fde505..e4c474081 (35 commits)3b98432e5
Update gn_version to 487f8353f15456474437df32bb186187b0940b45e73054c2e
Modernize StringViewTemplate::operator==().23f69c918
Roll third_party/icu/ c9fb4b3a6..4c8cc4b36 (2 commits)6b0300a6b
Fix GCC build issue in fxcodec.DecodeDataZeroSize test2ab9e9324
Roll Zlib from ce5a169f5017 to 6f9b4e619240 (9 revisions)6114b3b18
Roll Memory Tools from 14089a7f57fa to cc38b4b04fbf (1 revision)d1ee8b060
Remove some strlen() calls using pdfium::span_from_cstring()41e5f4098
Replace fxcrt::span_equals() with pdfium::span::operator==6ec1d2f92
Add constexpr {Byte,Wide}StringView unit testsf92aa15fa
Update pdfium::Contains() from Chromium0f84b859e
Replace MakeFakeUniquePtr() with MatchesUniquePtr()9444ec89c
Replace fxcrt::ToArray() with std::to_array()6b13180e1
Convert to C++20 requires clauses in span_util.hae0ead6f6
Remove unnecessary stl_util.h includes7daaacfa0
Convert to more C++20 requires clauses in //core/fxcrta66a29a3d
Convert to C++20 requires clauses in //core/fpdfapi789082d68
Convert RetainPtr<> templates to use C++20 requires clausese90e389f9
Remove std::span conversion code from span.h5c21bbded
Remove unused internal templates from span.h.ceaecc2e4
Actually remove pdfium::make_span().6397490e1
Replace calls to pdfium::make_span() with CTAD.d2b5a2886
Make pdfium::span<> range constructors consistent0496d8061
Use fast_float::chars_format::allow_leading_plus optionba9bff4f4
Remove uses of deprecated download_from_google_storage --no_auth in DEPS5da39fb3a
Remove <string.h> inclusion from span.hd45defc2d
Use inline constexpr in cmaps headers69686ef8c
Update pdfium::span<> to more closely match C++20 base::span<>bce7ccbf7
Use size_t for indices in CPDF_CMap::GetNextChar()87a497287
Add API to retrieve MIME type from PDF attachments384d40930
Fix nullptr deref in CFXJSE_FormCalcContext::Time2Num()02c94a325
Use std::ranges::find() and find_if()cf64c421d
Handle arrays of 1-in, 1-out functions for shading types 4-7953632ef5
Roll Catapult from 5bda0fdab9d9 to 000f47cfa393 (43 revisions)52aa19e0a
Roll Code Coverage from 86ab7fc653c4 to dea8d7c1bd51 (11 revisions)69bef25f9
Roll Depot Tools from 3ce438f7f0ba to 1fcc527019d7 (91 revisions)c440145ff
Prepare more files for update to pdfium::span<>d91512df6
Roll v8/ c206c46cd..04fa9cbe2 (552 commits)67ca3cf33
Fix crash in CPDF_StreamContentParser::Handle_BeginImageData()e72f115e7
Prepare PDFium for updated base::span implementation.8f09a6363
Add LIFETIME_BOUND to core/fxcrt/compiler_specific.h.0557a2212
Update core/fxcrt/numericsc31ed43be
Implement PDF version handling from catalog dictionaryc0bc98d0c
Rework inline image parsing in content streamsef236b14e
Improve CPDF_StreamParser::ReadInlineStream() span usage23963509e
Ignore inline images without EI operators694199148
[fxcrt] Remove IsPowerOfTwo()69bb6260d
Remove fxcrt::Fill()dbf0a1bda
Replace fxcrt::Fill() with std::ranges::fill()309d5e923
Convert remaining code to google_style_ members7c525236c
Roll goldctl from bbe5d9f7f74b to cce6d37d624f042b29dd9
Convert to google_style in core/fpdfapi/renderf7649ff74
Convert to google_style in core/fpdfapi/pagef6ad5f322
Convert to google_style_ naming in core/fpdfapi/parser.660770699
Rewrite core/fpdfapi/{cmaps,font} to google_style_ members3d8aaf446
Update README URLs for filing a new bugc1efd963d
Clang-format remainder core files27136666b
Clang-format //testinge7231ebb3
Clang-format //fxjsf6d3ca2cd
Clang-format core/fxcrt3cf23e17f
Clang-format core/fpdfapi1847ad5d0
Clang-format core/fxgefb910dcc5
Replace fxcrt::Fill() with std::ranges::fill() in one spotb5b7e1eb4
Convert to google_style_ member names in core/fxge.cdd0eae7f
Improve a few member variables names in fpdfsdkd0dcedc01
Clang-format //fpdfsdk0a26adce0
Clang-format core/fxcodec5af729ea8
Clang-format core/fpdfdocf15df302f
Clang-format //fxbarcode53b8f9cdd
Fix references to non-existent APIs in fpdf_annot.h127007956
Clang-format //xfa3dba1b629
Convert to google_style_ members in fpdfdocb3466cc54
Convert to google_style_ member naming in fpdfsdk/073395985
Roll third_party/skia/ b5b6f29d6..7d56b9cc7 (100 commits)f9c12a8d7
Roll build, clang and rusta4b11d6be
Roll DEPS for abseil, buildtools, and libc++04685b5b9
Clamp PDFium indexed color space hival0c880b1f8
Add pixel test for invalid indexed colorspace hivalcbc692a42
Convert to google_style_ members in core/fxcodec.812b97001
Roll Zlib from 788cb3c270e8 to ce5a169f5017 (1 revision)eeaea7e7f
Avoid sharing resources dict entries in CPDF_PageContentGeneratored3b0b84d
Improve shared resources dict detection in CPDF_PageContentGeneratorb0972c310
[fpdfdoc] Refactor GetAutoFontSize() to use std::lower_boundd4b22e9d7
Convert to google_style_ members in fwl/7b5cb7854
Change FPDFImageObj_GetRenderedBitmap() to take clip path into account746bdf7d8
Use std::variant inside CPDF_StreamContentParserab1a89811
Convert to google-name_ style in fpdfxfa/572844143
Let FPDFPageObj_SetMatrix() reset dirty bit if restoring image matrix47a0b779b
Convert to google_style_ members in xfa/4cc351bb8
Roll third_party/llvm-libc/src/ a02de4d0d..4b760d9a7 (96 commits)8f2fa296e
Roll base/allocator/partition_allocator/ 46d880ff6..53e916ce2 (11 commits)3212699ee
Roll third_party/googletest/src/ 24a9e940d..52204f78f (9 commits)4abda5669
Roll third_party/nasm/ f477acb10..767a169c8 (1 commit)fa8babff7
Roll third_party/simdutf/ 5a9a2134b..40d1fa26c (1 commit)d00aeec82
Consistently call ProcessGraphics() in CPDF_PageContentGenerator1adeee0a5
Convert to google-style_ member names in fxbarcode/54c3b26e6
Add buganizer component ID to DIR_METADATAa4609adba
convert core/fxcrt/css to google_style_ members06e0f2399
Rewrite fxjs/ directory to use google_style_ member names.82a3c81d7
Roll third_party/skia/ 2bc5ed566..b5b6f29d6 (196 commits)d7154f0f0
Roll third_party/freetype/src/ 5d4e649f7..82090e67c (4 commits)cafb72a49
Clang-format unit tests29ab2014d
convert fxcrt/ to google-style_ naming.c521814ac
Spanify FPDFText_SetCharcodes()b6e873162
Roll third_party/icu/ d30b7b0bb..c9fb4b3a6 (1 commit)61cb98e49
Roll tools/clang/ c5329b322..d05ab7b5b (16 commits)b780c21ce
Roll Depot Tools from 50eedb1b5a74 to 3ce438f7f0ba (58 revisions)2f4560fc0
Roll Catapult from 93e56257a508 to 5bda0fdab9d9 (31 revisions)89bebf8b1
Roll Code Coverage from 13e2c8b82298 to 86ab7fc653c4 (5 revisions)c9f0b0fe8
Add FPDFBitmap_BGRA_Premul formateb636a3be
Refine NeedToPremultiplyBitmap() logic9fa4c12a4
Remove do_premultiply parameter for CFX_DIBitmap::ScopedPremultiplier1b73b0212
Consolidate pre-multiply checks into a single functiona59bf4f72
Rename cpdf_interactiveform* to use Google C++ variable names533bbc831
Fix various nits in cpdf_interactiveform.cpp098ed663b
Clang-format cpdf_interactiveform.cpp519d7d5fc
Fix rendering for freetext_annotation_without_da.in8174ab960
Remove CFXColorFromString()a71df3276
Fix rendering for freetext_annotation_with_da.ind75f1ef6b
Fix minor issue with freetext annotation test files429385943
Update fixup_pdf_template.py for Python 3.1289da8e11e
Roll third_party/skia/ 6ca926db5..2bc5ed566 (1 commit)fec010c74
Remove unnecessary virtual specifierscc534b45e
Reuse AnnotationStampWithApChecksum()24779b061
Add CHECK to validate Flate encoding success69c006aa6
Roll Instrumented Libraries from 3cc43119a291 to 69015643b3f6 (1 revision)3f6542840
Roll goldctl from 657d7bc2c9d8 to 3f888b0b05df9232d7c94
Reduce max bitmap size for pdf_scanlinecompositor_fuzzer122a3add7
Still even less memset() in embedder tests.304b383c8
Avoid another memset in scan line compositor.30130534e
Avoid still another memset in embedder testscffff9df9
Use aggregate init to avoid memset in CFGAS_FontMgr.fd8dc49b2
Use aggregate init to avoid memset in embedder test.fb252723b
Ban abseil variant.h and utility.h libraries in pdfium054a44d24
Add some string constants to CPDF_SimpleFont17414d396
Migrate absl variant.h and utility.h in pdfium9b896087d
Roll abseil, build, buildtools and libcxx93b90e60e
Return void from CXFA_Node::CalculateWidgetAutoSize().50eaa517a
Make ConvertColorScale return void instead of bool.ab8934ea5
Enable unsafe libc call warnings for PDFium.67d63fbbc
Roll build, clang, and rust6b44f7c50
Make ClearEmptySection() return void.f2b54058b
Make CPDF_FormField::SetItemSelection() and friends return void150f4db10
Convert several CPWL_EditImpl methods to return void.045bfddf5
Return void from UpdateFWLData() and PerformLayout().33b2eb48e
Make CXFA_LocaleValue::SetDate(), SetTime() and SetDateTime() void.fad67dead
Check more functions returing bool in tests.5dd766372
Make DoActionFieldJavaScript() return void.2b4336400
Make CXFA_FFDocView::InitValidate() and RunValidate() return void.a1c7c8d5e
Make EnumFontList() return void6b27c718b
Mark ScanlineDecoder::Rewind() as nodiscard03193a5cc
Roll third_party/libjpeg_turbo/ 927aabfcd..e14cbfaa8 (2 commits)5a1649e98
Propagate Rewind() errors in ScanlineDecoder::SkipToScanline()9d43ad95e
Avoid integer overflow when calculating loose char box139b93407
Roll third_party/skia/ 01b6ccad8..6ca926db5 (146 commits)a769c3f17
Make libunwind DEPS entry Android-only6fede0535
Roll build, buildtools, and libc++c6e8d0640
Roll third_party/abseil-cpp/ 221ee3ed3..2705c6655 (2 commits)375ae5289
Update gn_version to 4a8016dc391553fa1644c0740cc04eaac844121e2661abc18
Roll third_party/libunwind/src/ e55d8cf51..62e217a12 (3 commits)cc0f452e0
Fetch architecture-specific GN binary on Linux33c290918
Roll buildtools and libc++a6ca36580
Remove SkColorPriv.h #includes9cd9895da
Roll build, clang, rust257045286
Roll third_party/llvm-libc/src/ 533347237..a02de4d0d (68 commits)3875d6c15
Roll base/allocator/partition_allocator/ f3153d2c6..46d880ff6 (10 commits)be03c8023
Roll third_party/freetype/src/ b1f478508..5d4e649f7 (3 commits)9d98284e3
Remove uses of SkColorPriv functions24ad5f2c8
Roll third_party/skia/ 6f17f2ebb..01b6ccad8 (21 commits)9f627e879
Roll third_party/googletest/src/ e235eb34c..24a9e940d (12 commits)eca0ccd35
Roll third_party/icu/ bbccc2f6e..d30b7b0bb (2 commits)bf0b34dac
Roll v8/ d53112274..c206c46cd (376 commits)184f4a5e2
Roll Catapult from d5166861902b to 93e56257a508 (21 revisions)5f2a784ba
Roll Code Coverage from 22e1f7663197 to 13e2c8b82298 (5 revisions)311e0a259
Roll Depot Tools from 98b7273c8d49 to 50eedb1b5a74 (80 revisions)9afffebfa
Skip loose charbox calculation if the charbox is emptyb6f8d57db
Demonstrate FPDFText_GetLooseCharBox() bug with generated charseb629927b
Roll goldctl from 5d5ebf486dd1 to 53ff30f1de82f4f666cbd
Avoid hard-coding libjpeg header paths154cd3d27
Add missing FPDF_CALLCONV for "is active" page object functions5e50d5e2b
Remove no-op Skia defines59ad47e26
Save loose char box values in CPDF_TextPage::CharInfob3673bb15
Store frequently used function results in variables in GetLooseBounds()eebb95eb9
Roll v8/ 75be3dcb5..d53112274 (677 commits; 1 trivial rolls)6fb0dfc23
Add simdutf dependencyd7de7a817
Redo FPDFText_GetLooseCharBox() top/bottom calculation38cb4a42e
Roll third_party/skia/ 975788ea9..6f17f2ebb (344 commits)e82997582
Update skia/BUILD.gn to use gni filegroups for font port files6ef2b9f2d
Roll third_party/fast_float/src/ 3e57d8dcf..cb1d42aaa (40 commits)abf46a2fe
Roll third_party/libc++abi/src/ 83dfa1f5b..94c5d7a8e (9 commits)a20946ae8
Roll base/allocator/partition_allocator/ 85d14cbcf..f3153d2c6 (6 commits)fd6531fb3
Remove unused CFX_Face::GetHeight()ae69e3abd
Roll abseil, build, buildtools, clang, libc++, llvm-libc, rust togetherbd9c16f51
Make sure loose char box is at least as big as regular char box4d89054be
Flip top/bottom values for FPDFText_GetLooseCharBox() with vertical text8e626f4ab
Call FPDFText_GetCharBox() in FPDFTextEmbedderTest.TextVerticaldc0653ef3
Add FPDFText_GetLooseCharBox() test case for diacritics3cd6c8ff3
fixup_pdf_template: Don't count final newline in {{streamlen}}600248a49
Tolerate bfchar / bfrange sections with more than 100 entries76a74cb97
Roll Memory Tools from 8e9b58419b41 to 14089a7f57fa (1 revision)ad9d0b73e
Roll Zlib from b763971bcaa3 to 788cb3c270e8 (3 revisions)bed1f9450
Add regression test for /ActualText parsing340b95514
Fix some formatting issues in fpdfview.h01a53b0c0
Add pixel test for PDF with /NeedAppearances truec58db783d
fix extraction of marked textedeeceeea
Add another indexed jpeg2000 testf32695da8
Remove MSVC-specific code330540390
Roll third_party/abseil-cpp/ 72093794a..f9b083a49 (12 commits)a2dd5077f
Roll third_party/freetype/src/ afc7000ca..b1f478508 (36 commits)61da0de7e
Update gn_version to ed1abc107815210dc66ec439542bee2f6cbabc00bf822ae22
Roll third_party/libunwind/src/ d1e95b102..e55d8cf51 (1 commit)4bac39b85
Roll third_party/googletest/src/ 7d76a231b..e235eb34c (7 commits)e914d6b03
Use StringTo{Float,Double}() in more places067011d41
Switch one FXSYS_wcstof() caller to StringToFloat()100e24682
Switch FXSYS_wcstof() to use fast_floatc80dc394d
Avoid UTF-8 conversion in wide versions of StringTo{Float,Double}()698283cd5
Test more WideString inputs with StringTo{Float,Double}()c5a175051
Suppress unsafe_libc_call (Debug only) in CFXJSE_Context.92e774c0b
Fix JPEG2000 image decoding with an indexed colorspace5f2ff3938
Enable death tests for {Byte,Wide}String in release builds.40f8124e0
Remove CXFA_FMLexer::Token::ToDebugString().97aaf8bda
Remove the /wd defines from BUILD.gn643e4267f
Default pdfium to using an optimized allocator.f37509d40
Roll base/allocator/partition_allocator/ 9cab8b0d1..85d14cbcf (14 commits)4d39fb694
Roll Code Coverage from 5e7c277c0d8c to 22e1f7663197 (2 revisions)208278ad9
Roll Depot Tools from 58625e82c685 to 98b7273c8d49 (86 revisions)6299cda27
Roll Catapult from 86d6f8ee6130 to d5166861902b (22 revisions)afaaf5517
Skip some WideString creation in CPDF_TextPage::ProcessTextObjectItems()