Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
94383fe
Read-only walks to const accessors across content parsing
bobsingor May 8, 2026
7bfcd90
AP becomes ephemeral
bobsingor May 8, 2026
71516c3
CPDF_AnnotList preserves direct annotations
bobsingor May 8, 2026
2dd7caa
CPDF_InteractiveForm const walk + explicit normalize
bobsingor May 8, 2026
b50c87f
CPDF_Image and CPDF_DocPageData cache hardening
bobsingor May 8, 2026
3cdfb37
Install macros
bobsingor May 8, 2026
87aec2e
Widen all internal seams
bobsingor May 9, 2026
4e5781e
CPDF_BaseDocument + eager parse + freeze
bobsingor May 9, 2026
ef257ba
CPDF_LayerDocument (read fall-through)
bobsingor May 9, 2026
b345d99
COW on actual mutable handle USE
bobsingor May 9, 2026
a591805
CloneForHolder + PromoteFromBase
bobsingor May 9, 2026
502f817
EPDFLayer_SaveDeltaToBuffer + creator append-only mode
bobsingor May 9, 2026
2cde580
Introspection + benchmarks + soak
bobsingor May 9, 2026
986cd2e
Finish opening file with delta
bobsingor May 10, 2026
7d468af
ReadOnlyLayerWorkflowsProduceEmptyDelta
bobsingor May 10, 2026
8191aeb
Keep layer read paths from promoting page and name-tree state
bobsingor May 10, 2026
efe597b
Add some more tests
bobsingor May 12, 2026
a3f16c2
Prune unreachable new PDF objects during save
bobsingor May 12, 2026
f769de7
Add EPDF_LoadMemBaseDocument API
bobsingor May 15, 2026
df00447
Add EPDF_LoadMemBaseDocument64 and helpers
bobsingor May 15, 2026
f66d083
Add GetPageObjectNumberByIndex API and tests
bobsingor May 15, 2026
1bdc674
Const-correct annot APIs; add annot index
bobsingor May 17, 2026
ac54d56
Fix some readonly paths
bobsingor May 17, 2026
19fbb6d
Honor layer overlays when collecting objects
bobsingor May 17, 2026
b57a70c
Add redaction API and form XObject helper
bobsingor May 18, 2026
c72e4f8
Merge branch 'embedpdf/main' into embedpdf/feature/read-purity
bobsingor May 21, 2026
66cb147
Add EPDFLayer_SaveLayerArtifact API
bobsingor May 24, 2026
211d129
Add password-probe and runtime owner APIs
bobsingor May 27, 2026
25b803a
Add EMBD_Metadata API for annotation embed data
bobsingor May 27, 2026
ee61c10
Add APIs to query page boxes and UserUnit
bobsingor May 30, 2026
ef3f53b
Promote and save /Info for layer documents
bobsingor May 31, 2026
06594e0
Move pending security into CPDF_Document
bobsingor Jun 2, 2026
f87f6b6
Add optional thread-local globals and thread-soak test
bobsingor Jun 2, 2026
af64b09
Make s_CurrentRecursionDepth thread-local
bobsingor Jun 2, 2026
0267271
Add test PDFs with bad ICC profiles
bobsingor Jun 2, 2026
ad5c71a
Fix gmtime handling and add platform defines
bobsingor Jun 2, 2026
2520dc1
Update cmswtpnt.c
bobsingor Jun 2, 2026
74b6d9c
Address thread-safety in lcms helpers
bobsingor Jun 2, 2026
deb3657
Add EPDFDoc page APIs (delete/set/normalize)
bobsingor Jun 15, 2026
adc5c20
Merge pull request #29 from embedpdf/embedpdf/feature/thread-confined
bobsingor Jun 15, 2026
d17968e
Avoid null-replacing base pages in layer deltas
bobsingor Jun 15, 2026
2df8155
LayerDocument: const Root & mutable PageDict
bobsingor Jun 15, 2026
f098ad8
Use cached reachable-objects set and add test
bobsingor Jun 15, 2026
18d23c9
Add registered font fallbacks and subsetting
bobsingor Jun 24, 2026
7a9888b
EmbedPDF: register font markers & registry fixes
bobsingor Jun 24, 2026
1c23b1d
Use registered fallback fonts for form AP generation
bobsingor Jun 24, 2026
c518296
Add EPDF session-free form model and utilities
bobsingor Jul 5, 2026
81e071e
Add EPDF PieceInfo APIs and tests
bobsingor Jul 14, 2026
5abb1ac
Add EmbedPDF action model and selective flattening
bobsingor Jul 15, 2026
edba679
Track ink-painted bounds and avoid rect inflation
bobsingor Jul 16, 2026
ab47d3c
Add file attachment extraction and AP support
bobsingor Jul 16, 2026
9196b8d
Add EPDFDest_GetPageObjectNumber API
bobsingor Jul 17, 2026
1bc2a6c
Add action node payload getters and link removers
bobsingor Jul 17, 2026
f93dde9
Redaction: build overlays & avoid unsafe pruning
bobsingor Jul 19, 2026
14d7e75
Support ephemeral AcroForm & reconciled form view
bobsingor Jul 19, 2026
cc7b8d6
Mirror field values to twin controls and tests
bobsingor Jul 20, 2026
a39fb54
Merge pull request #31 from embedpdf/embedpdf/feature/forms
bobsingor Jul 20, 2026
6208a24
Add document view scope & overlay epoch caching
bobsingor Jul 28, 2026
58c48b4
Improve annotation border style & dash handling
bobsingor Jul 29, 2026
c8dd692
Resolve standard font from DR and add tests
bobsingor Aug 4, 2026
863ba94
Update release-libpdfium.yml
bobsingor Aug 4, 2026
d9b2861
Add CloudPDF ownership headers and manifest
bobsingor Aug 5, 2026
7ca003f
Merge branch 'embedpdf/main' into embedpdf/feature/read-purity
bobsingor Aug 5, 2026
7bf895d
Remove license-header CI check
bobsingor Aug 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .github/workflows/pdfium-tsan-thread-soak.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
name: PDFium TSAN Thread Soak
# Copyright 2026 CloudPDF LTD
# SPDX-License-Identifier: Apache-2.0

