3.0.0b1
Pre-release
Pre-release
Changes (Release 3.0.0b1)
Summary (pypdfium2)
-
Support model
API-breaking changes
- If the target page of a bookmark cannot be identified,
OutlineItem.page_index
is nowNone
rather than-1
, to avoid accidental reverse list indexing and to enforce that callers properly handle this case. Moreover,OutlineItem.is_closed
is nowNone
rather thanFalse
if the bookmark has no kids. PdfPageObject.get_type()
was replaced with atype
attribute.PdfPage.count_objects()
was removed. UsePdfPage.get_objects()
or the raw PDFium API instead.- If a negative index is passed to
PdfDocument.new_page()
, it is now interpreted in reversed direction, rather than inserting at the beginning. - PDFium is now provided with an external, python-allocated buffer for rendering. This has numerous advantages, most notably that callers don't need to free resources anymore.
PdfPage.render_base()
now directly returns a ctypes ubyte array;BitmapDataHolder
has been removed. - Changed rendering parameters
annotations
was renamed todraw_annots
colour
was renamed tofill_colour
and now only takes a list of 4 values for simplicity - it may not be 3 values orNone
anymoreno_antialias
has been replaced with separate boolean optionsno_smoothtext
,no_smoothimage
, andno_smoothpath
Other changes
OutlineItem
now contains information on the number of sub-items (n_kids
attribute).- All document-level methods that take a page index now accept negative values for reverse indexing (except the rendering methods).
- New method
PdfDocument.get_page_size()
to retrieve page size by index without needing to load aPdfPage
(usesFPDF_GetPageSizeByIndexF()
under the hood). - New rendering parameters added:
colour_scheme
,fill_to_stroke
,force_halftone
,draw_forms
,rev_byteorder
,prefer_bgrx
,force_bitmap_format
,extra_flags
,allocator
, andmemory_limit
. - Added new
render_to()
functions toPdfPage
andPdfDocument
that take a custom bitmap converter, to transform the ctypes array to a different object. A set of built-in converters is provided with theBitmapConv
class. Confer the updated API documentation for details. The previous rendering functions (render_topil()
render_tobytes()
, ...) are still around as aliases but might be deprecated eventually. - New rendering target
numpy_ndarray
added. - The
pil_image
rendering target now accepts aprefer_la
parameter to request automatic conversion ofBGRA
/RGBA
toLA
if rendering in greyscale mode with alpha channel. PdfPage.get_objects()
can now recursively descend into Form XObjects.- Form environments are now initialised/exited on document level rather than on page rendering. In the course of this work, a segmentation fault source was eliminated, related to a formerly undocumented requirement of PDFium regarding object lifetime. Whether the segmentation fault would actually take place was dependent on Python garbage collection behaviour. This did not appear to happen under normal circumstances, so the issue remained unnoticed for a long time.
- If the target page of a bookmark cannot be identified,
-
Setup code
$PYP_TARGET_PLATFORM
was renamed to$PDFIUM_BINARY
, the valuesdist
was renamed tonone
.- When doing an automatic release, repository changes are now only pushed after successful wheel building, to avoid leaving the repository in an invalid state in case some earlier step fails.
- pypdfium2 now declares a no-op setuptools extension to prevent wheel content from landing in a
purelib
folder. Some systems use this information to separate platform-dependent packages from pure-python packages (i. e./usr/lib64
instead of/usr/lib
). Confer PEP 427. - Autorelease now properly takes existing beta tags into account for its version changes.
- PDFium's commit log is now shown with GitHub releases.
- The wheel packaging script now restores in-tree artefacts from a possible editable install.
- Platform files are now detected in a more robust way. If missing, a proper exception will be raised.
- Platform data directories are now annotated with a text file storing the pdfium version, to prevent a possible mismatch between the state of
version.py
and the actual version of the used binary. The update and build scripts do not directly change the main version file anymore, but defer the changes tosetup.py
. - Missing platform files are now always procured implicitly on installation. If platform files exist already but are outdated, they will be updated by default. You may opt out by creating an empty file called
.lock_autoupdate.txt
indata/
. - A
MANIFEST.in
file was added to avoid being dependent onsetuptools_scm
. - On setup, dependency checks are now only done for system commands. The wonky implicit installation of missing Python packages was removed. If opting out of build isolation, callers should properly install setup dependencies beforehand.
-
Documentation
- Rewrote the project's
README.md
. Added more support model examples and an extensive guide regarding the raw PDFium/ctypes API. - Improved docstrings and included type hints.
- Rewrote the project's
pypdfium2 commit log
Commits between 2.11.0
and 3.0.0b1
(latest commit first):
03b379f
[autorelease] update changelog and version file75b972c
update_pdfium: make max_workers configurable69a0b77
autorelease: nevermind, always include the log76fc08e
Finalise changelog_staging21dc9b0
Misc improvementsb02b67b
workflow: re-activate schedule0378257
Slightly improve converter docs6a24cc4
Revert "textpage: replacecount_chars()
withchar_count
attribute"7f2e9ff
Update some docs18221b4
readme: suggest usingget_functype()
1b8d7f1
tocprinter: avoid some variable assignmentsff52551
Update tasks6d00654
Make most of_utils.py
public2c82267
readme: fix use of non-public membercc70047
utils: renamebg_colour
tofill_colour
d960830
Rename back fromcolor
tocolour
69c780f
rendering: rework colour integration26bf175
textpage: replacecount_chars()
withchar_count
attribute038feb2
Improve string decoding6b14960
docs: decide not to deprecaterender_to*
methods just yet97d2243
Update rendering CLIfc736ec
auto_bitmap_format(): flatten if/else treec44d81a
multipage renderer: add missing close() callsf8608e8
SetOutlineItem.is_closed
toNone
if it has no kids1f2b75b
toc/OutlineItem
: Addn_kids
attribute1093579
Provide means to plug in custom converters (#140)e513026
render_topil: use frombuffer() rather than frombytes()d17cffd
autorelease: make commit log collapsible9d4a3fc
autorelease: allow skipping commit log3df1533
autorelease: improve changelog handling for beta release101ca5e
document: add page index validation for rendering05d7549
docs: better integrate new allocator parameter013917c
render_page: always fill the bitmap580e1e1
page/render_base: accept a caller-provided allocator1b9643f
readme/development: add taskse953d7c
Merge pull request #139 from pypdfium2-team/readmee9cc218
Add initial development section5774cfd
correct docs for PdfPage.get_objects()06543ab
changelog: note removal of PdfPage.count_objects()20413eb
docs: improve attribute documentationd81ac2c
docs: update index.rst03d1bde
Merge pull request #138 from pypdfium2-team/setupinfra0049bfb
Readme: use named footnoteseff97a1
check_deps: just check for missing commandsaa7e7c6
fix excessive whitespace9de1236
update build.shafbc0d7
update changelog/tasks8d31b6a
update manifest/setup.cfg66453fe
update changelogd2cfcc9
improve pageobjects testing3f03597
PdfPage.get_objects(): lower default depth to 2628b4c3
toc: adjust code to match pattern ofPdfPage.get_objects()
dac4d6c
pageobjects: descend into form objectsadb4294
Removepresetup_done
legacy3344ee8
Rid project of setuptools_scm dependencyd676833
Do a beta update anyway60df3a8
check_deps: raise exception instead of implicit installcc2e4e9
skip unnecessary version changesbbede3b
readme: normalise footnotes76e1c0d
setup.py: fix oversightdc224a1
Update readme62367d1
Slightly simplify some setup code4d564ff
Rename craft_packages to craft_wheels05d5fb0
Update tasks69bccf0
readme: extendIn Use
section4060b73
Decide we don't want a beta releasee06048b
Start editing the Readme73cbfa4
Add a few code comments5849e09
Update changelog and tasks8bf49c4
Check in first attempt for version status files98815b8
Autorelease: r/w version file only once53cdcbb
Void version test codee5ed0ba
Start writing version status filesa472366
declare extension module differentlyd51ccf9
Makeclean_artefacts()
nicer4c8b832
preparations for separate version status filesc4014a1
Update readme/changelogfd019ba
craft_packages: restore in-tree artefacts from editable install6fd99e7
rename a parameter ofcall_ctypesgen()
053fa9f
Improve libnames logic8687c37
Move away from dependency pinning anyway5c53604
Hardencopy_platfiles()
79d51d8
Start setup work337f1ee
Update tasks253df27
Fix using similar word with wrong meaning34b03de
Add inline tasks51929e7
Correct wrong docstring455e556
Update rendering CLI41a0b1a
update_pdfium: preparations for calling ctypesgen only once2e49825
update_pdfium: by default, abort in case of missing binariesddda5da
update_pdfium: acceptauto
for current host platformaf8e48c
Move some components frompackaging_base
tosetup_base
5aeda24
update tasksb772b7c
Page-related improvements626d59c
Change pattern of optional imports4b675eb
readme: update toc example8956e70
Update changelog4cd7d4c
Add proper color validationac68204
Finish struct fields topicf921025
readme[in use]: add Arabic-OCR52f0fef
Don't pass through git/ctypesgen executables6a6c7a9
readme: add missing word8a93813
autorelease: handle existing beta tags correctly6e46a22
Update tasks6bbcc90
Add tasks concerning uninitialized struct fields6ee94e9
Remove superfluous empty line03c50be
Minor doc improvementsd7bd975
UseFPDF_InitLibrary()
anyway030bd72
Fix some documentation oversights92cd1c8
readme: minor improvements again5f18040
Construct numpy arrays differently (#133)ef1f2ad
Prefer explicit encoding of strings56524ec
readme: slightly improve a phrase4cded8c
Further Readme improvements (#132)1d9825f
readme: remove form rendering from examplee9adc16
wheel tags: adjust minimum required macOS version0d6f2e9
Reformat changelog_stagingd8c7ef3
docs: improve warning regarding thread unsafety0eac03f
Update changelogf44b6ad
exit_formenv: stylistic swap853eb78
rendering: add test case20a436a
Create a separateexit_formenv()
method3500197
Move form environment from page rendering to document level (#130)36c95aa
CLI: minor style improvements30d1222
font: hold reference to pdf015cb2f
Fix another init inconsistency2f212c2
Fix typo and update .reuse/dep552e7ee3
Improve consistency of helper class init894d555
PdfPageObject: hold a reference to the corresponding pageff470b4
Slightly improve forminfo creation33f7966
Initialise form environment differently1cef257
Add documentation for public attributes5dec9ba
Remove internal aliases for underlying pdfium objects48f875a
rendering: order parametersb49681e
ColorScheme: add docs0096ab8
Improvements for rendering with custom colour scheme (#126)4745916
rendering/colourscheme: add task6ee94d4
Adapt rendering clib8dc7c6
Experimental rendering with custom colour scheme6d81f57
PdfDocument.save(): declare interface versionacb1508
Split up colour functions as planned69e5494
update tasks9970e58
utils: add task25a0e2e
Update changelog13d31f8
minor style improvements88010bb
Add further numpy rendering test case7c4285c
Add methods for rendering to numpy arrays0f6f3cc
page/renderers: take only keyword argumentsbd869c5
Fix typosd36aef6
readme: update rendering example5d858f2
Restructure page rendering and related utilities (#125)451f275
HostPlatform
: renameplatform
attribute toplat_info
3de1e8e
Implementno_antialias
rendering param differently2583618
OutlineItem
: improve docs for page_index265ebe9
document: add info about exceptionsd44bf55
Internaliseraise_error()
code into opener as plannedd59bd3b
Update changelog_stagingd59ad6e
Implement plannedPdfDocument.get_toc()
changec1b3409
Changetyping.Optional[type]
totype | None
in docstrings1056e79
Decide that the next release will increment major versionb4662fd
HostPlatform: add defaults forlibc
/is_glibc
2a3eb38
setup.py: slightly rearrange a code passage9cfaab9
autorelease: check for pypdfium2 code updates1414ff7
Fix reuse compliance973efe7
Continue addressing setup code tasks7d5cd9c
Update changelog6652365
Rewritesetup.py
and moveHostPlatform
intopackaging_base
1eadf49
Add inline tasksbf06496
Pass through ctypesgen executable as well46c1f97
Rearrange some setup code61e070a
Update changeloge18de79
workflow: stop passing removed flag to autorelease72a74c7
Add.git
suffix to depot_tools URL367b55e
Render with external buffer and removeBitmapDataHolder
b42b5a4
update tasks682557b
readme: add another project that uses pypdfium2ec2dc82
craft_packages: add another taske22aaaa
autorelease: slightly improve import styleb61c2d0
install newer version of wheel anywayad1fd00
craft_packages: turn comment into taskdfc40bc
autorelease: always do a new clone of pdfium7ca6c8c
update_pdfium: add taskfba8b43
autorelease: further improve log3a2524f
autorelease: only add PDFium log ifV_LIBPDFIUM
is actually updatedfeceeb1
readme: swap two examples0d0f689
readme: slightly improve wordingc964276
autorelease: add pdfium commit log2a61322
autorelease: rename some variables2d1bf27
autorelease/workflow: only push after successful wheel building4a1294a
Rework dependency pinning8b41759
Apply suggestions from previous commit6907ddf
RewriteREADME.md
and improve code quality on the way (#122)
PDFium commit log
Commits between 5254
and 5316
(latest commit first):
2ed2550ad
Create testing command line helpers1279e11ea
Provide an escape hatch for structs in Data Partition5ccd10bce
ChangeCPDF_TextPage::m_CharIndices
to be a struct.7a92ada7c
Remove dead code in CPDF_TextPage::Init().623ac7b75
Refactor remaining test for runtime renderer selection91e2a1466
Add a flag for selecting renderer at runtimed9ccef469
Store retained object keys in all CPDF_DocPageData maps.2c1b81c30
Return retained refs from CPDF_IndirectObjectHolder::NewIndirect().7037a48eb
Remove assignment to RetainPtr from raw T* types.36421c60d
Store retained streams in CPDF_DocPageData::m_FontFileMap.495f91ded
Use FixedUninitDataVectors in CPDF_TransferFunc.a73aa34df
Roll v8/ 278633dc7..340416187 (254 commits)5313f926c
Return retained references from CPDF_Dictionary::GetDictFor().bd8a0e475
[Skia] Fix the issue that some images are not rendered smoothc84dc1f9e
Return retained references from CPDF_Dictionary::GetArrayFor().d20b2f05f
Add missing bounds check in FPDFFont_GetGlyphPath().55c78b079
Re-introduce CPDF_{Array,Dictionary}::GetStringAt().3f90d431a
Return retained references from CPDF_Dictionary::GetObjectFor()1219d0acc
Allow implicit convestion from FixedUninitDataVector<> to span<>89b87842c
Shuffle for-loop in CPDF_DocRenderData::CreateTransferFunc().28906822d
Rename variables in CPDF_Parser::ParseAndAppendCrossRefSubsectionData().0f304633b
Add IFX_WriteStream::WriteSpan().0e723c531
Explicitly allow IFX_WriteStream::WriteBlock() calls with size of 0.908d34cfe
Test RetainPtr with pdfium::Contains().c79ca1311
Reduce some ref-churn when using CPDF_References.d8ede5f8d
Align fax encoder interface with JPEG encoder interface.a416d84ee
Return retained objects from CPDF_Object::GetDict()30031534c
De-virtualize CPDF_IndirectObjectHolder::GetOrParseIndirectObject().bd17761f7
Re-work string template constructorsf929f2ffb
Add FPDFAnnot_GetFormAdditionalActionJavaScript() API8e1d839bc
Reland "Use DataVector in CFX_MemoryStream."a52ea7f7b
Copy data in CPDF_SyntaxParser::ReadStream().e4022a837
Add a test case for CFX_MemoryStream::{Read,Write}BlockAtOffset().e10b8b664
DEPS-in PartitionAlloc to PDFium3c226cd17
Remove dead code in CFX_FileBufferArchive.be937bf25
Replace Vector2D with Fx2DSizeOrDie().d89483740
Use FixedUninitDataVector in CFX_FontMapper and CFX_FontMgr.45d721018
Add a FixedUninitDataVector container.e44f16772
Fill in runtime renderer checke6e3ca05a
[skia] Clean up empty skopts variablesf41b8f6e9
[Skia] Remove mask_array.pdf from the suppression list937972960
Use CFX_DIBBase::GetPitch() in CFX_PSRenderer.569024734
Rename CPDF_Array::GetStringAt() to GetByteStringAt()27151a6c7
Rename CPDF_Dictionary::GetStringFor() to GetByteStringFor()ae8ba7e15
Revert Array/Dictionary locker Get*() methodsbd9316553
Convert some CPDF_ExpIntFunc getters to return spans.23705d987
Make CPDF_StreamAcc take retained arguments.99e6ab14e
Add additional dictionary locker methods.4df8e905e
Prefer fabsf() over static_cast(fabs()).e5a22f326
Move the Skia-only code into a separate functione50f95a3c
Move a condition check in CStretchEngine to a static functiondd063d0eb
Reduce copying in fxbarcode.f01189dad
Improve fxbarcode matrix classes.f5406e512
Add a regression test case to StreamAccTest.f979a14da
Add a WriteRect() helper to cpdf_contentstream_write_utils.h.07ef29a27
Add a libcxx_revision presubmit check.3f42f8180
Revert "Use DataVector in CFX_FontMapper and CFX_FontMgr."6cc858e62
Revert "Use DataVector in CFX_MemoryStream."638c69c8f
Fix member destruction order in CPDF_StreamAcc.652d35bec
Return retained object from CPDF_Dictionary::GetStreamFor().3f3305e25
Add a pixel test for incorrect text rendering on macOS.1ec9e6865
Add CPDF_Array::GetNumberAt() helper method3b886ba98
Rename CPDF_Array::GetNumberAt() to GetFloatAt().27bb94d6b
Add CPDF_Dictionary::GetNumberFor() helper methodda4072305
Rename CPDF_Dictionary::GetNumberFor() to GetFloatFor().c844131cb
Roll buildtools and libc++0ceda736b
Use CPDF_DictionaryLocker in CPDF_GenerateAPd985207ec
Make Dictionary and Array lockers more useful4f8b26512
Support runtime renderer selection in CFDETextOutLargeBitmapTest.8bdbd2c58
Roll third_party/freetype/src/ 1a242558b..8e68439a6 (41 commits)612da3fdd
Roll tools/clang, build, buildtools and libc++a015667fd
Use DataVector in CFX_MemoryStream.530f0500f
Use DataVector in CFX_FontMapper and CFX_FontMgr.f00bbebca
Roll v8/ 709443dcb..278633dc7 (599 commits)a60b5c53b
Use spans in BasicModule::A85Encode().72389a3b6
Use spans in BasicModule::RunLengthEncode().e0dcb6bcd
Return retained reference from CPDF_Dictionary::GetDirectObjectFor().c43b78543
Return const pointer from CPDF_Stream::GetInMemoryRawData().d9dbe513f
Use more spans inside FaxModule.d8db3048d
Convert BinaryBuffer to store a DataVector.067421809
Change FaxModule::FaxEncode() to use DataVector.b39d4807a
Convert BasicModule::A85Encode() to use DataVector.cf28202ba
Return even more retained objects from CPDF_Array getters.24c54b653
Avoid a potential copy in CPDF_ObjectStream.219be71e2
Use DataVector in CPDF_FlateEncoder.c14b89a8d
Return more retained objects from CPDF_Array getters.085c2632b
Make size types more consistent within FlateModule.105670a2f
Avoid null-deref in CJX_Node::model.8fcb85579
Ensure FxAllocAllocator<> only allocates ordinary data.e3e7fc0d4
Return retained objects from indirect object holder, part 3.c3ff4188b
Pass more retained references into CPDF_ObjectWalker.65f7bed26
Return retained results from CPDF_ObjectWalker::GetNext()ad039f8a5
Roll Catapult from 1c7fc8f4bdb8 to 7ee071132a53 (32 revisions)ad110e56b
Roll Code Coverage from cd81494a2f49 to 06c29fb95a45 (2 revisions)524e53d7c
[Skia] Set the correct group knockout status for fill-and-stroke paths3a5aefe1c
De-virtualize CPDF_Object::Is*() methods274fce6e8
Make CPDF_StreamAcc::GetData() private.c8fb3fb87
Return const pointer from CPDF_StreamAcc::GetData().8c0b6c1c0
De-virtualize const forms of CPDF_Object::As*()d6daaedda
Split CPDF_Object::As*() into mutable and non-mutable varieties.a02e22a45
Remove non-const version of CPDF_StreamAcc::GetSpan().6c2c66b17
Return retained objects from indirect object holder, part 2.70df5d0cc
Return retained objects from the indirect object holder, part 1.8ef3b24ed
Document a FPDFDOC_InitFormFillEnvironment() lifetime requirement.a02871ee4
Remove references to empty Skia files29fdb775d
Roll buildtools/third_party/libc++/trunk/ 88bf40704..84f06932d (228 commits)c1997e165
Return CPDF_Reference from CPDF_Object::MakeReference()a2ea597e7
Avoid ambiguity in RetainPtr<> constructors779b542c6
Keep track of objects in name tree traversals.6a3f7ed9e
Improve first page object number validation in a linearized header.2f9d9ed70
Roll buildtools, libc++ and abseil-cpp.cf5411ae3
Remove mutability from CPDF_FileSpecab8c6ce15
Update gn_version to 00b741b1568d56cf4e117dcb9f70cd42653b4c78b01ac3667
Roll buildtools/third_party/libc++/trunk/ b1269813e..b1d4c7dbe (64 commits)01a7dfe21
Roll build/ 26f8da347..918b804ee (140 commits; 1 trivial rolls)435a50873
Remove unused non-const form of CPDF_Object::SafeGetDirect()3ea81de1d
Add two more RetainPtr tests.fffda1d36
Avoid ref-churn when move conversion constructing RetainPtrsb14660cb0
Roll third_party/abseil-cpp/ 62a4d6866..fd07f9469 (4 commits)cd807b610
Roll tools/clang/ c8f1e5e5b..3d8d88e8b (4 commits)d51720c9b
Return retained const objects from SearchNameNodeByNameInternal()fbf605544
Roll third_party/freetype/src/ 2db58e061..1a242558b (8 commits)48c2e6905
Add new kConstants for form controls81ab3354f
Enforce maximum legal object number during linearized parses.39da1f7a1
Roll buildtools/third_party/libunwind/trunk/ 012c3438e..42aa6de55 (10 commits)fe847b545
Roll Fuchsia SDK from 9.20220729.1.1 to 9.20220830.0.1.e8977dea9
Roll buildtools/third_party/libc++abi/trunk/ 039323b94..48afced8a (6 commits)589de03fe
Roll third_party/depot_tools/ 5fb99f65c..3528d4d3c (47 commits; 5 trivial rolls)bc09eb274
Roll base/trace_event/common/ d115b033c..640fc6dc8 (3 commits)fc2a16f18
Roll third_party/zlib/ c4e126880..926ac230d (2 commits)6a0caf018
Roll third_party/skia/ 3605b5fd7..73fb58ce0 (544 commits)46b0bfdea
Roll tools/memory/ 41d69d665..e5f1a8a76 (2 commits)ff6bd1821
Roll third_party/icu/ 50ec7b382..bbdc7d893 (4 commits)47a82db41
Pass spans to CFX_FloatRect::GetBBox()551eb6914
Avoid pointer arithmetic in CFX_FileBufferArchive5e49f9ccc
Add runtime renderer checksef3036859
Refactor embeddertest constants for runtime renderer selection340bbcf10
Fix a malloc size error in OpenJPEG.8479a083a
Fix bad probe on span assignment operator.c9c2180c8
Avoid pointer arithmetic in cpdf_streamparser.cpp7fa683297
Use spans in place of pointers in fx_font.cppc3451daff
Give PDFium's top-level build a "default" groupf75272cce
Refactor fpdf_view_embeddertest for runtime renderer selectionef51a2d87
Use Substr() in cpdf_syntax_parser.cpp9605f2f9c
Vastly simplify CPDF_Type3Cache::m_SizeMapee2616e99
Refactor fpdf_ppo_embeddertest for runtime renderer selectiona7c6ff71d
Avoid pointer arithmetic in FindFullName().322c87c3e
Refactor fpdf_transformpage_embeddertest for runtime renderer selectionb588d237d
Avoid pointer arithmetic in cfx_datetime.cpp6c759cd2f
Avoid pointer arithmetic in RemoveAllHighLights().2a9c98c93
[Skia] Enable FPDFEditEmbedderTest.GetRenderedBitmapHandlesSMask2db19d607
[Skia] Convert Skia rendering results into an unpremultiplied format.a7adcb62c
Re-work some HasCurrentViewRecord() calls.f28915d98
Make GetCurrentViewRecord() safe even when at end().0d76a139d
Avoid de-referencing end() in GetNextAvailContentHeight().f27b228d6
Update some corpus test expectationsf2942c250
Improve memory management in CFGAS_GEFont::LoadFontInternal().3eaff6683
Document FPDF_RenderPageSkp().c34e23404
Remove some new statements from fx_skia_device.cpp.6f3c62423
Introduce pdf_use_partition_alloc build config variable.810b1aff4
Refactor fpdf_formfill_embeddertest for runtime renderer selection316fa08f5
Refactor edit embedder tests for runtime renderer selectione0ea309ba
Refactor fpdf_editpage_embeddertest for runtime renderer selectionac1113060
Update to always include AGG62b90cc73
Refactor annot embedder tests for runtime renderer selectionf4f7c741d
Use more spans in fx_skia_device.cpp.2cbb74c58
Rename render create and attach implementations5a1336a4f
Switch away from FxFreeDeleter in fx_skia_device.cpp.31d54d1f4
Refactor fpdfapi/render tests for runtime renderer selection6cc084fb5
Refactor fpdfapi/parser tests for runtime renderer selectiona7fa28c3a
Introduce Skia is renderer queries44ba1c67a
[Skia] Fix the issue that images' transparency level is ignoreddc2660a14
Reduce duplicated code in CPDF_ImageRenderer::StartDIBBase().1bfb29df2
[Skia] Choose sampling options depending on the interpolate values