@pdfme/pdf-lib 6.0.3 → 6.0.4-dev.1
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.
- package/{src/api/Embeddable.ts → dist/api/Embeddable.d.ts} +1 -1
- package/dist/api/PDFDocument.d.ts +778 -0
- package/dist/api/PDFDocumentOptions.d.ts +38 -0
- package/dist/api/PDFEmbeddedFile.d.ts +38 -0
- package/dist/api/PDFEmbeddedPage.d.ts +73 -0
- package/dist/api/PDFFont.d.ts +94 -0
- package/dist/api/PDFImage.d.ts +95 -0
- package/dist/api/PDFJavaScript.d.ts +38 -0
- package/dist/api/PDFPage.d.ts +910 -0
- package/dist/api/PDFPageOptions.d.ts +172 -0
- package/dist/api/StandardFonts.d.ts +16 -0
- package/dist/api/colors.d.ts +34 -0
- package/dist/api/errors.d.ts +42 -0
- package/dist/api/form/PDFButton.d.ts +137 -0
- package/dist/api/form/PDFCheckBox.d.ts +142 -0
- package/dist/api/form/PDFDropdown.d.ts +402 -0
- package/dist/api/form/PDFField.d.ts +203 -0
- package/dist/api/form/PDFForm.d.ts +411 -0
- package/dist/api/form/PDFOptionList.d.ts +335 -0
- package/dist/api/form/PDFRadioGroup.d.ts +252 -0
- package/dist/api/form/PDFSignature.d.ts +29 -0
- package/dist/api/form/PDFTextField.d.ts +537 -0
- package/dist/api/form/appearances.d.ts +41 -0
- package/dist/api/image/alignment.d.ts +5 -0
- package/dist/api/objects.d.ts +4 -0
- package/dist/api/operations.d.ts +226 -0
- package/dist/api/operators.d.ts +90 -0
- package/dist/api/rotations.d.ts +38 -0
- package/dist/api/sizes.d.ts +52 -0
- package/dist/api/svg.d.ts +70 -0
- package/dist/api/svgPath.d.ts +2 -0
- package/dist/api/text/alignment.d.ts +5 -0
- package/dist/api/text/layout.d.ts +54 -0
- package/dist/core/PDFContext.d.ts +84 -0
- package/dist/core/PDFObjectCopier.d.ts +37 -0
- package/dist/core/acroform/PDFAcroButton.d.ts +21 -0
- package/dist/core/acroform/PDFAcroCheckBox.d.ts +13 -0
- package/dist/core/acroform/PDFAcroChoice.d.ts +20 -0
- package/dist/core/acroform/PDFAcroComboBox.d.ts +9 -0
- package/dist/core/acroform/PDFAcroField.d.ts +36 -0
- package/dist/core/acroform/PDFAcroForm.d.ts +20 -0
- package/dist/core/acroform/PDFAcroListBox.d.ts +9 -0
- package/dist/core/acroform/PDFAcroNonTerminal.d.ts +13 -0
- package/dist/core/acroform/PDFAcroPushButton.d.ts +9 -0
- package/dist/core/acroform/PDFAcroRadioButton.d.ts +13 -0
- package/{src/core/acroform/PDFAcroSignature.ts → dist/core/acroform/PDFAcroSignature.d.ts} +2 -4
- package/dist/core/acroform/PDFAcroTerminal.d.ts +16 -0
- package/dist/core/acroform/PDFAcroText.d.ts +22 -0
- package/dist/core/acroform/flags.d.ts +141 -0
- package/dist/core/acroform/utils.d.ts +6 -0
- package/dist/core/annotation/AppearanceCharacteristics.d.ts +33 -0
- package/dist/core/annotation/BorderStyle.d.ts +11 -0
- package/dist/core/annotation/PDFAnnotation.d.ts +51 -0
- package/dist/core/annotation/PDFWidgetAnnotation.d.ts +26 -0
- package/dist/core/annotation/flags.d.ts +79 -0
- package/dist/core/crypto.d.ts +95 -0
- package/dist/core/document/PDFCrossRefSection.d.ts +27 -0
- package/dist/core/document/PDFHeader.d.ts +10 -0
- package/dist/core/document/PDFTrailer.d.ts +9 -0
- package/dist/core/document/PDFTrailerDict.d.ts +10 -0
- package/dist/core/embedders/CMap.d.ts +3 -0
- package/dist/core/embedders/CustomFontEmbedder.d.ts +44 -0
- package/dist/core/embedders/CustomFontSubsetEmbedder.d.ts +20 -0
- package/dist/core/embedders/FileEmbedder.d.ts +33 -0
- package/dist/core/embedders/FontFlags.d.ts +13 -0
- package/dist/core/embedders/JavaScriptEmbedder.d.ts +10 -0
- package/dist/core/embedders/JpegEmbedder.d.ts +23 -0
- package/dist/core/embedders/PDFPageEmbedder.d.ts +37 -0
- package/dist/core/embedders/PngEmbedder.d.ts +19 -0
- package/dist/core/embedders/StandardFontEmbedder.d.ts +36 -0
- package/dist/core/errors.d.ts +94 -0
- package/{src/core/index.ts → dist/core/index.d.ts} +1 -17
- package/dist/core/interactive/ViewerPreferences.d.ts +347 -0
- package/dist/core/objects/PDFArray.d.ts +63 -0
- package/dist/core/objects/PDFBool.d.ts +13 -0
- package/dist/core/objects/PDFDict.d.ts +62 -0
- package/dist/core/objects/PDFHexString.d.ts +16 -0
- package/dist/core/objects/PDFInvalidObject.d.ts +11 -0
- package/dist/core/objects/PDFName.d.ts +41 -0
- package/dist/core/objects/PDFNull.d.ts +10 -0
- package/dist/core/objects/PDFNumber.d.ts +15 -0
- package/dist/core/objects/PDFObject.d.ts +8 -0
- package/dist/core/objects/PDFRawStream.d.ts +16 -0
- package/dist/core/objects/PDFRef.d.ts +13 -0
- package/dist/core/objects/PDFStream.d.ts +16 -0
- package/dist/core/objects/PDFString.d.ts +16 -0
- package/dist/core/operators/PDFOperator.d.ts +19 -0
- package/dist/core/operators/PDFOperatorNames.d.ts +76 -0
- package/dist/core/parser/BaseParser.d.ts +14 -0
- package/dist/core/parser/ByteStream.d.ts +26 -0
- package/dist/core/parser/PDFObjectParser.d.ts +31 -0
- package/dist/core/parser/PDFObjectStreamParser.d.ts +13 -0
- package/dist/core/parser/PDFParser.d.ts +46 -0
- package/dist/core/parser/PDFXRefStreamParser.d.ts +21 -0
- package/dist/core/streams/Ascii85Stream.d.ts +9 -0
- package/dist/core/streams/AsciiHexStream.d.ts +9 -0
- package/dist/core/streams/DecodeStream.d.ts +26 -0
- package/dist/core/streams/DecryptStream.d.ts +12 -0
- package/dist/core/streams/FlateStream.d.ts +13 -0
- package/dist/core/streams/LZWStream.d.ts +12 -0
- package/dist/core/streams/RunLengthStream.d.ts +8 -0
- package/dist/core/streams/Stream.d.ts +34 -0
- package/dist/core/streams/decode.d.ts +3 -0
- package/dist/core/structures/PDFCatalog.d.ts +27 -0
- package/dist/core/structures/PDFContentStream.d.ts +15 -0
- package/dist/core/structures/PDFCrossRefStream.d.ts +53 -0
- package/dist/core/structures/PDFFlateStream.d.ts +13 -0
- package/dist/core/structures/PDFObjectStream.d.ts +20 -0
- package/dist/core/structures/PDFPageLeaf.d.ts +54 -0
- package/dist/core/structures/PDFPageTree.d.ts +41 -0
- package/dist/core/syntax/CharCodes.d.ts +61 -0
- package/dist/core/syntax/Delimiters.d.ts +1 -0
- package/dist/core/syntax/Irregular.d.ts +1 -0
- package/dist/core/syntax/Keywords.d.ts +22 -0
- package/dist/core/syntax/Numeric.d.ts +3 -0
- package/dist/core/syntax/Whitespace.d.ts +1 -0
- package/dist/core/writers/PDFStreamWriter.d.ts +19 -0
- package/dist/core/writers/PDFWriter.d.ts +29 -0
- package/dist/index.js +19124 -0
- package/dist/index.js.map +1 -0
- package/dist/types/fontkit.d.ts +597 -0
- package/{src/types/index.ts → dist/types/index.d.ts} +8 -13
- package/{src/types/matrix.ts → dist/types/matrix.d.ts} +1 -2
- package/dist/utils/Cache.d.ts +10 -0
- package/dist/utils/arrays.d.ts +16 -0
- package/dist/utils/async.d.ts +5 -0
- package/dist/utils/base64.d.ts +10 -0
- package/dist/utils/elements/Arc.d.ts +22 -0
- package/dist/utils/elements/Circle.d.ts +14 -0
- package/dist/utils/elements/Ellipse.d.ts +20 -0
- package/dist/utils/elements/GraphElement.d.ts +6 -0
- package/dist/utils/elements/Line.d.ts +23 -0
- package/dist/utils/elements/Plot.d.ts +11 -0
- package/dist/utils/elements/Point.d.ts +18 -0
- package/dist/utils/elements/Rectangle.d.ts +21 -0
- package/dist/utils/elements/Segment.d.ts +19 -0
- package/dist/utils/errors.d.ts +1 -0
- package/dist/utils/intersections.d.ts +9 -0
- package/dist/utils/maths.d.ts +45 -0
- package/dist/utils/numbers.d.ts +23 -0
- package/dist/utils/objects.d.ts +15 -0
- package/dist/utils/pdfDocEncoding.d.ts +7 -0
- package/dist/utils/png.d.ts +17 -0
- package/dist/utils/rng.d.ts +13 -0
- package/dist/utils/strings.d.ts +25 -0
- package/{src/utils/unicode.ts → dist/utils/unicode.d.ts} +8 -195
- package/dist/utils/validators.d.ts +26 -0
- package/package.json +6 -1
- package/__tests__/api/PDFDocument.spec.ts +0 -576
- package/__tests__/api/PDFImage.spec.ts +0 -60
- package/__tests__/api/PDFPage.spec.ts +0 -151
- package/__tests__/api/form/PDFCheckBox.spec.ts +0 -71
- package/__tests__/api/form/PDFDropdown.spec.ts +0 -118
- package/__tests__/api/form/PDFForm.spec.ts +0 -370
- package/__tests__/api/form/PDFOptionList.spec.ts +0 -104
- package/__tests__/api/form/PDFRadioGroup.spec.ts +0 -183
- package/__tests__/api/form/PDFTextField.spec.ts +0 -148
- package/__tests__/api/svgPath.spec.ts +0 -153
- package/__tests__/api/text/layout.spec.ts +0 -166
- package/__tests__/core/PDFContext.spec.ts +0 -194
- package/__tests__/core/PDFObjectCopier.spec.ts +0 -421
- package/__tests__/core/acroform/PDFAcroField.spec.ts +0 -98
- package/__tests__/core/acroform/PDFAcroTerminal.spec.ts +0 -39
- package/__tests__/core/annotation/PDFWidgetAnnotation.spec.ts +0 -40
- package/__tests__/core/document/PDFCrossRefSection.spec.ts +0 -88
- package/__tests__/core/document/PDFHeader.spec.ts +0 -22
- package/__tests__/core/document/PDFTrailer.spec.ts +0 -28
- package/__tests__/core/document/PDFTrailerDict.spec.ts +0 -24
- package/__tests__/core/embedders/CMap.spec.ts +0 -47
- package/__tests__/core/embedders/CustomFontEmbedder.spec.ts +0 -96
- package/__tests__/core/embedders/CustomFontSubsetEmbedder.spec.ts +0 -62
- package/__tests__/core/embedders/FileEmbedder.spec.ts +0 -54
- package/__tests__/core/embedders/JpegEmbedder.spec.ts +0 -67
- package/__tests__/core/embedders/PDFPageEmbedder.spec.ts +0 -65
- package/__tests__/core/embedders/PngEmbedder.spec.ts +0 -87
- package/__tests__/core/embedders/StandardFontEmbedder.spec.ts +0 -79
- package/__tests__/core/embedders/data/SourceHanSerifJP-Regular.otf.cmap +0 -16096
- package/__tests__/core/embedders/data/Ubuntu-R.ttf.cmap +0 -1211
- package/__tests__/core/objects/PDFArray.spec.ts +0 -134
- package/__tests__/core/objects/PDFBool.spec.ts +0 -42
- package/__tests__/core/objects/PDFDict.spec.ts +0 -195
- package/__tests__/core/objects/PDFHexString.spec.ts +0 -168
- package/__tests__/core/objects/PDFInvalidObject.spec.ts +0 -32
- package/__tests__/core/objects/PDFName.spec.ts +0 -122
- package/__tests__/core/objects/PDFNull.spec.ts +0 -30
- package/__tests__/core/objects/PDFNumber.spec.ts +0 -50
- package/__tests__/core/objects/PDFObject.spec.ts +0 -29
- package/__tests__/core/objects/PDFRawStream.spec.ts +0 -45
- package/__tests__/core/objects/PDFRef.spec.ts +0 -60
- package/__tests__/core/objects/PDFString.spec.ts +0 -237
- package/__tests__/core/operators/PDFOperator.spec.ts +0 -77
- package/__tests__/core/parser/PDFObjectParser.spec.ts +0 -730
- package/__tests__/core/parser/PDFObjectStreamParser.spec.ts +0 -158
- package/__tests__/core/parser/PDFParser.spec.ts +0 -398
- package/__tests__/core/parser/PDFXRefStreamParser.spec.ts +0 -187
- package/__tests__/core/parser/data/object-stream-invalid +0 -2
- package/__tests__/core/parser/data/object-stream1 +0 -16
- package/__tests__/core/parser/data/object-stream2 +0 -10
- package/__tests__/core/parser/data/object-stream3 +0 -0
- package/__tests__/core/parser/data/object-stream4 +0 -0
- package/__tests__/core/parser/data/xref-stream1 +0 -0
- package/__tests__/core/parser/data/xref-stream2 +0 -0
- package/__tests__/core/parser/data/xref-stream3 +0 -0
- package/__tests__/core/parser/data/xref-stream4 +0 -0
- package/__tests__/core/streams/Ascii85Stream.spec.ts +0 -20
- package/__tests__/core/streams/AsciiHexStream.spec.ts +0 -20
- package/__tests__/core/streams/FlateStream.spec.ts +0 -20
- package/__tests__/core/streams/LZWStream.spec.ts +0 -20
- package/__tests__/core/streams/RunLengthStream.spec.ts +0 -20
- package/__tests__/core/streams/Stream.spec.ts +0 -128
- package/__tests__/core/streams/data/ascii85/1.decoded +0 -0
- package/__tests__/core/streams/data/ascii85/1.encoded +0 -43
- package/__tests__/core/streams/data/asciihex/1.decoded +0 -1
- package/__tests__/core/streams/data/asciihex/1.encoded +0 -1
- package/__tests__/core/streams/data/asciihex/2.decoded +0 -7
- package/__tests__/core/streams/data/asciihex/2.encoded +0 -1
- package/__tests__/core/streams/data/flate/1.corrupt.encoded +0 -1
- package/__tests__/core/streams/data/flate/1.decoded +0 -0
- package/__tests__/core/streams/data/flate/1.encoded +0 -2
- package/__tests__/core/streams/data/flate/2.decoded +0 -33
- package/__tests__/core/streams/data/flate/2.encoded +0 -0
- package/__tests__/core/streams/data/flate/3.decoded +0 -15
- package/__tests__/core/streams/data/flate/3.encoded +0 -0
- package/__tests__/core/streams/data/flate/4.decoded +0 -16
- package/__tests__/core/streams/data/flate/4.encoded +0 -0
- package/__tests__/core/streams/data/flate/5.decoded +0 -0
- package/__tests__/core/streams/data/flate/5.encoded +0 -0
- package/__tests__/core/streams/data/flate/6.decoded +0 -17
- package/__tests__/core/streams/data/flate/6.encoded +0 -0
- package/__tests__/core/streams/data/flate/7.decoded +0 -20
- package/__tests__/core/streams/data/flate/7.encoded +0 -1
- package/__tests__/core/streams/data/lzw/1.decoded +0 -0
- package/__tests__/core/streams/data/lzw/1.encoded +0 -0
- package/__tests__/core/streams/data/lzw/2.decoded +0 -0
- package/__tests__/core/streams/data/lzw/2.encoded +0 -0
- package/__tests__/core/streams/data/lzw/3.decoded +0 -14
- package/__tests__/core/streams/data/lzw/3.encoded +0 -2
- package/__tests__/core/streams/data/lzw/4.decoded +0 -14
- package/__tests__/core/streams/data/lzw/4.encoded +0 -2
- package/__tests__/core/streams/data/runlength/1.decoded +0 -1
- package/__tests__/core/streams/data/runlength/1.encoded +0 -1
- package/__tests__/core/streams/data/runlength/2.decoded +0 -1
- package/__tests__/core/streams/data/runlength/2.encoded +0 -1
- package/__tests__/core/streams/data/runlength/3.decoded +0 -0
- package/__tests__/core/streams/data/runlength/3.encoded +0 -0
- package/__tests__/core/streams/data/runlength/4.decoded +0 -1
- package/__tests__/core/streams/data/runlength/4.encoded +0 -1
- package/__tests__/core/streams/data/runlength/5.decoded +0 -1
- package/__tests__/core/streams/data/runlength/5.encoded +0 -1
- package/__tests__/core/streams/data/runlength/empty.encoded +0 -1
- package/__tests__/core/structures/PDFCatalog.spec.ts +0 -108
- package/__tests__/core/structures/PDFContentStream.spec.ts +0 -117
- package/__tests__/core/structures/PDFCrossRefStream.spec.ts +0 -145
- package/__tests__/core/structures/PDFObjectStream.spec.ts +0 -138
- package/__tests__/core/structures/PDFPageLeaf.spec.ts +0 -355
- package/__tests__/core/structures/PDFPageTree.spec.ts +0 -592
- package/__tests__/core/writers/PDFStreamWriter.spec.ts +0 -71
- package/__tests__/core/writers/PDFWriter.spec.ts +0 -144
- package/__tests__/core/writers/data/stream-writer-1.pdf +0 -0
- package/__tests__/index.test.ts +0 -12
- package/__tests__/utils/base64.spec.ts +0 -61
- package/__tests__/utils/data/simple.pdf +0 -201
- package/__tests__/utils/data/simple.pdf.base64 +0 -1
- package/__tests__/utils/pdfDocEncoding.spec.ts +0 -82
- package/__tests__/utils/png.spec.ts +0 -53
- package/__tests__/utils/rng.spec.ts +0 -14
- package/__tests__/utils/strings.spec.ts +0 -98
- package/__tests__/utils/unicode.spec.ts +0 -337
- package/assets/fonts/source_hans_jp/SourceHanSerifJP-Regular.otf +0 -0
- package/assets/fonts/ubuntu/Ubuntu-B.ttf +0 -0
- package/assets/fonts/ubuntu/Ubuntu-R.ttf +0 -0
- package/assets/images/cat_riding_unicorn.jpg +0 -0
- package/assets/images/cmyk_colorspace.jpg +0 -0
- package/assets/images/greyscale_bird.png +0 -0
- package/assets/images/minions_banana_alpha.png +0 -0
- package/assets/images/minions_banana_no_alpha.png +0 -0
- package/assets/images/minions_laughing.jpg +0 -0
- package/assets/pdfs/bixby_guide.pdf +0 -0
- package/assets/pdfs/encrypted_new.pdf +0 -0
- package/assets/pdfs/encrypted_old.pdf +0 -0
- package/assets/pdfs/fancy_fields.pdf +0 -0
- package/assets/pdfs/giraffe.pdf +0 -0
- package/assets/pdfs/invalid_root_ref.pdf +0 -0
- package/assets/pdfs/just_metadata.pdf +0 -49
- package/assets/pdfs/missing_endobj_keyword.pdf +0 -70
- package/assets/pdfs/missing_xref_trailer_dict.pdf +0 -141
- package/assets/pdfs/normal.pdf +0 -0
- package/assets/pdfs/pdf20examples/PDF 2.0 with offset start.pdf +0 -179
- package/assets/pdfs/stuff_following_header.pdf +0 -0
- package/assets/pdfs/us_constitution.pdf +0 -0
- package/assets/pdfs/with_comments.pdf +0 -0
- package/assets/pdfs/with_invalid_objects.pdf +0 -53
- package/assets/pdfs/with_invalid_stream_EOL.pdf +0 -0
- package/assets/pdfs/with_null_parent_entry.pdf +0 -0
- package/assets/pdfs/with_signature.pdf +0 -0
- package/assets/pdfs/with_update_sections.pdf +0 -0
- package/assets/pdfs/with_viewer_prefs.pdf +0 -0
- package/assets/pdfs/with_xfa_fields.pdf +0 -0
- package/src/api/PDFDocument.ts +0 -1389
- package/src/api/PDFDocumentOptions.ts +0 -45
- package/src/api/PDFEmbeddedFile.ts +0 -87
- package/src/api/PDFEmbeddedPage.ts +0 -100
- package/src/api/PDFFont.ts +0 -149
- package/src/api/PDFImage.ts +0 -143
- package/src/api/PDFJavaScript.ts +0 -75
- package/src/api/PDFPage.ts +0 -1604
- package/src/api/PDFPageOptions.ts +0 -175
- package/src/api/StandardFonts.ts +0 -16
- package/src/api/colors.ts +0 -109
- package/src/api/errors.ts +0 -110
- package/src/api/form/PDFButton.ts +0 -242
- package/src/api/form/PDFCheckBox.ts +0 -247
- package/src/api/form/PDFDropdown.ts +0 -637
- package/src/api/form/PDFField.ts +0 -491
- package/src/api/form/PDFForm.ts +0 -842
- package/src/api/form/PDFOptionList.ts +0 -555
- package/src/api/form/PDFRadioGroup.ts +0 -455
- package/src/api/form/PDFSignature.ts +0 -44
- package/src/api/form/PDFTextField.ts +0 -811
- package/src/api/form/appearances.ts +0 -655
- package/src/api/image/alignment.ts +0 -5
- package/src/api/objects.ts +0 -10
- package/src/api/operations.ts +0 -873
- package/src/api/operators.ts +0 -335
- package/src/api/rotations.ts +0 -84
- package/src/api/sizes.ts +0 -52
- package/src/api/svg.ts +0 -888
- package/src/api/svgPath.ts +0 -460
- package/src/api/text/alignment.ts +0 -5
- package/src/api/text/layout.ts +0 -328
- package/src/core/PDFContext.ts +0 -274
- package/src/core/PDFObjectCopier.ts +0 -142
- package/src/core/acroform/PDFAcroButton.ts +0 -104
- package/src/core/acroform/PDFAcroCheckBox.ts +0 -48
- package/src/core/acroform/PDFAcroChoice.ts +0 -143
- package/src/core/acroform/PDFAcroComboBox.ts +0 -21
- package/src/core/acroform/PDFAcroField.ts +0 -168
- package/src/core/acroform/PDFAcroForm.ts +0 -96
- package/src/core/acroform/PDFAcroListBox.ts +0 -19
- package/src/core/acroform/PDFAcroNonTerminal.ts +0 -33
- package/src/core/acroform/PDFAcroPushButton.ts +0 -21
- package/src/core/acroform/PDFAcroRadioButton.ts +0 -57
- package/src/core/acroform/PDFAcroTerminal.ts +0 -70
- package/src/core/acroform/PDFAcroText.ts +0 -76
- package/src/core/acroform/flags.ts +0 -162
- package/src/core/acroform/utils.ts +0 -129
- package/src/core/annotation/AppearanceCharacteristics.ts +0 -133
- package/src/core/annotation/BorderStyle.ts +0 -31
- package/src/core/annotation/PDFAnnotation.ts +0 -148
- package/src/core/annotation/PDFWidgetAnnotation.ts +0 -111
- package/src/core/annotation/flags.ts +0 -90
- package/src/core/crypto.ts +0 -1844
- package/src/core/document/PDFCrossRefSection.ts +0 -161
- package/src/core/document/PDFHeader.ts +0 -48
- package/src/core/document/PDFTrailer.ts +0 -48
- package/src/core/document/PDFTrailerDict.ts +0 -39
- package/src/core/embedders/CMap.ts +0 -65
- package/src/core/embedders/CustomFontEmbedder.ts +0 -237
- package/src/core/embedders/CustomFontSubsetEmbedder.ts +0 -89
- package/src/core/embedders/FileEmbedder.ts +0 -77
- package/src/core/embedders/FontFlags.ts +0 -45
- package/src/core/embedders/JavaScriptEmbedder.ts +0 -34
- package/src/core/embedders/JpegEmbedder.ts +0 -118
- package/src/core/embedders/PDFPageEmbedder.ts +0 -139
- package/src/core/embedders/PngEmbedder.ts +0 -69
- package/src/core/embedders/StandardFontEmbedder.ts +0 -121
- package/src/core/errors.ts +0 -226
- package/src/core/interactive/ViewerPreferences.ts +0 -565
- package/src/core/objects/PDFArray.ts +0 -179
- package/src/core/objects/PDFBool.ts +0 -53
- package/src/core/objects/PDFDict.ts +0 -220
- package/src/core/objects/PDFHexString.ts +0 -94
- package/src/core/objects/PDFInvalidObject.ts +0 -34
- package/src/core/objects/PDFName.ts +0 -152
- package/src/core/objects/PDFNull.ts +0 -30
- package/src/core/objects/PDFNumber.ts +0 -44
- package/src/core/objects/PDFObject.ts +0 -22
- package/src/core/objects/PDFRawStream.ts +0 -41
- package/src/core/objects/PDFRef.ts +0 -51
- package/src/core/objects/PDFStream.ts +0 -87
- package/src/core/objects/PDFString.ts +0 -118
- package/src/core/operators/PDFOperator.ts +0 -72
- package/src/core/operators/PDFOperatorNames.ts +0 -92
- package/src/core/parser/BaseParser.ts +0 -119
- package/src/core/parser/ByteStream.ts +0 -76
- package/src/core/parser/PDFObjectParser.ts +0 -302
- package/src/core/parser/PDFObjectStreamParser.ts +0 -65
- package/src/core/parser/PDFParser.ts +0 -363
- package/src/core/parser/PDFXRefStreamParser.ts +0 -129
- package/src/core/streams/Ascii85Stream.ts +0 -97
- package/src/core/streams/AsciiHexStream.ts +0 -77
- package/src/core/streams/DecodeStream.ts +0 -188
- package/src/core/streams/DecryptStream.ts +0 -49
- package/src/core/streams/FlateStream.ts +0 -397
- package/src/core/streams/LZWStream.ts +0 -157
- package/src/core/streams/RunLengthStream.ts +0 -55
- package/src/core/streams/Stream.ts +0 -126
- package/src/core/streams/decode.ts +0 -70
- package/src/core/structures/PDFCatalog.ts +0 -81
- package/src/core/structures/PDFContentStream.ts +0 -58
- package/src/core/structures/PDFCrossRefStream.ts +0 -238
- package/src/core/structures/PDFFlateStream.ts +0 -40
- package/src/core/structures/PDFObjectStream.ts +0 -91
- package/src/core/structures/PDFPageLeaf.ts +0 -244
- package/src/core/structures/PDFPageTree.ts +0 -192
- package/src/core/syntax/CharCodes.ts +0 -62
- package/src/core/syntax/Delimiters.ts +0 -14
- package/src/core/syntax/Irregular.ts +0 -10
- package/src/core/syntax/Keywords.ts +0 -57
- package/src/core/syntax/Numeric.ts +0 -26
- package/src/core/syntax/Whitespace.ts +0 -10
- package/src/core/writers/PDFStreamWriter.ts +0 -114
- package/src/core/writers/PDFWriter.ts +0 -146
- package/src/types/fontkit.ts +0 -643
- package/src/utils/Cache.ts +0 -26
- package/src/utils/arrays.ts +0 -153
- package/src/utils/async.ts +0 -8
- package/src/utils/base64.ts +0 -98
- package/src/utils/elements/Arc.ts +0 -97
- package/src/utils/elements/Circle.ts +0 -47
- package/src/utils/elements/Ellipse.ts +0 -117
- package/src/utils/elements/GraphElement.ts +0 -14
- package/src/utils/elements/Line.ts +0 -83
- package/src/utils/elements/Plot.ts +0 -50
- package/src/utils/elements/Point.ts +0 -37
- package/src/utils/elements/Rectangle.ts +0 -65
- package/src/utils/elements/Segment.ts +0 -81
- package/src/utils/errors.ts +0 -3
- package/src/utils/intersections.ts +0 -237
- package/src/utils/maths.ts +0 -96
- package/src/utils/numbers.ts +0 -55
- package/src/utils/objects.ts +0 -13
- package/src/utils/pdfDocEncoding.ts +0 -69
- package/src/utils/png.ts +0 -100
- package/src/utils/rng.ts +0 -21
- package/src/utils/strings.ts +0 -191
- package/src/utils/validators.ts +0 -192
- package/tsconfig.build.json +0 -14
- package/tsconfig.json +0 -15
- package/vite.config.mts +0 -39
- /package/{src/api/form/index.ts → dist/api/form/index.d.ts} +0 -0
- /package/{src/api/image/index.ts → dist/api/image/index.d.ts} +0 -0
- /package/{src/api/index.ts → dist/api/index.d.ts} +0 -0
- /package/{src/api/text/index.ts → dist/api/text/index.d.ts} +0 -0
- /package/{src/core/acroform/index.ts → dist/core/acroform/index.d.ts} +0 -0
- /package/{src/core/annotation/index.ts → dist/core/annotation/index.d.ts} +0 -0
- /package/{src/index.ts → dist/index.d.ts} +0 -0
- /package/{src/utils/elements/index.ts → dist/utils/elements/index.d.ts} +0 -0
- /package/{src/utils/index.ts → dist/utils/index.d.ts} +0 -0
|
@@ -1,175 +0,0 @@
|
|
|
1
|
-
import { Color } from './colors';
|
|
2
|
-
import PDFFont from './PDFFont';
|
|
3
|
-
import { Rotation } from './rotations';
|
|
4
|
-
import { FillRule, LineCapStyle } from './operators';
|
|
5
|
-
import type { Space, TransformationMatrix } from '../types';
|
|
6
|
-
|
|
7
|
-
interface SvgOptions {
|
|
8
|
-
matrix?: TransformationMatrix;
|
|
9
|
-
clipSpaces?: Space[];
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export enum BlendMode {
|
|
13
|
-
Normal = 'Normal',
|
|
14
|
-
Multiply = 'Multiply',
|
|
15
|
-
Screen = 'Screen',
|
|
16
|
-
Overlay = 'Overlay',
|
|
17
|
-
Darken = 'Darken',
|
|
18
|
-
Lighten = 'Lighten',
|
|
19
|
-
ColorDodge = 'ColorDodge',
|
|
20
|
-
ColorBurn = 'ColorBurn',
|
|
21
|
-
HardLight = 'HardLight',
|
|
22
|
-
SoftLight = 'SoftLight',
|
|
23
|
-
Difference = 'Difference',
|
|
24
|
-
Exclusion = 'Exclusion',
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export interface PDFPageDrawTextOptions extends SvgOptions {
|
|
28
|
-
color?: Color;
|
|
29
|
-
opacity?: number;
|
|
30
|
-
blendMode?: BlendMode;
|
|
31
|
-
font?: PDFFont;
|
|
32
|
-
size?: number;
|
|
33
|
-
rotate?: Rotation;
|
|
34
|
-
xSkew?: Rotation;
|
|
35
|
-
ySkew?: Rotation;
|
|
36
|
-
x?: number;
|
|
37
|
-
y?: number;
|
|
38
|
-
lineHeight?: number;
|
|
39
|
-
maxWidth?: number;
|
|
40
|
-
wordBreaks?: string[];
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
export interface PDFPageDrawImageOptions extends SvgOptions {
|
|
44
|
-
x?: number;
|
|
45
|
-
y?: number;
|
|
46
|
-
width?: number;
|
|
47
|
-
height?: number;
|
|
48
|
-
rotate?: Rotation;
|
|
49
|
-
xSkew?: Rotation;
|
|
50
|
-
ySkew?: Rotation;
|
|
51
|
-
opacity?: number;
|
|
52
|
-
blendMode?: BlendMode;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
export interface PDFPageDrawPageOptions {
|
|
56
|
-
x?: number;
|
|
57
|
-
y?: number;
|
|
58
|
-
xScale?: number;
|
|
59
|
-
yScale?: number;
|
|
60
|
-
width?: number;
|
|
61
|
-
height?: number;
|
|
62
|
-
rotate?: Rotation;
|
|
63
|
-
xSkew?: Rotation;
|
|
64
|
-
ySkew?: Rotation;
|
|
65
|
-
opacity?: number;
|
|
66
|
-
blendMode?: BlendMode;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
export interface PDFPageDrawSVGOptions extends SvgOptions {
|
|
70
|
-
x?: number;
|
|
71
|
-
y?: number;
|
|
72
|
-
scale?: number;
|
|
73
|
-
rotate?: Rotation;
|
|
74
|
-
borderWidth?: number;
|
|
75
|
-
color?: Color;
|
|
76
|
-
opacity?: number;
|
|
77
|
-
borderColor?: Color;
|
|
78
|
-
borderOpacity?: number;
|
|
79
|
-
borderDashArray?: number[];
|
|
80
|
-
borderDashPhase?: number;
|
|
81
|
-
borderLineCap?: LineCapStyle;
|
|
82
|
-
blendMode?: BlendMode;
|
|
83
|
-
fillRule?: FillRule;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
export interface PDFPageDrawLineOptions extends SvgOptions {
|
|
87
|
-
start: { x: number; y: number };
|
|
88
|
-
end: { x: number; y: number };
|
|
89
|
-
thickness?: number;
|
|
90
|
-
color?: Color;
|
|
91
|
-
opacity?: number;
|
|
92
|
-
lineCap?: LineCapStyle;
|
|
93
|
-
dashArray?: number[];
|
|
94
|
-
dashPhase?: number;
|
|
95
|
-
blendMode?: BlendMode;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
export interface PDFPageDrawRectangleOptions extends SvgOptions {
|
|
99
|
-
x?: number;
|
|
100
|
-
y?: number;
|
|
101
|
-
width?: number;
|
|
102
|
-
height?: number;
|
|
103
|
-
rotate?: Rotation;
|
|
104
|
-
xSkew?: Rotation;
|
|
105
|
-
ySkew?: Rotation;
|
|
106
|
-
borderWidth?: number;
|
|
107
|
-
color?: Color;
|
|
108
|
-
opacity?: number;
|
|
109
|
-
borderColor?: Color;
|
|
110
|
-
borderOpacity?: number;
|
|
111
|
-
borderDashArray?: number[];
|
|
112
|
-
borderDashPhase?: number;
|
|
113
|
-
borderLineCap?: LineCapStyle;
|
|
114
|
-
blendMode?: BlendMode;
|
|
115
|
-
radius?: number;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
export interface PDFPageDrawSquareOptions extends SvgOptions {
|
|
119
|
-
x?: number;
|
|
120
|
-
y?: number;
|
|
121
|
-
size?: number;
|
|
122
|
-
rotate?: Rotation;
|
|
123
|
-
xSkew?: Rotation;
|
|
124
|
-
ySkew?: Rotation;
|
|
125
|
-
borderWidth?: number;
|
|
126
|
-
color?: Color;
|
|
127
|
-
opacity?: number;
|
|
128
|
-
borderColor?: Color;
|
|
129
|
-
borderOpacity?: number;
|
|
130
|
-
borderDashArray?: number[];
|
|
131
|
-
borderDashPhase?: number;
|
|
132
|
-
borderLineCap?: LineCapStyle;
|
|
133
|
-
blendMode?: BlendMode;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
export interface PDFPageDrawEllipseOptions extends SvgOptions {
|
|
137
|
-
x?: number;
|
|
138
|
-
y?: number;
|
|
139
|
-
xScale?: number;
|
|
140
|
-
yScale?: number;
|
|
141
|
-
rotate?: Rotation;
|
|
142
|
-
color?: Color;
|
|
143
|
-
opacity?: number;
|
|
144
|
-
borderColor?: Color;
|
|
145
|
-
borderOpacity?: number;
|
|
146
|
-
borderWidth?: number;
|
|
147
|
-
borderDashArray?: number[];
|
|
148
|
-
borderDashPhase?: number;
|
|
149
|
-
borderLineCap?: LineCapStyle;
|
|
150
|
-
blendMode?: BlendMode;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
export interface PDFPageDrawCircleOptions extends SvgOptions {
|
|
154
|
-
x?: number;
|
|
155
|
-
y?: number;
|
|
156
|
-
size?: number;
|
|
157
|
-
color?: Color;
|
|
158
|
-
opacity?: number;
|
|
159
|
-
borderColor?: Color;
|
|
160
|
-
borderOpacity?: number;
|
|
161
|
-
borderWidth?: number;
|
|
162
|
-
borderDashArray?: number[];
|
|
163
|
-
borderDashPhase?: number;
|
|
164
|
-
borderLineCap?: LineCapStyle;
|
|
165
|
-
blendMode?: BlendMode;
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
export interface PDFPageDrawSVGElementOptions {
|
|
169
|
-
x?: number;
|
|
170
|
-
y?: number;
|
|
171
|
-
width?: number;
|
|
172
|
-
height?: number;
|
|
173
|
-
fontSize?: number;
|
|
174
|
-
fonts?: { [fontName: string]: PDFFont };
|
|
175
|
-
}
|
package/src/api/StandardFonts.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export enum StandardFonts {
|
|
2
|
-
Courier = 'Courier',
|
|
3
|
-
CourierBold = 'Courier-Bold',
|
|
4
|
-
CourierOblique = 'Courier-Oblique',
|
|
5
|
-
CourierBoldOblique = 'Courier-BoldOblique',
|
|
6
|
-
Helvetica = 'Helvetica',
|
|
7
|
-
HelveticaBold = 'Helvetica-Bold',
|
|
8
|
-
HelveticaOblique = 'Helvetica-Oblique',
|
|
9
|
-
HelveticaBoldOblique = 'Helvetica-BoldOblique',
|
|
10
|
-
TimesRoman = 'Times-Roman',
|
|
11
|
-
TimesRomanBold = 'Times-Bold',
|
|
12
|
-
TimesRomanItalic = 'Times-Italic',
|
|
13
|
-
TimesRomanBoldItalic = 'Times-BoldItalic',
|
|
14
|
-
Symbol = 'Symbol',
|
|
15
|
-
ZapfDingbats = 'ZapfDingbats',
|
|
16
|
-
}
|
package/src/api/colors.ts
DELETED
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
setFillingCmykColor,
|
|
3
|
-
setFillingGrayscaleColor,
|
|
4
|
-
setFillingRgbColor,
|
|
5
|
-
setStrokingCmykColor,
|
|
6
|
-
setStrokingGrayscaleColor,
|
|
7
|
-
setStrokingRgbColor,
|
|
8
|
-
} from './operators';
|
|
9
|
-
import { assertRange, assertIs, error } from '../utils';
|
|
10
|
-
import ColorParser from 'color';
|
|
11
|
-
|
|
12
|
-
export enum ColorTypes {
|
|
13
|
-
Grayscale = 'Grayscale',
|
|
14
|
-
RGB = 'RGB',
|
|
15
|
-
CMYK = 'CMYK',
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export interface Grayscale {
|
|
19
|
-
type: ColorTypes.Grayscale;
|
|
20
|
-
gray: number;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export interface RGB {
|
|
24
|
-
type: ColorTypes.RGB;
|
|
25
|
-
red: number;
|
|
26
|
-
green: number;
|
|
27
|
-
blue: number;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export interface CMYK {
|
|
31
|
-
type: ColorTypes.CMYK;
|
|
32
|
-
cyan: number;
|
|
33
|
-
magenta: number;
|
|
34
|
-
yellow: number;
|
|
35
|
-
key: number;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export type Color = Grayscale | RGB | CMYK;
|
|
39
|
-
|
|
40
|
-
export const grayscale = (gray: number): Grayscale => {
|
|
41
|
-
assertRange(gray, 'gray', 0.0, 1.0);
|
|
42
|
-
return { type: ColorTypes.Grayscale, gray };
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
export const rgb = (red: number, green: number, blue: number): RGB => {
|
|
46
|
-
assertRange(red, 'red', 0, 1);
|
|
47
|
-
assertRange(green, 'green', 0, 1);
|
|
48
|
-
assertRange(blue, 'blue', 0, 1);
|
|
49
|
-
return { type: ColorTypes.RGB, red, green, blue };
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
export const cmyk = (cyan: number, magenta: number, yellow: number, key: number): CMYK => {
|
|
53
|
-
assertRange(cyan, 'cyan', 0, 1);
|
|
54
|
-
assertRange(magenta, 'magenta', 0, 1);
|
|
55
|
-
assertRange(yellow, 'yellow', 0, 1);
|
|
56
|
-
assertRange(key, 'key', 0, 1);
|
|
57
|
-
return { type: ColorTypes.CMYK, cyan, magenta, yellow, key };
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
export const colorString = (color: string): { rgb: Color; alpha?: number } => {
|
|
61
|
-
assertIs(color, 'color', ['string']);
|
|
62
|
-
const colorDescription = ColorParser(color).unitObject();
|
|
63
|
-
return {
|
|
64
|
-
rgb: rgb(colorDescription.r, colorDescription.g, colorDescription.b),
|
|
65
|
-
alpha: colorDescription.alpha,
|
|
66
|
-
};
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
const { Grayscale, RGB, CMYK } = ColorTypes;
|
|
70
|
-
|
|
71
|
-
// prettier-ignore
|
|
72
|
-
export const setFillingColor = (color: Color) =>
|
|
73
|
-
color.type === Grayscale ? setFillingGrayscaleColor(color.gray)
|
|
74
|
-
: color.type === RGB ? setFillingRgbColor(color.red, color.green, color.blue)
|
|
75
|
-
: color.type === CMYK ? setFillingCmykColor(color.cyan, color.magenta, color.yellow, color.key)
|
|
76
|
-
: error(`Invalid color: ${JSON.stringify(color)}`);
|
|
77
|
-
|
|
78
|
-
// prettier-ignore
|
|
79
|
-
export const setStrokingColor = (color: Color) =>
|
|
80
|
-
color.type === Grayscale ? setStrokingGrayscaleColor(color.gray)
|
|
81
|
-
: color.type === RGB ? setStrokingRgbColor(color.red, color.green, color.blue)
|
|
82
|
-
: color.type === CMYK ? setStrokingCmykColor(color.cyan, color.magenta, color.yellow, color.key)
|
|
83
|
-
: error(`Invalid color: ${JSON.stringify(color)}`);
|
|
84
|
-
|
|
85
|
-
// prettier-ignore
|
|
86
|
-
export const componentsToColor = (comps?: number[], scale = 1) => (
|
|
87
|
-
comps?.length === 1 ? grayscale(
|
|
88
|
-
comps[0] * scale,
|
|
89
|
-
)
|
|
90
|
-
: comps?.length === 3 ? rgb(
|
|
91
|
-
comps[0] * scale,
|
|
92
|
-
comps[1] * scale,
|
|
93
|
-
comps[2] * scale,
|
|
94
|
-
)
|
|
95
|
-
: comps?.length === 4 ? cmyk(
|
|
96
|
-
comps[0] * scale,
|
|
97
|
-
comps[1] * scale,
|
|
98
|
-
comps[2] * scale,
|
|
99
|
-
comps[3] * scale,
|
|
100
|
-
)
|
|
101
|
-
: undefined
|
|
102
|
-
);
|
|
103
|
-
|
|
104
|
-
// prettier-ignore
|
|
105
|
-
export const colorToComponents = (color: Color) =>
|
|
106
|
-
color.type === Grayscale ? [color.gray]
|
|
107
|
-
: color.type === RGB ? [color.red, color.green, color.blue]
|
|
108
|
-
: color.type === CMYK ? [color.cyan, color.magenta, color.yellow, color.key]
|
|
109
|
-
: error(`Invalid color: ${JSON.stringify(color)}`);
|
package/src/api/errors.ts
DELETED
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
// tslint:disable: max-classes-per-file
|
|
2
|
-
|
|
3
|
-
// TODO: Include link to documentation with example
|
|
4
|
-
export class EncryptedPDFError extends Error {
|
|
5
|
-
constructor() {
|
|
6
|
-
const msg =
|
|
7
|
-
'Input document to `PDFDocument.load` is encrypted. You can use `PDFDocument.load(..., { ignoreEncryption: true })` if you wish to load the document anyways.';
|
|
8
|
-
super(msg);
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
// TODO: Include link to documentation with example
|
|
13
|
-
export class FontkitNotRegisteredError extends Error {
|
|
14
|
-
constructor() {
|
|
15
|
-
const msg =
|
|
16
|
-
'Input to `PDFDocument.embedFont` was a custom font, but no `fontkit` instance was found. You must register a `fontkit` instance with `PDFDocument.registerFontkit(...)` before embedding custom fonts.';
|
|
17
|
-
super(msg);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
// TODO: Include link to documentation with example
|
|
22
|
-
export class ForeignPageError extends Error {
|
|
23
|
-
constructor() {
|
|
24
|
-
const msg =
|
|
25
|
-
'A `page` passed to `PDFDocument.addPage` or `PDFDocument.insertPage` was from a different (foreign) PDF document. If you want to copy pages from one PDFDocument to another, you must use `PDFDocument.copyPages(...)` to copy the pages before adding or inserting them.';
|
|
26
|
-
super(msg);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
// TODO: Include link to documentation with example
|
|
31
|
-
export class RemovePageFromEmptyDocumentError extends Error {
|
|
32
|
-
constructor() {
|
|
33
|
-
const msg = 'PDFDocument has no pages so `PDFDocument.removePage` cannot be called';
|
|
34
|
-
super(msg);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export class NoSuchFieldError extends Error {
|
|
39
|
-
constructor(name: string) {
|
|
40
|
-
const msg = `PDFDocument has no form field with the name "${name}"`;
|
|
41
|
-
super(msg);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
export class UnexpectedFieldTypeError extends Error {
|
|
46
|
-
constructor(name: string, expected: any, actual: any) {
|
|
47
|
-
const expectedType = expected?.name;
|
|
48
|
-
const actualType = actual?.constructor?.name ?? actual;
|
|
49
|
-
const msg =
|
|
50
|
-
`Expected field "${name}" to be of type ${expectedType}, ` +
|
|
51
|
-
`but it is actually of type ${actualType}`;
|
|
52
|
-
super(msg);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
export class MissingOnValueCheckError extends Error {
|
|
57
|
-
constructor(onValue: any) {
|
|
58
|
-
const msg = `Failed to select check box due to missing onValue: "${onValue}"`;
|
|
59
|
-
super(msg);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
export class FieldAlreadyExistsError extends Error {
|
|
64
|
-
constructor(name: string) {
|
|
65
|
-
const msg = `A field already exists with the specified name: "${name}"`;
|
|
66
|
-
super(msg);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
export class InvalidFieldNamePartError extends Error {
|
|
71
|
-
constructor(namePart: string) {
|
|
72
|
-
const msg = `Field name contains invalid component: "${namePart}"`;
|
|
73
|
-
super(msg);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
export class FieldExistsAsNonTerminalError extends Error {
|
|
78
|
-
constructor(name: string) {
|
|
79
|
-
const msg = `A non-terminal field already exists with the specified name: "${name}"`;
|
|
80
|
-
super(msg);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
export class RichTextFieldReadError extends Error {
|
|
85
|
-
constructor(fieldName: string) {
|
|
86
|
-
const msg = `Reading rich text fields is not supported: Attempted to read rich text field: ${fieldName}`;
|
|
87
|
-
super(msg);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
export class CombedTextLayoutError extends Error {
|
|
92
|
-
constructor(lineLength: number, cellCount: number) {
|
|
93
|
-
const msg = `Failed to layout combed text as lineLength=${lineLength} is greater than cellCount=${cellCount}`;
|
|
94
|
-
super(msg);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
export class ExceededMaxLengthError extends Error {
|
|
99
|
-
constructor(textLength: number, maxLength: number, name: string) {
|
|
100
|
-
const msg = `Attempted to set text with length=${textLength} for TextField with maxLength=${maxLength} and name=${name}`;
|
|
101
|
-
super(msg);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
export class InvalidMaxLengthError extends Error {
|
|
106
|
-
constructor(textLength: number, maxLength: number, name: string) {
|
|
107
|
-
const msg = `Attempted to set maxLength=${maxLength}, which is less than ${textLength}, the length of this field's current value (name=${name})`;
|
|
108
|
-
super(msg);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
@@ -1,242 +0,0 @@
|
|
|
1
|
-
import PDFDocument from '../PDFDocument';
|
|
2
|
-
import PDFPage from '../PDFPage';
|
|
3
|
-
import PDFFont from '../PDFFont';
|
|
4
|
-
import PDFImage from '../PDFImage';
|
|
5
|
-
import { ImageAlignment } from '../image/alignment';
|
|
6
|
-
import {
|
|
7
|
-
AppearanceProviderFor,
|
|
8
|
-
normalizeAppearance,
|
|
9
|
-
defaultButtonAppearanceProvider,
|
|
10
|
-
} from './appearances';
|
|
11
|
-
import PDFField, { FieldAppearanceOptions, assertFieldAppearanceOptions } from './PDFField';
|
|
12
|
-
import { rgb } from '../colors';
|
|
13
|
-
import { degrees } from '../rotations';
|
|
14
|
-
|
|
15
|
-
import { PDFRef, PDFStream, PDFAcroPushButton, PDFWidgetAnnotation } from '../../core';
|
|
16
|
-
import { assertIs, assertOrUndefined, assertPositive } from '../../utils';
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Represents a button field of a [[PDFForm]].
|
|
20
|
-
*
|
|
21
|
-
* [[PDFButton]] fields are interactive controls that users can click with their
|
|
22
|
-
* mouse. This type of [[PDFField]] is not stateful. The purpose of a button
|
|
23
|
-
* is to perform an action when the user clicks on it, such as opening a print
|
|
24
|
-
* modal or resetting the form. Buttons are typically rectangular in shape and
|
|
25
|
-
* have a text label describing the action that they perform when clicked.
|
|
26
|
-
*/
|
|
27
|
-
export default class PDFButton extends PDFField {
|
|
28
|
-
/**
|
|
29
|
-
* > **NOTE:** You probably don't want to call this method directly. Instead,
|
|
30
|
-
* > consider using the [[PDFForm.getButton]] method, which will create an
|
|
31
|
-
* > instance of [[PDFButton]] for you.
|
|
32
|
-
*
|
|
33
|
-
* Create an instance of [[PDFButton]] from an existing acroPushButton and ref
|
|
34
|
-
*
|
|
35
|
-
* @param acroPushButton The underlying `PDFAcroPushButton` for this button.
|
|
36
|
-
* @param ref The unique reference for this button.
|
|
37
|
-
* @param doc The document to which this button will belong.
|
|
38
|
-
*/
|
|
39
|
-
static of = (acroPushButton: PDFAcroPushButton, ref: PDFRef, doc: PDFDocument) =>
|
|
40
|
-
new PDFButton(acroPushButton, ref, doc);
|
|
41
|
-
|
|
42
|
-
/** The low-level PDFAcroPushButton wrapped by this button. */
|
|
43
|
-
readonly acroField: PDFAcroPushButton;
|
|
44
|
-
|
|
45
|
-
private constructor(acroPushButton: PDFAcroPushButton, ref: PDFRef, doc: PDFDocument) {
|
|
46
|
-
super(acroPushButton, ref, doc);
|
|
47
|
-
|
|
48
|
-
assertIs(acroPushButton, 'acroButton', [[PDFAcroPushButton, 'PDFAcroPushButton']]);
|
|
49
|
-
|
|
50
|
-
this.acroField = acroPushButton;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* Display an image inside the bounds of this button's widgets. For example:
|
|
55
|
-
* ```js
|
|
56
|
-
* const pngImage = await pdfDoc.embedPng(...)
|
|
57
|
-
* const button = form.getButton('some.button.field')
|
|
58
|
-
* button.setImage(pngImage, ImageAlignment.Center)
|
|
59
|
-
* ```
|
|
60
|
-
* This will update the appearances streams for each of this button's widgets.
|
|
61
|
-
* @param image The image that should be displayed.
|
|
62
|
-
* @param alignment The alignment of the image.
|
|
63
|
-
*/
|
|
64
|
-
setImage(image: PDFImage, alignment = ImageAlignment.Center) {
|
|
65
|
-
const widgets = this.acroField.getWidgets();
|
|
66
|
-
for (let idx = 0, len = widgets.length; idx < len; idx++) {
|
|
67
|
-
const widget = widgets[idx];
|
|
68
|
-
const streamRef = this.createImageAppearanceStream(widget, image, alignment);
|
|
69
|
-
this.updateWidgetAppearances(widget, { normal: streamRef });
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
this.markAsClean();
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Set the font size for this field. Larger font sizes will result in larger
|
|
77
|
-
* text being displayed when PDF readers render this button. Font sizes may
|
|
78
|
-
* be integer or floating point numbers. Supplying a negative font size will
|
|
79
|
-
* cause this method to throw an error.
|
|
80
|
-
*
|
|
81
|
-
* For example:
|
|
82
|
-
* ```js
|
|
83
|
-
* const button = form.getButton('some.button.field')
|
|
84
|
-
* button.setFontSize(4)
|
|
85
|
-
* button.setFontSize(15.7)
|
|
86
|
-
* ```
|
|
87
|
-
*
|
|
88
|
-
* > This method depends upon the existence of a default appearance
|
|
89
|
-
* > (`/DA`) string. If this field does not have a default appearance string,
|
|
90
|
-
* > or that string does not contain a font size (via the `Tf` operator),
|
|
91
|
-
* > then this method will throw an error.
|
|
92
|
-
*
|
|
93
|
-
* @param fontSize The font size to be used when rendering text in this field.
|
|
94
|
-
*/
|
|
95
|
-
setFontSize(fontSize: number) {
|
|
96
|
-
assertPositive(fontSize, 'fontSize');
|
|
97
|
-
this.acroField.setFontSize(fontSize);
|
|
98
|
-
this.markAsDirty();
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* Show this button on the specified page with the given text. For example:
|
|
103
|
-
* ```js
|
|
104
|
-
* const ubuntuFont = await pdfDoc.embedFont(ubuntuFontBytes)
|
|
105
|
-
* const page = pdfDoc.addPage()
|
|
106
|
-
*
|
|
107
|
-
* const form = pdfDoc.getForm()
|
|
108
|
-
* const button = form.createButton('some.button.field')
|
|
109
|
-
*
|
|
110
|
-
* button.addToPage('Do Stuff', page, {
|
|
111
|
-
* x: 50,
|
|
112
|
-
* y: 75,
|
|
113
|
-
* width: 200,
|
|
114
|
-
* height: 100,
|
|
115
|
-
* textColor: rgb(1, 0, 0),
|
|
116
|
-
* backgroundColor: rgb(0, 1, 0),
|
|
117
|
-
* borderColor: rgb(0, 0, 1),
|
|
118
|
-
* borderWidth: 2,
|
|
119
|
-
* rotate: degrees(90),
|
|
120
|
-
* font: ubuntuFont,
|
|
121
|
-
* })
|
|
122
|
-
* ```
|
|
123
|
-
* This will create a new widget for this button field.
|
|
124
|
-
* @param text The text to be displayed for this button widget.
|
|
125
|
-
* @param page The page to which this button widget should be added.
|
|
126
|
-
* @param options The options to be used when adding this button widget.
|
|
127
|
-
*/
|
|
128
|
-
addToPage(
|
|
129
|
-
// TODO: This needs to be optional, e.g. for image buttons
|
|
130
|
-
text: string,
|
|
131
|
-
page: PDFPage,
|
|
132
|
-
options?: FieldAppearanceOptions,
|
|
133
|
-
) {
|
|
134
|
-
assertOrUndefined(text, 'text', ['string']);
|
|
135
|
-
assertOrUndefined(page, 'page', [[PDFPage, 'PDFPage']]);
|
|
136
|
-
assertFieldAppearanceOptions(options);
|
|
137
|
-
|
|
138
|
-
// Create a widget for this button
|
|
139
|
-
const widget = this.createWidget({
|
|
140
|
-
x: (options?.x ?? 0) - (options?.borderWidth ?? 0) / 2,
|
|
141
|
-
y: (options?.y ?? 0) - (options?.borderWidth ?? 0) / 2,
|
|
142
|
-
width: options?.width ?? 100,
|
|
143
|
-
height: options?.height ?? 50,
|
|
144
|
-
textColor: options?.textColor ?? rgb(0, 0, 0),
|
|
145
|
-
backgroundColor: options?.backgroundColor ?? rgb(0.75, 0.75, 0.75),
|
|
146
|
-
borderColor: options?.borderColor,
|
|
147
|
-
borderWidth: options?.borderWidth ?? 0,
|
|
148
|
-
rotate: options?.rotate ?? degrees(0),
|
|
149
|
-
caption: text,
|
|
150
|
-
hidden: options?.hidden,
|
|
151
|
-
page: page.ref,
|
|
152
|
-
});
|
|
153
|
-
const widgetRef = this.doc.context.register(widget.dict);
|
|
154
|
-
|
|
155
|
-
// Add widget to this field
|
|
156
|
-
this.acroField.addWidget(widgetRef);
|
|
157
|
-
|
|
158
|
-
// Set appearance streams for widget
|
|
159
|
-
const font = options?.font ?? this.doc.getForm().getDefaultFont();
|
|
160
|
-
this.updateWidgetAppearance(widget, font);
|
|
161
|
-
|
|
162
|
-
// Add widget to the given page
|
|
163
|
-
page.node.addAnnot(widgetRef);
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
/**
|
|
167
|
-
* Returns `true` if this button has been marked as dirty, or if any of this
|
|
168
|
-
* button's widgets do not have an appearance stream. For example:
|
|
169
|
-
* ```js
|
|
170
|
-
* const button = form.getButton('some.button.field')
|
|
171
|
-
* if (button.needsAppearancesUpdate()) console.log('Needs update')
|
|
172
|
-
* ```
|
|
173
|
-
* @returns Whether or not this button needs an appearance update.
|
|
174
|
-
*/
|
|
175
|
-
needsAppearancesUpdate(): boolean {
|
|
176
|
-
if (this.isDirty()) return true;
|
|
177
|
-
|
|
178
|
-
const widgets = this.acroField.getWidgets();
|
|
179
|
-
for (let idx = 0, len = widgets.length; idx < len; idx++) {
|
|
180
|
-
const widget = widgets[idx];
|
|
181
|
-
const hasAppearances = widget.getAppearances()?.normal instanceof PDFStream;
|
|
182
|
-
if (!hasAppearances) return true;
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
return false;
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
/**
|
|
189
|
-
* Update the appearance streams for each of this button's widgets using
|
|
190
|
-
* the default appearance provider for buttons. For example:
|
|
191
|
-
* ```js
|
|
192
|
-
* const helvetica = await pdfDoc.embedFont(StandardFonts.Helvetica)
|
|
193
|
-
* const button = form.getButton('some.button.field')
|
|
194
|
-
* button.defaultUpdateAppearances(helvetica)
|
|
195
|
-
* ```
|
|
196
|
-
* @param font The font to be used for creating the appearance streams.
|
|
197
|
-
*/
|
|
198
|
-
defaultUpdateAppearances(font: PDFFont) {
|
|
199
|
-
assertIs(font, 'font', [[PDFFont, 'PDFFont']]);
|
|
200
|
-
this.updateAppearances(font);
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
/**
|
|
204
|
-
* Update the appearance streams for each of this button's widgets using
|
|
205
|
-
* the given appearance provider. If no `provider` is passed, the default
|
|
206
|
-
* appearance provider for buttons will be used. For example:
|
|
207
|
-
* ```js
|
|
208
|
-
* const helvetica = await pdfDoc.embedFont(StandardFonts.Helvetica)
|
|
209
|
-
* const button = form.getButton('some.button.field')
|
|
210
|
-
* button.updateAppearances(helvetica, (field, widget, font) => {
|
|
211
|
-
* ...
|
|
212
|
-
* return {
|
|
213
|
-
* normal: drawButton(...),
|
|
214
|
-
* down: drawButton(...),
|
|
215
|
-
* }
|
|
216
|
-
* })
|
|
217
|
-
* ```
|
|
218
|
-
* @param font The font to be used for creating the appearance streams.
|
|
219
|
-
* @param provider Optionally, the appearance provider to be used for
|
|
220
|
-
* generating the contents of the appearance streams.
|
|
221
|
-
*/
|
|
222
|
-
updateAppearances(font: PDFFont, provider?: AppearanceProviderFor<PDFButton>) {
|
|
223
|
-
assertIs(font, 'font', [[PDFFont, 'PDFFont']]);
|
|
224
|
-
assertOrUndefined(provider, 'provider', [Function]);
|
|
225
|
-
|
|
226
|
-
const widgets = this.acroField.getWidgets();
|
|
227
|
-
for (let idx = 0, len = widgets.length; idx < len; idx++) {
|
|
228
|
-
const widget = widgets[idx];
|
|
229
|
-
this.updateWidgetAppearance(widget, font, provider);
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
private updateWidgetAppearance(
|
|
234
|
-
widget: PDFWidgetAnnotation,
|
|
235
|
-
font: PDFFont,
|
|
236
|
-
provider?: AppearanceProviderFor<PDFButton>,
|
|
237
|
-
) {
|
|
238
|
-
const apProvider = provider ?? defaultButtonAppearanceProvider;
|
|
239
|
-
const appearances = normalizeAppearance(apProvider(this, widget, font));
|
|
240
|
-
this.updateWidgetAppearanceWithFont(widget, font, appearances);
|
|
241
|
-
}
|
|
242
|
-
}
|