name: CloudPDF Runtime TSAN Thread Soak

on:
workflow_dispatch:
Expand Down
7 changes: 6 additions & 1 deletion .github/workflows/release-libpdfium.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
name: Release EmbedPDF PDF Runtime Libraries
# Copyright 2026 CloudPDF LTD
# SPDX-License-Identifier: Apache-2.0

name: Release CloudPDF Runtime Libraries

on:
workflow_dispatch:
Expand Down Expand Up @@ -118,6 +121,8 @@ jobs:
- name: Install Emscripten
if: matrix.target == 'wasm32'
shell: bash
env:
DEPOT_TOOLS_PYTHON_BYPASS: '1'
run: |
mkdir -p third_party
if [[ -d third_party/emsdk ]]; then
Expand Down
20 changes: 20 additions & 0 deletions BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,13 @@ config("pdfium_common_config") {
defines += [ "PDF_USE_PARTITION_ALLOC" ]
}

# EmbedPDF: thread-confined runtime. Translates the embedpdf_thread_local_globals
# GN arg into the EPDF_THREAD_LOCAL_GLOBALS define consumed by EPDF_TLS
# (core/fxcrt/epdf_tls.h). Default off; see pdfium.gni.
if (embedpdf_thread_local_globals) {
defines += [ "EPDF_THREAD_LOCAL_GLOBALS" ]
}

if (is_win) {
# Assume UTF-8 by default to avoid code page dependencies.
cflags += [ "/utf-8" ]
Expand Down Expand Up @@ -191,6 +198,16 @@ source_set("pdfium_public_headers_impl") {
sources = [
"public/cpp/fpdf_deleters.h",
"public/cpp/fpdf_scopers.h",
# EmbedPDF: detached, read-only PDF action models.
"public/epdf_action.h",
# EmbedPDF: public runtime font registration API used by page fallback
# rendering and annotation authoring.
"public/epdf_font.h",
# EmbedPDF: session-free AcroForm model, write transactions, FDF/XFDF.
"public/epdf_form.h",
# EmbedPDF: generic namespace-scoped document/page /PieceInfo metadata.
"public/epdf_pieceinfo.h",
"public/epdf_redact.h",
"public/fpdf_annot.h",
"public/fpdf_attachment.h",
"public/fpdf_catalog.h",
Expand Down Expand Up @@ -431,6 +448,9 @@ group("pdfium_all") {
":pdfium_unittests",
"testing:pdfium_test",
"testing/fuzzers",
"testing/tools:epdf_layer_memory_benchmark",
"testing/tools:epdf_layer_replay_soak",
"testing/tools:epdf_thread_soak",
]

if (pdf_is_standalone) {
Expand Down
25 changes: 25 additions & 0 deletions NOTICE
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
CloudPDF Runtime Additions
Copyright 2025-2026 CloudPDF LTD

Files identified in scripts/embedpdf-runtime/cloudpdf-owned-source-files.txt
and marked with SPDX-License-Identifier: Apache-2.0 are licensed by
CloudPDF LTD under the Apache License, Version 2.0. The Apache License text
is included in this repository's LICENSE file.

This repository is based on PDFium. PDFium source and source derived from
PDFium remain subject to PDFium's BSD-style license and retain their original
copyright and license notices. Third-party components and test assets remain
subject to their respective upstream licenses. The CloudPDF Apache-2.0 notice
does not replace or supersede those upstream terms.

The following source files were reintroduced or adapted in CloudPDF commits
but intentionally retain PDFium attribution because their provenance is
upstream PDFium:

core/fxcodec/png/pngmodule.cpp
core/fxcodec/png/pngmodule.h
fpdfsdk/epdf_flatten.cpp

Patch artifacts under patches/embedpdf-runtime and binary or generated test
resources are excluded from the CloudPDF-owned source manifest unless they
contain standalone CloudPDF-authored source.
5 changes: 2 additions & 3 deletions constants/metadata.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
// Copyright 2025 The PDFium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Copyright 2025 CloudPDF LTD
// SPDX-License-Identifier: Apache-2.0

#ifndef CONSTANTS_METADATA_H_
#define CONSTANTS_METADATA_H_
Expand Down
1 change: 1 addition & 0 deletions core/fpdfapi/edit/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ source_set("contentstream_write_utils") {

pdfium_unittest_source_set("unittests") {
sources = [
"cpdf_creator_unittest.cpp",
"cpdf_npagetooneexporter_unittest.cpp",
"cpdf_pagecontentgenerator_unittest.cpp",
]
Expand Down
Loading