initial commit
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
# What real PDFs actually use
|
||||
|
||||
Feature counts across the 51 PDFs on this machine (39 in ~/Downloads, 12 ISO spec
|
||||
documents) — contracts, invoices, standards, scans, exports from Word, InDesign
|
||||
and web tooling. Percentages are of files that contain the marker at all.
|
||||
|
||||
| Feature | Files | Note |
|
||||
|---|---:|---|
|
||||
| FlateDecode | 51 (100%) | the only filter that must be fast |
|
||||
| DCTDecode | 19 (37%) | own JPEG decoder is not optional |
|
||||
| ASCII85Decode | 3 (6%) | |
|
||||
| CCITTFaxDecode | 1 (2%) | long tail |
|
||||
| LZWDecode | 1 (2%) | long tail |
|
||||
| JPXDecode / JBIG2Decode | 0 | never seen; pass through |
|
||||
| xref streams + object streams | 26 (51%) | half the corpus is PDF 1.5+ structure |
|
||||
| Linearized | 13 (25%) | |
|
||||
| Encrypted | 3 (6%) | |
|
||||
| AcroForm | 13 (25%) | |
|
||||
| Annots | 27 (53%) | appearance streams matter for rendering |
|
||||
| ExtGState | 44 (86%) | |
|
||||
| SMask | 30 (59%) | **transparency is mainstream, not exotic** |
|
||||
| Group (transparency) | 25 (49%) | |
|
||||
| BM (blend mode) | 23 (45%) | |
|
||||
| Type0 (composite) fonts | 27 (53%) | |
|
||||
| CIDFontType2 | 29 (57%) | |
|
||||
| FontFile2 (TrueType) | 31 (61%) | |
|
||||
| FontFile3 (CFF) | 11 (22%) | |
|
||||
| ToUnicode | 32 (63%) | text extraction has a real chance |
|
||||
| Type3 fonts | 1 (2%) | long tail |
|
||||
| ICCBased | 12 (24%) | render via /Alternate |
|
||||
| Indexed | 8 (16%) | |
|
||||
| Separation | 3 (6%) | |
|
||||
| Lab | 3 (6%) | |
|
||||
| Pattern | 7 (14%) | |
|
||||
| Shading | 3 (6%) | |
|
||||
| DeviceN, CalRGB | 0 | implement, but do not tune for |
|
||||
|
||||
Reproduce with the loop in the project history; it is a plain grep for each
|
||||
marker across every PDF, which works because stream dictionaries are never
|
||||
themselves inside an object stream.
|
||||
|
||||
**What this ordered:** Flate and DCT decode quality, TrueType and CFF glyph
|
||||
outlines, Type0/CID mapping, `/ToUnicode`, and the transparency model (soft
|
||||
masks, groups, blend modes) are the load-bearing work. CCITT, LZW, JPX, JBIG2,
|
||||
Type3, DeviceN and the exotic shading types are correctness obligations, not
|
||||
performance ones.
|
||||
Reference in New Issue
Block a user