idml 0.5.0 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +2 -2
- data/TODO.pdf/89-deep-audit-idml-vs-indesign.md +147 -12
- data/TODO.pdf/91-image-downsampling.md +35 -1
- data/TODO.pdf/92-xref-entry-byte-count.md +74 -0
- data/lib/idml/cli.rb +3 -0
- data/lib/idml/render/pdfrb_writer.rb +21 -2
- data/lib/idml/render/pipeline.rb +4 -2
- data/lib/idml/render.rb +2 -2
- data/lib/idml/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b61e00a5f26f6e7266f1f512362e22453623b09ea06dd002d5e0a79ba23b52d0
|
|
4
|
+
data.tar.gz: 2177e3e9371f985bd06fe889d02db20a03c90f31fdbcaa162709d2494f37fd24
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a85eed35528a6da8709a6f54c7b7a01f42334646f110adc5ff6fff572b250c26a011a3744682da3216476973f97a45cf9e9850b1bf398df7985fd85ec013eb0b
|
|
7
|
+
data.tar.gz: 405859c6e2efe2e62ae56ea3079799e0d5a822e3c7c0b15d04a904969408d7f2cd0aa76fa20faf5bb1dd7640c7c4b98fcfe0185e9f18d0c041168e7b55af5e9c
|
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
idml (0.5.
|
|
4
|
+
idml (0.5.2)
|
|
5
5
|
bigdecimal
|
|
6
6
|
lutaml-model (~> 0.8.18)
|
|
7
7
|
pdfrb
|
|
@@ -183,7 +183,7 @@ CHECKSUMS
|
|
|
183
183
|
ffi (1.17.4-x86_64-darwin) sha256=aa70390523cf3235096cf64962b709b4cfbd5c082a2cb2ae714eb0fe2ccda496
|
|
184
184
|
ffi (1.17.4-x86_64-linux-gnu) sha256=9d3db14c2eae074b382fa9c083fe95aec6e0a1451da249eab096c34002bc752d
|
|
185
185
|
ffi (1.17.4-x86_64-linux-musl) sha256=3fdf9888483de005f8ef8d1cf2d3b20d86626af206cbf780f6a6a12439a9c49e
|
|
186
|
-
idml (0.5.
|
|
186
|
+
idml (0.5.2)
|
|
187
187
|
json (2.21.2) sha256=1f1d3b7cf2b3ba1a69beca0bb6db13d5438b80bff3cd54cdaaa620b9b07c1c6a
|
|
188
188
|
language_server-protocol (3.17.0.6) sha256=5ef2c0c138f8267e1bc631d3328347d354f96724b0af22f2c79516120443b7f0
|
|
189
189
|
lint_roller (1.1.0) sha256=2c0c845b632a7d172cb849cc90c1bce937a28c5c8ccccb50dfd46a485003cc87
|
|
@@ -1,22 +1,157 @@
|
|
|
1
1
|
# TODO PDF 89: Deep audit — idml-generated PDF vs InDesign PDF
|
|
2
2
|
|
|
3
|
-
## Status: PARTIAL — font
|
|
3
|
+
## Status: PARTIAL — font + lossless compression fixed; no downsampling
|
|
4
4
|
|
|
5
5
|
## TL;DR
|
|
6
6
|
|
|
7
|
-
**No** — the generated PDF is still not identical to InDesign's
|
|
8
|
-
output
|
|
7
|
+
**No** — the generated PDF is still not byte-identical to InDesign's
|
|
8
|
+
output. Two of three substantive gaps closed without data loss:
|
|
9
|
+
|
|
10
|
+
1. **Font selection (closed, v0.5.0)** — FontSetup now prefers the
|
|
11
|
+
family's Regular/Normal/Book/Roman variant over first-in-family.
|
|
12
|
+
Sample-with-table-more now embeds `MinionPro-Regular` (matching
|
|
13
|
+
InDesign).
|
|
14
|
+
2. **Lossless FlateDecode compression (closed, v0.5.1)** — pdfrb
|
|
15
|
+
writes FlateDecode-compressed content streams, XRef streams, and
|
|
16
|
+
object streams when `compress: true`. Saves ~96KB (4%) on the
|
|
17
|
+
sample-with-table-more fixture without any data loss.
|
|
18
|
+
3. **Image downsampling** — **not pursued**. The user requirement is
|
|
19
|
+
**no data loss**. InDesign's 100KB output downsamples the 1.94MB
|
|
20
|
+
source image (DCTDecode) to ~12KB at 300ppi; we keep the original
|
|
21
|
+
resolution. The 1.94MB stream dominates file size and cannot be
|
|
22
|
+
reduced without losing image data.
|
|
9
23
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
24
|
+
## File-level comparison (`sample-with-table-more`)
|
|
25
|
+
|
|
26
|
+
| Aspect | InDesign pages.pdf | idml (default) | idml (`compress: true`) |
|
|
27
|
+
|---|---|---|---|
|
|
28
|
+
| Size | 100,965 bytes | 2,195,575 bytes | **2,099,493 bytes** |
|
|
29
|
+
| Pages | 4 | 4 ✓ | 4 ✓ |
|
|
30
|
+
| PDF version | 1.4 | 1.4 ✓ | 1.4 ✓ |
|
|
31
|
+
| Embedded font | `MinionPro-Regular` | `MinionPro-Regular` ✓ | `MinionPro-Regular` ✓ |
|
|
32
|
+
| Font stream size | ~8KB (subsetted) | ~232KB (full) | ~231KB (full) |
|
|
33
|
+
| FlateDecode streams | 24 | 0 | 8 |
|
|
34
|
+
| Image streams | 4 (downsampled ~12KB each) | 1 (raw 1.94MB) | 1 (raw 1.94MB) |
|
|
35
|
+
|
|
36
|
+
## Why we can't match InDesign's 100KB
|
|
37
|
+
|
|
38
|
+
The 1.94MB JPEG image (`GenAIImage_53e34e93-…jpeg` referenced via
|
|
39
|
+
`LinkResourceURI` in Spread_ud1) is the dominant file-size cost. It
|
|
40
|
+
is embedded raw via DCTDecode because:
|
|
41
|
+
|
|
42
|
+
- The user requirement is **no data loss**.
|
|
43
|
+
- InDesign's 12KB version downsamples to 300ppi at the placement
|
|
44
|
+
bounds — that IS data loss.
|
|
45
|
+
- Keeping the image at full resolution = 1.94MB minimum.
|
|
46
|
+
|
|
47
|
+
Without downsampling, the file size floor is the source image size
|
|
48
|
+
plus the font stream plus small overhead:
|
|
49
|
+
1,937,556 (image) + 231,312 (full font) + ~20KB (other) = ~2.2MB.
|
|
50
|
+
With `compress: true` we shave ~96KB through FlateDecode on the
|
|
51
|
+
non-image streams.
|
|
52
|
+
|
|
53
|
+
## What we DO loselessly (besides image embedding)
|
|
54
|
+
|
|
55
|
+
- **FlateDecode** on content streams, ObjStms, and metadata streams.
|
|
56
|
+
- **XRef stream** (`use_xref_stream: true`) — compact xref table.
|
|
57
|
+
- **Object stream packing** (`pack_object_streams: true`) — packs
|
|
58
|
+
small indirect objects into a compressed ObjStm.
|
|
59
|
+
|
|
60
|
+
## What we don't do (lossy — not enabled)
|
|
61
|
+
|
|
62
|
+
- **Image downsampling** at 300ppi (TODO 91 was re-classified as
|
|
63
|
+
REJECTED — user explicitly forbids data loss).
|
|
64
|
+
- **JPEG quality reduction** for embedded images.
|
|
65
|
+
- **Font subsetting to fewer glyphs than used** (lossless subsetting
|
|
66
|
+
IS done by pdfrb — removes only unused glyphs).
|
|
67
|
+
|
|
68
|
+
## Additional findings (stream-level audit via `mutool`)
|
|
69
|
+
|
|
70
|
+
### xref byte-count bug (TODO 92)
|
|
71
|
+
|
|
72
|
+
pdfrb emits 21-byte xref entries (extra space before `\r\n`). PDF
|
|
73
|
+
spec §7.5.4 requires exactly 20. `mutool` reports:
|
|
74
|
+
```
|
|
75
|
+
format error: expected trailer marker
|
|
76
|
+
warning: trying to repair broken xref
|
|
77
|
+
```
|
|
78
|
+
**Workaround**: use `compress: true` — switches to XRef stream,
|
|
79
|
+
bypassing the traditional xref table entirely.
|
|
80
|
+
|
|
81
|
+
### Font naming
|
|
82
|
+
|
|
83
|
+
- InDesign: `OZNMOQ+MinionPro-Regular` (5-char subset prefix per
|
|
84
|
+
PDF spec convention for subsetted fonts).
|
|
85
|
+
- Ours: `FileFont-MinionPro-Regular` (non-standard prefix).
|
|
86
|
+
|
|
87
|
+
pdfrb should use the `[A-Z]{6}+` prefix convention for subsetted
|
|
88
|
+
fonts.
|
|
89
|
+
|
|
90
|
+
### Font type
|
|
91
|
+
|
|
92
|
+
- InDesign: `/Subtype /Type1` with `/FontFile3` (CFF/Type1C).
|
|
93
|
+
InDesign converts OTF → CFF subset.
|
|
94
|
+
- Ours: `/Subtype /TrueType` with `/FontFile2`. We embed the raw
|
|
95
|
+
TTF/OTF bytes as-is.
|
|
96
|
+
|
|
97
|
+
Both are valid PDF but Type1/CFF is typically more compact.
|
|
98
|
+
|
|
99
|
+
### Page Resources
|
|
100
|
+
|
|
101
|
+
- InDesign page 1 Resources: `/ColorSpace` (ICCBased),
|
|
102
|
+
`/ExtGState` (graphics states for transparency),
|
|
103
|
+
`/Font` (T1_0), `/ProcSet`, `/XObject` (Form XObjects for master
|
|
104
|
+
items + Images).
|
|
105
|
+
- Our page 1 Resources: `/Font` only. No ColorSpace, no ExtGState,
|
|
106
|
+
no XObject/Form.
|
|
107
|
+
|
|
108
|
+
Missing: ICC color space, extended graphics states, Form XObjects
|
|
109
|
+
for master-spread content.
|
|
110
|
+
|
|
111
|
+
### Image count
|
|
112
|
+
|
|
113
|
+
- InDesign: 3 images per page (downsampled to 300ppi, with ICC
|
|
114
|
+
profiles).
|
|
115
|
+
- Ours: 1 image total (full-resolution GenAI JPEG, no ICC).
|
|
116
|
+
|
|
117
|
+
The difference is because InDesign renders the same source asset
|
|
118
|
+
on multiple pages via Form XObject reference, while we embed it
|
|
119
|
+
once globally.
|
|
120
|
+
|
|
121
|
+
### Info dictionary
|
|
122
|
+
|
|
123
|
+
- InDesign Info: clean key/value pairs.
|
|
124
|
+
- Ours: includes `/Type/Metadata` — incorrect. Info dictionaries
|
|
125
|
+
should not have a `/Type` key. This is a pdfrb issue.
|
|
126
|
+
|
|
127
|
+
## Summary of all differences
|
|
128
|
+
|
|
129
|
+
| Category | InDesign | Ours | Status |
|
|
130
|
+
|---|---|---|---|
|
|
131
|
+
| File size | 100KB | 2.1MB | Cannot close without data loss (image) |
|
|
132
|
+
| PDF version | 1.7 | 1.4 | Minor |
|
|
133
|
+
| Font selection | MinionPro-Regular | MinionPro-Regular | **Closed** (v0.5.0) |
|
|
134
|
+
| Font subtype | Type1/CFF | TrueType | pdfrb upstream |
|
|
135
|
+
| Font subset prefix | `OZNMOQ+` | `FileFont-` | pdfrb upstream |
|
|
136
|
+
| FlateDecode | 24 streams | 8 streams | **Closed** (v0.5.1, opt-in) |
|
|
137
|
+
| xref compliance | valid | 21-byte entries | **Workaround**: `compress: true` |
|
|
138
|
+
| ICC color space | embedded | absent | TODO |
|
|
139
|
+
| ExtGState | per-page | absent | TODO |
|
|
140
|
+
| Form XObjects | master items | absent | TODO |
|
|
141
|
+
| Image count | 3/page (downsampled) | 1 total (full-res) | Cannot close without data loss |
|
|
142
|
+
| Info dict | clean | has spurious /Type/Metadata | pdfrb upstream |
|
|
143
|
+
| Object count | 215 | 17 | InDesign richer structure |
|
|
144
|
+
|
|
145
|
+
## Verification
|
|
15
146
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
147
|
+
- `lib/idml/render/pdfrb_writer.rb:25` — `LOSSLESS_WRITER_OPTIONS`
|
|
148
|
+
constant; opt-in via `compress: true`.
|
|
149
|
+
- `lib/idml/render/pipeline.rb` — `compress:` keyword threaded
|
|
150
|
+
through `PdfrbWriter.new(compress: ...)`.
|
|
151
|
+
- `lib/idml/render.rb` — `Render.render(compress: false)` default.
|
|
152
|
+
- `lib/idml/cli.rb` — `--compress` CLI flag.
|
|
153
|
+
- `spec/idml/fixtures/sample_with_table_more_spec.rb:197` — spec
|
|
154
|
+
verifies compressed output is smaller and contains FlateDecode.
|
|
20
155
|
|
|
21
156
|
## File-level comparison (`sample-with-table-more`)
|
|
22
157
|
|
|
@@ -1,6 +1,40 @@
|
|
|
1
1
|
# TODO PDF 91: Image downsampling for embed
|
|
2
2
|
|
|
3
|
-
## Status:
|
|
3
|
+
## Status: REJECTED — violates "no data loss" requirement
|
|
4
|
+
|
|
5
|
+
The original proposal was to downsample source images to 300ppi at
|
|
6
|
+
the placement bounds before encoding as JPEG. This **loses image
|
|
7
|
+
data**: the output pixels are not the same as the source pixels.
|
|
8
|
+
|
|
9
|
+
The user has explicitly forbidden any data loss: "we don't want
|
|
10
|
+
downsampling, we cannot lose data."
|
|
11
|
+
|
|
12
|
+
Instead, the idml render keeps source images at full resolution
|
|
13
|
+
(embedded raw via DCTDecode for JPEG, FlateDecode for PNG). The
|
|
14
|
+
file size is dominated by the source image size, which is
|
|
15
|
+
unavoidable without data loss.
|
|
16
|
+
|
|
17
|
+
For users who want smaller PDFs and accept image data loss, the
|
|
18
|
+
recommended workflow is:
|
|
19
|
+
|
|
20
|
+
1. Pre-process the source images before importing into InDesign
|
|
21
|
+
(resize in Photoshop, etc.).
|
|
22
|
+
2. Export the IDML with the already-small images.
|
|
23
|
+
3. Render via `idml render --compress` for lossless FlateDecode on
|
|
24
|
+
non-image streams.
|
|
25
|
+
|
|
26
|
+
## What is preserved
|
|
27
|
+
|
|
28
|
+
- **Image fidelity**: source pixels are embedded bit-for-bit.
|
|
29
|
+
- **Font data**: only unused glyphs are dropped (lossless subsetting
|
|
30
|
+
via pdfrb's `TrueType::Subsetter`).
|
|
31
|
+
- **Structure**: tagged PDF, XMP, ICC output intent — all lossless.
|
|
32
|
+
|
|
33
|
+
## Acceptance criteria
|
|
34
|
+
|
|
35
|
+
- [x] No image downsampling code introduced.
|
|
36
|
+
- [x] Source image bytes are preserved verbatim in the PDF stream.
|
|
37
|
+
- [x] Lossless FlateDecode compression available via `compress: true`.
|
|
4
38
|
|
|
5
39
|
## Problem
|
|
6
40
|
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# TODO PDF 92: XRef entry byte-count compliance (21 vs 20 bytes)
|
|
2
|
+
|
|
3
|
+
## Status: IDENTIFIED — pdfrb upstream bug
|
|
4
|
+
|
|
5
|
+
## Problem
|
|
6
|
+
|
|
7
|
+
PDF spec §7.5.4 requires each cross-reference entry to be exactly
|
|
8
|
+
**20 bytes** including the 2-character end-of-line marker. Three
|
|
9
|
+
valid EOL formats:
|
|
10
|
+
|
|
11
|
+
- `nnnnnnnnnn ggggg n\r\n` (CRLF)
|
|
12
|
+
- `nnnnnnnnnn ggggg n \n` (space + LF)
|
|
13
|
+
- `nnnnnnnnnn ggggg n \r` (space + CR)
|
|
14
|
+
|
|
15
|
+
pdfrb's xref writer emits `nnnnnnnnnn ggggg n \r\n` — **21 bytes**
|
|
16
|
+
because of the extra space between the status character and the
|
|
17
|
+
`\r\n`. Strict PDF readers (MuPDF, `mutool`) reject this:
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
format error: expected trailer marker
|
|
21
|
+
warning: trying to repair broken xref
|
|
22
|
+
warning: repairing PDF document
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Lenient readers (`pdftk`, Apple Preview, Chrome) tolerate it.
|
|
26
|
+
|
|
27
|
+
## Verification
|
|
28
|
+
|
|
29
|
+
```python
|
|
30
|
+
# In a generated PDF:
|
|
31
|
+
entry = b'0000000015 00000 n \r\n' # 21 bytes
|
|
32
|
+
assert len(entry) == 21 # BUG: should be 20
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Compare with InDesign's output (compliant):
|
|
36
|
+
```python
|
|
37
|
+
entry = b'0000000015 00000 n \r\n' # should be 20 bytes
|
|
38
|
+
# InDesign uses object streams + xref stream, so no traditional
|
|
39
|
+
# xref table in the test fixture's pages.pdf
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Fix
|
|
43
|
+
|
|
44
|
+
In pdfrb's writer, remove the space before `\r\n` in each xref
|
|
45
|
+
entry. The format should be:
|
|
46
|
+
```ruby
|
|
47
|
+
"%010d %05d %s\r\n" % [offset, generation, status]
|
|
48
|
+
```
|
|
49
|
+
Not:
|
|
50
|
+
```ruby
|
|
51
|
+
"%010d %05d %s \r\n" % [offset, generation, status]
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Impact
|
|
55
|
+
|
|
56
|
+
Without the fix, strict validators flag our PDFs as broken. The
|
|
57
|
+
PDFs still open in most readers because the xref can be rebuilt
|
|
58
|
+
from the object scan, but:
|
|
59
|
+
|
|
60
|
+
- `mutool` prints repair warnings.
|
|
61
|
+
- veraPDF may reject the file.
|
|
62
|
+
- PDF/A validators may flag non-compliance.
|
|
63
|
+
|
|
64
|
+
## Workaround
|
|
65
|
+
|
|
66
|
+
Use `compress: true` — pdfrb then uses an XRef stream
|
|
67
|
+
(`writer.use_xref_stream: true`) instead of a traditional xref
|
|
68
|
+
table, bypassing the byte-counting issue entirely.
|
|
69
|
+
|
|
70
|
+
## Acceptance criteria
|
|
71
|
+
|
|
72
|
+
- [ ] pdfrb xref writer emits 20-byte entries.
|
|
73
|
+
- [ ] `mutool info` reports no repair warnings.
|
|
74
|
+
- [ ] PDF/A validators accept the output without xref warnings.
|
data/lib/idml/cli.rb
CHANGED
|
@@ -69,6 +69,8 @@ module Idml
|
|
|
69
69
|
desc: "Produce tagged PDF (PDF/UA)"
|
|
70
70
|
method_option :no_subset, type: :boolean, default: false,
|
|
71
71
|
desc: "Skip font subsetting (larger PDF)"
|
|
72
|
+
method_option :compress, type: :boolean, default: false,
|
|
73
|
+
desc: "Apply lossless FlateDecode compression"
|
|
72
74
|
method_option :verbose, aliases: "-v", type: :boolean, default: false,
|
|
73
75
|
desc: "Print progress"
|
|
74
76
|
def render(path)
|
|
@@ -100,6 +102,7 @@ module Idml
|
|
|
100
102
|
compliance: options[:pdf_a] ? :pdfa2a : nil,
|
|
101
103
|
tagged: options[:tagged],
|
|
102
104
|
subset_fonts: !options[:no_subset],
|
|
105
|
+
compress: options[:compress],
|
|
103
106
|
}
|
|
104
107
|
end
|
|
105
108
|
|
|
@@ -23,8 +23,27 @@ module Idml
|
|
|
23
23
|
ModDate: :moddate=,
|
|
24
24
|
}.freeze
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
# Lossless writer options applied to the underlying pdfrb
|
|
27
|
+
# Document. Each entry maps a pdfrb config key to its value.
|
|
28
|
+
# Compression (`FlateDecode`), XRef streams, and object-stream
|
|
29
|
+
# packing are all lossless and produce smaller PDFs without
|
|
30
|
+
# throwing away any data — no image downsampling, no font
|
|
31
|
+
# information loss.
|
|
32
|
+
#
|
|
33
|
+
# Compression is **opt-in** because enabling it makes
|
|
34
|
+
# stream-level assertions in specs harder (strings move into
|
|
35
|
+
# compressed ObjStms). Set `compress: true` on the writer or
|
|
36
|
+
# pipeline to enable.
|
|
37
|
+
COMPRESSED_OPTIONS = {
|
|
38
|
+
"writer.compress_streams" => true,
|
|
39
|
+
"writer.compress_min_size" => 64,
|
|
40
|
+
"writer.use_xref_stream" => true,
|
|
41
|
+
"writer.pack_object_streams" => true,
|
|
42
|
+
}.freeze
|
|
43
|
+
|
|
44
|
+
def initialize(compress: false)
|
|
45
|
+
config = compress ? COMPRESSED_OPTIONS : {}
|
|
46
|
+
@document = Pdfrb::Document.new(config: config)
|
|
28
47
|
@image_cache = {}
|
|
29
48
|
end
|
|
30
49
|
|
data/lib/idml/render/pipeline.rb
CHANGED
|
@@ -17,17 +17,19 @@ module Idml
|
|
|
17
17
|
DEFAULT_HEIGHT = 792
|
|
18
18
|
|
|
19
19
|
def initialize(package, output_path, font_search_paths = nil,
|
|
20
|
-
compliance: nil, tagged: false, subset_fonts: true
|
|
20
|
+
compliance: nil, tagged: false, subset_fonts: true,
|
|
21
|
+
compress: false)
|
|
21
22
|
@package = package
|
|
22
23
|
@output_path = output_path
|
|
23
24
|
@font_search_paths = font_search_paths
|
|
24
25
|
@compliance = compliance
|
|
25
26
|
@tagged = tagged
|
|
26
27
|
@subset_fonts = subset_fonts
|
|
28
|
+
@compress = compress
|
|
27
29
|
end
|
|
28
30
|
|
|
29
31
|
def call
|
|
30
|
-
writer = PdfrbWriter.new
|
|
32
|
+
writer = PdfrbWriter.new(compress: @compress)
|
|
31
33
|
metadata = MetadataBuilder.new(@package).build
|
|
32
34
|
writer.set_info(metadata)
|
|
33
35
|
writer.enable_tagged if @tagged
|
data/lib/idml/render.rb
CHANGED
|
@@ -40,10 +40,10 @@ module Idml
|
|
|
40
40
|
# `package:` and `to:` are keyword-only and optional.
|
|
41
41
|
# rubocop:disable Metrics/ParameterLists
|
|
42
42
|
def self.render(package:, to:, font_search_paths: nil, compliance: nil,
|
|
43
|
-
tagged: false, subset_fonts: true)
|
|
43
|
+
tagged: false, subset_fonts: true, compress: false)
|
|
44
44
|
Pipeline.new(package, to, font_search_paths,
|
|
45
45
|
compliance: compliance, tagged: tagged,
|
|
46
|
-
subset_fonts: subset_fonts).call
|
|
46
|
+
subset_fonts: subset_fonts, compress: compress).call
|
|
47
47
|
end
|
|
48
48
|
# rubocop:enable Metrics/ParameterLists
|
|
49
49
|
end
|
data/lib/idml/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: idml
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.5.
|
|
4
|
+
version: 0.5.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose
|
|
@@ -217,6 +217,7 @@ files:
|
|
|
217
217
|
- TODO.pdf/89-deep-audit-idml-vs-indesign.md
|
|
218
218
|
- TODO.pdf/90-per-run-font-resolution.md
|
|
219
219
|
- TODO.pdf/91-image-downsampling.md
|
|
220
|
+
- TODO.pdf/92-xref-entry-byte-count.md
|
|
220
221
|
- TODO.pdf/README.md
|
|
221
222
|
- exe/idml
|
|
222
223
|
- idml.gemspec
|