Office & paperwork · Mail Merge to Separate PDFs

How the Mail Merge to Separate PDFs works

Save the finished merge from Word as one PDF, then give this page that PDF and your list of names. It cuts the PDF into one file per person, names each file from your list, and checks the first page of every file for the name it was given.

Back to the tool

How this works

What you do in Word first

This tool starts from one PDF that holds every letter. Microsoft's page on letters lists Edit Individual Documents among the ways to finish a merge, on Windows and on Mac. Its page on directories says what that command gives: a new document, which you then save like any regular document. Its page on PDF gives the steps for saving a Word document as a PDF: on Windows, File, Save As or Save a Copy, and choose PDF in the list; on a Mac, File, Save As or Save a copy, File Format, PDF. No single Microsoft page joins these steps for letters, and we have not run them in Word ourselves, so check that the PDF you get holds all the letters, one after another.

That PDF option list in Word for Windows also offers to encrypt the PDF with a password. Leave that off: an encrypted PDF is refused here, because its pages cannot be copied.

Two ways to cut

Every letter has the same number of pages. You give the number, N.

file k = pages (k − 1) × N + 1 to k × N its name = row k of the list letters = pages in the PDF ÷ N must be whole, and equal to the number of names

If the pages do not divide by N, or the count of letters and the count of names differ, the result is red and nothing can be downloaded. Counting cannot see three things.

  • One letter that runs a page long while another runs a page short. The name check usually shows it, because the files after the long letter no longer have their name on their first page.
  • A letter whose last page prints the next person's name, such as a "cc" line. If that page is cut into the next file, the next person's name is on that file's first page, so "found" alone would be wrong. It is reported in amber when the name is then on two pages of the file, which it is if the letter's own first page also prints the name as the list has it. If the letter itself prints the name another way ("CHAN, Bo" for "Bo Chan"), nothing shows it, and the files can be green with the wrong page in them.
  • A list that names fewer people than the PDF holds, for example every second person. If the pages happen to divide, each file holds two people's letters with the listed name on its first page, and nothing in this tool can show that. Compare the number of letters with the number of names yourself.

Letters differ in length. The tool looks for the names themselves, going down your list.

file 1 starts at the first page with name 1 file k starts at the first page with name k that comes after the start of file k − 1 a file ends on the page before the next starts the last file ends with the PDF

This needs each name to be printed on the first page of its letter and not on the page before it, and the list to be in the order of the PDF. A name that is not found after the one before it, or pages that come before the first name, make the result red. A cut can still land in the wrong place in three ways, and the tool can say a different amount about each.

  • A name that is also printed in other people's letters (the person who signs every letter, or a name that is in the list twice) can pull a cut early. Such names are listed as "also in other files", in amber.
  • A name printed on the last page of the letter before it, such as a "cc" line, pulls the cut one page early, and that page goes into the wrong file. The tool cannot tell this from a letter that prints the name on every page, so both are reported the same way, in amber: "also on page 2 of this file". A letter with the name in a running head is therefore always amber. This too depends on the letter's own first page printing the name as the list has it; where it does not, the early cut is not seen.
  • A letter for someone who is missing from your list stays inside the file before it, with nothing in the text to show it. So when the files are not all the same length, the ones that are longer or shorter than most are listed for you to open.

Cut by name, the result is green only when every file has the same number of pages, and each name is on one page of its own file and in no other file. One name gives one file holding the whole PDF, which is amber.

How a name is compared with the page

Both the name from your list and the text of the page are reduced to plain words before they are compared.

words of a text = lower case → compatibility forms unified (Unicode NFKD) → accents U+0300 to U+036F removed → put back together (Unicode NFC) → soft hyphens, zero-width characters removed → cut at every character that is not a letter or a digit "José NÚÑEZ-Smith" → jose nunez smith a name is on a page when its words are there side by side, in the same order

So capitals, extra spaces, accents, punctuation and line breaks make no difference: "O'Brien, Bram" in the list matches "Mr O’Brien, Bram" on the page, and a name that wraps onto a second line is still found. Whole words are compared, so "Ann" is not found in "Anna". Chinese, Japanese, Korean and Thai characters are each treated as a word of their own, because those scripts are written without spaces. Two things that are not treated as the same: "ß" and "ss", and a word hyphenated across a line break and the same word unbroken.

The text of each page is taken from the PDF by Mozilla's pdf.js. Text that is only a picture of text, as in a scan, cannot be read. Text in a font that relies on the predefined character maps, which pdf.js keeps in separate files, may not be readable either: this tool does not load those files, so that it never has to fetch anything after it has opened. Where no text can be read, the tool says that there is no readable text. Cutting every N pages still works then, with the check marked as not possible; cutting by name does not.

A name that is on the page can still be reported as not found, when it is printed in a way this comparison cannot read: spaced out letter by letter, split by a hyphen at the end of a line, written surname first when the list has the first name first, or in a font whose text the tool cannot read.

What the check says for each file

  • Found: the name is on the first page of the file. If it is also on another page of the file, or in another file, the line says so and the tag is amber.
  • Not found: the name is not on the first page. The line says whether it is on a later page of the file, printed in a different file, or nowhere.
  • No text or Not checked: the file has no readable text, or the name has no letters or digits to look for.
  • No pages or No name: the list and the PDF do not fit.

Green means this and no more. The first page of each file shows the name the file is called by, and that name is on no other page of the file and in no other file. That is all that was checked: it does not show that each file holds a whole letter and only that letter.

Amber means the files can be made but something could not be confirmed; you tick a box to say you have checked before the download works, and the tick is withdrawn whenever the PDF, the list or any answer on the page changes. If you name the files by something that is not printed in the letters, such as a reference number, the files are "not found" and the result is amber: nothing on the page can confirm the order then. When a name that is missing from its own file is printed in a different file, the tool says so and names the files. That is evidence, not a finding: it happens when the list is in a different order from the PDF, when the cut is in the wrong place (letters that are not all the same length, cut every N pages), and when the name just happens to be printed in someone else's letter as well. The tool cannot tell which, so it stays amber and you check. When every one of the missing names is printed in a different file, the headline says so. After an amber download the tool says how many files do not show the name they were given.

Red means the list and the PDF cannot be matched: the counts differ, the pages do not divide, a list row is blank, or, cutting by name, a name cannot be placed, pages come before the first name, or the PDF has no readable text. There is no download. The result is also red when pages that go into different files share one picture list (see What a file can carry below).

When you download, each finished file is opened again and compared with the plan: the number of pages, the number of page objects inside the file (which must be the same), the words on each page against the same page of the merged PDF, and the name check, this time worked from the file's own text by a second routine. If any file differs, no zip is made and the tool says which file.

What a file can carry

Each new file holds its own pages, with what is printed on them (text, pictures, page size and rotation), and everything those pages list or point to: fonts, pictures, and whatever those bring with them, whether or not the page shows it. What belongs to the document as a whole is not carried over: bookmarks, attachments, links from one page to another, document properties such as the title, and the accessibility tags and document language that a tagged PDF has.

Things attached to a page rather than printed on it (web links, comments, highlights, text boxes) are copied as they are, with one exception: a link that jumps to another place inside the document. Such a link points at a page of the merged PDF. Copied, it would put a hidden copy of that page into the new file, where no viewer shows it but a PDF tool can read it, or it would lead nowhere. These links are left out, and nothing else is. The words of such a link stay on the page; only the jump is left out. Before you download, the tool says how many will be left out, and how many of them jump to a page outside their own new file, where they could not have worked. If there are none, it says nothing.

Three kinds of PDF are refused as soon as they are chosen, with the reason under the file box.

  • A PDF in which something else on a page points at a page of the document (a comment that records which page it is on is one example). Copying it would hide a copy of that page in the new file, and leaving it out could change what the page shows. The tool does neither, and names the page where this was found.
  • A PDF with fill-in fields. One field can hold the values of every letter, and this tool cannot give each person only their own.
  • A PDF whose list of pages names the same page more than once.

For the first two, what you can try is to make the PDF again without the comments or the fill-in fields, or to print the letters to PDF instead of saving them as PDF. We have not tried either in Word.

One refusal depends on where the PDF is cut, so it comes as a red result once the list and the cut are given: pages that go into different files share one picture list. Every file would then carry every picture in that list. That one case is looked for. Nothing else about pictures is.

So a file can hold more than its pages show: it holds everything its pages list or point to, and whatever those bring with them. In the 15 PDFs made from ordinary Word documents that we looked inside on 2026-10-11, none of them a mail merge, no page listed a picture it did not show. A PDF can be written with pages that do, and a file cut from such a PDF would hold those pictures unseen. Two more things from the same 15 files, which show how such files were built and no more:

  • A font that several pages use is one object in the PDF, so every new file gets the whole font. Where the font carries a list of the characters it is used for, that list is copied whole, so it covers characters used on other people's pages: single characters, not their text.
  • One of the 15 had been printed to PDF from Word on a Mac. Its pages listed fonts that they do not use, and those fonts were copied into the new files too. This tool does not detect that.

File names

The name is the text before, the name from your list and the text after, as typed. Then, following Microsoft's rules for Windows and Apple's for the Mac: the characters < > : " / \ | ? * and control characters become hyphens; dots and spaces at the start and dots and spaces at the end are removed; a name Windows reserves, such as CON or NUL, gets an underscore in front; ".pdf" is added once. By our own choice, the common characters that cannot be seen or that reverse the direction of the text are removed (soft hyphens, zero-width characters, direction marks and overrides). Other blank-looking characters exist and are kept. Names are cut at 100 characters or 180 bytes, whichever comes first (our own limit, to stay well inside the 260 characters Windows allows for a whole path by default). Names that are the same when capitals are ignored are numbered "(2)", "(3)", so no file can overwrite another. A name with nothing usable in it is called by its row in the list. The text before and after can be up to 60 characters each.

How the list is read

  • Pasted: one row per line; tabs separate columns. A cell that is wholly inside double quotes may hold a line break; quotes typed as part of a name are kept.
  • .csv: commas, semicolons or tabs: the one that gives the first five lines the same number of columns, or failing that the one the first line has most of. The tool says which it used. A one-column list of "Lee, Ann" without quotes is therefore read as two columns: look at what the tool says it read. Quoted fields as in RFC 4180. Read as UTF-8 or UTF-16 when the file says so or is valid UTF-8, otherwise as Windows-1252; if the text then holds characters that are not text, the tool says the encoding may be wrong.
  • .xlsx: the first sheet only, and the tool says so if that sheet is hidden. Cells are read as stored, not as displayed: a cell formatted as a date or as money can come out as a plain number. Empty rows past row 5,000 are ignored; a row with something in it there is refused. The tool shows the names it read, so look at them.

A blank row in the middle of the list is an error, not a letter without a name. Blank rows at the end are ignored. You say whether the first row is a heading; the tool does not guess.

Limits, and what has not been tested

Up to 2,000 pages and 50 MB of PDF, and a list of up to 5,000 rows, 50 columns and 5 MB. These are our own limits, set from timing the tool in one browser (Chromium, on a desktop computer) with PDFs made for the purpose: 2,000 pages were read in 2.4 seconds, and a 45 MB PDF of ten letters was read and cut in half a second. Every file gets its own copy of whatever its pages use, such as fonts and a letterhead picture, so the files together are larger than the PDF they came from: in the same test 500 two-page letters sharing one quarter-megabyte picture, 0.7 MB as one PDF, came to 121 MB as separate files. If the files of one download would pass 250 MB together, the tool stops and says so instead of making the zip. This free page downloads jobs of up to 10 letters.

The worked examples below, and the PDFs and spreadsheets the tool is tested on, are made by our own test programs. The cutting has also been run on the 15 Word-made PDFs described above, which are ordinary documents. It has not yet been tried on the PDF of an actual mail merge or on a spreadsheet saved by Excel. If the check reports a name as not found in a file where you can see it, please tell us.

Built with

pdf.js by Mozilla (Apache License 2.0) reads the text, and its build includes core-js (MIT License); pdf-lib by Andrew Dillon (MIT License) copies the pages; fflate by Arjun Barrett (MIT License) makes the zip and opens .xlsx files. All three run inside this tool.

Licence notices for the code built into this tool

pdf-lib 1.17.1

MIT License

Copyright (c) 2019 Andrew Dillon

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

@pdf-lib/standard-fonts (part of pdf-lib)

MIT License

Copyright (c) 2018 Andrew Dillon

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

@pdf-lib/upng (part of pdf-lib)

MIT License

Copyright (c) 2017 Photopea

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

pako (used by pdf-lib)

(The MIT License)

Copyright (C) 2014-2017 by Vitaly Puzrin and Andrei Tuputcyn

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

tslib (used by pdf-lib)

Copyright (c) Microsoft Corporation.

Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.

fflate 0.8.3

MIT License

Copyright (c) 2026 Arjun Barrett

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

pdf.js (pdfjs-dist 6.4.299) Copyright Mozilla Foundation. Licensed under the Apache License, Version 2.0, which follows in full.

Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

core-js (inside the pdf.js legacy build)

MIT License (https://github.com/zloirock/core-js/blob/v3.50.0/LICENSE)

© 2013–2025 Denis Pushkarev (zloirock.ru), 2025–2026 CoreJS Company (core-js.io). All rights reserved.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

What this tool is tested against

This tool cannot be published unless it reproduces every example below. 43 were worked by hand from the cited rule.

ExampleExpectedBasis
The example in this tool: 6 pages, 3 names, cut every 2 pages3 files of 2 pages; each name is on its file’s first page and nowhere else: greenBy hand Worked by hand from the cutting and checking rules in this tool
One page per letter: 3 pages, 3 names, cut every 1 page3 files of 1 page, all found: greenBy hand Worked by hand from the cutting and checking rules in this tool
More names than letters: 4 pages every 2, but 3 namesRed, no download: Cy Diaz has no pagesBy hand Worked by hand from the cutting and checking rules in this tool
Fewer names than letters: 6 pages every 2, but 2 namesRed, no download: pages 5 to 6 have no nameBy hand Worked by hand from the cutting and checking rules in this tool
Pages left over: 5 pages every 2, 3 namesRed, no download: the last file would have 1 page instead of 2By hand Worked by hand from the cutting and checking rules in this tool
One letter a page longer than the rest (2, 3, 2, 2 pages), cut every 2Red: 9 pages do not divide by 2, and the two files after the long letter are reported as not found on their first pageBy hand Worked by hand from the cutting and checking rules in this tool
One letter longer and one shorter (2, 3, 2, 1 pages), so the count still fits, cut every 2Amber: 8 pages and 4 names fit, but 2 of 4 names are not on the first page of their fileBy hand Worked by hand from the cutting and checking rules in this tool
The same letters (2, 3, 2, 1 pages) cut where each name appearsFiles of 2, 3, 2 and 1 pages, all names found. Amber: the lengths differ, so the files that are longer or shorter than most are listed to be openedBy hand Worked by hand from the cutting and checking rules in this tool
Cut where each name appears, every letter 2 pages3 files of 2 pages: green, because the cut by name and an even cut agreeBy hand Worked by hand from the cutting and checking rules in this tool
Cut where each name appears, but the list is in a different order from the PDFRed, no download: Bo Chan is not found after Cy DiazBy hand Worked by hand from the cutting and checking rules in this tool
“Ann” is not “Anna”: pages say Anna then Ann, list says Ann then Anna, cut every 1 pageAmber: neither name is found in its own file, because whole words are compared and “Ann” does not match inside “Anna”. The tool adds that each is printed in the other fileBy hand Worked by hand from the cutting and checking rules in this tool
The same name twice in the list (two letters to Ann Lee)Second file numbered “Ann Lee (2).pdf”. Amber: the check cannot tell the two Ann Lee files apartBy hand Worked by hand from the cutting and checking rules in this tool
Two names that differ only in capitalsTreated as the same name: the second file is numbered so the two cannot overwrite each other. AmberBy hand Worked by hand from the cutting and checking rules in this tool
A sender who signs every letter and is also in the list, cut every 2 pagesAmber: Di Evans is found on her first page, but her name is on page 2 of her file and in 3 other files too, so that proves littleBy hand Worked by hand from the cutting and checking rules in this tool
The same sender, cut where each name appearsThe cut for Di Evans lands on her signature under Bo Chan’s letter (page 4), which is wrong. Amber: her name is flagged as being on two pages of her file and in other files, and the files of 1 and 3 pages are listedBy hand Worked by hand from the cutting and checking rules in this tool
Case, spacing, accents and punctuation differ between the list and the pageAll 3 found: capitals, extra spaces, accents and punctuation are ignored when comparingBy hand Worked by hand from the cutting and checking rules in this tool
A name split across two lines of the pageBoth found: a line break counts as a spaceBy hand Worked by hand from the cutting and checking rules in this tool
A blank row in the middle of the listRed, no download: list row 2 has no name, so pages 3 to 4 would have no fileBy hand Worked by hand from the cutting and checking rules in this tool
A list with a heading row, marked as a headingThe heading is left out: 3 names, 3 files, greenBy hand Worked by hand from the cutting and checking rules in this tool
The same list with the heading row not markedRed, no download: 4 names for 3 letters, and Ann Lee and Bo Chan are each found in the file before their ownBy hand Worked by hand from the cutting and checking rules in this tool
A CSV file with two columns, files named by a reference that is not printed in the lettersFiles C-1001.pdf and C-1002.pdf. Amber: the references are not in the letters, so nothing confirms the orderBy hand Worked by hand from the cutting and checking rules in this tool
A PDF with no readable text (a scan), cut every 2 pagesAmber: 2 files by page count alone; the check is not possibleBy hand Worked by hand from the cutting and checking rules in this tool
The same scan, cut where each name appearsRed, no download: there is no text to find the names inBy hand Worked by hand from the cutting and checking rules in this tool
File names: a slash, quotes, a reserved name, a trailing dot, Chinese, an emoji, with a prefix and a suffixSlash and quotes become hyphens, CON gets an underscore, the trailing dot goes, Chinese and the emoji are keptBy hand Worked by hand from the cutting and checking rules in this tool
The last page of a 3-page letter says “cc: Bo Chan”; Bo Chan’s own letter is 1 page. Cut where each name appearsThe cut lands on the “cc” page, so Ann Lee’s page 3 is in Bo Chan’s file. Amber: Bo Chan is on two pages of his file, and the tool says to check where it startsBy hand Worked by hand from the cutting and checking rules in this tool
The same two letters, cut every 2 pages4 pages and 2 names divide evenly, but the letters are 3 pages and 1. Amber, for the same reasonBy hand Worked by hand from the cutting and checking rules in this tool
Four letters of 3, 2, 2 and 1 pages, each last page naming the next person. Cut where each name appearsThree files start with the last page of the letter before. Amber: 3 names are on two pages of their fileBy hand Worked by hand from the cutting and checking rules in this tool
The same four letters, cut every 2 pagesAmber, for the same reasonBy hand Worked by hand from the cutting and checking rules in this tool
Three 2-page letters; page 2 of the first says “cc: Bo Chan”. Cut where each name appearsAnn Lee’s file has lost its page 2 to Bo Chan’s. Amber: Bo Chan is on two pages of his file, and the files of 3 and 2 pages are listed against the 1-page fileBy hand Worked by hand from the cutting and checking rules in this tool
The same three letters, cut every 2 pagesThe cut is right here. Amber all the same: Bo Chan’s name is also in Ann Lee’s fileBy hand Worked by hand from the cutting and checking rules in this tool
Letters that print the name at the top of every page (a running head), cut every 2 pagesThe cut is right, and it is amber: a name on two pages of its file cannot be told from a file that starts a page earlyBy hand Worked by hand from the cutting and checking rules in this tool
The list in the reverse order of the PDF (4 letters of 2 pages), cut every 2 pagesAmber, no download without the tick: 4 of 4 files do not show their name, and the tool says all 4 names are printed in a different fileBy hand Worked by hand from the cutting and checking rules in this tool
The list moved round by one (the last person first)Amber, no download without the tick: each name is printed in the file before or after its own, and the tool says soBy hand Worked by hand from the cutting and checking rules in this tool
Two neighbours swapped in the listAmber, no download without the tick: Cy Diaz and Bo Chan are each printed in the other’s file, and the tool says soBy hand Worked by hand from the cutting and checking rules in this tool
The list in the right order, letters of 1, 2 and 3 pages, cut every 2 pagesAmber: the cut is wrong, not the list. The tool says 2 names are printed in a different file and that the list, the cut or a stray mention may be the causeBy hand Worked by hand from the cutting and checking rules in this tool
Files named by row number 1 to 5, one page each; the second letter has the address “5 High Street”Amber, and it downloads with the tick: the cut and the order are right, and a stray “5” in another letter does not block the jobBy hand Worked by hand from the cutting and checking rules in this tool
One name, cut where it appears, in a PDF of three lettersOne file holding all 6 pages. Amber: nothing shows whether that is one letterBy hand Worked by hand from the cutting and checking rules in this tool
Three 2-page letters; page 1 has a link that jumps to page 5, and page 3 a link that jumps to page 4Green. Before the download the tool says that 2 links that jump inside the PDF will be left out: 1 to a page of another file, 1 to a page of its own file. Nothing else is left outBy hand Worked by hand from the cutting and checking rules in this tool
The same letters; page 4 has a comment that records which page it is onRefused, no download: copying the comment would hide a copy of a page in the file, and the tool does not remove it. Page 4 is namedBy hand Worked by hand from the cutting and checking rules in this tool
The same letters; page 2 has a fill-in fieldRefused, no download: one field can hold the values of every letter. The tool says what can be tried, and that it has not been tried in WordBy hand Worked by hand from the cutting and checking rules in this tool
The same letters, with all six pages drawing from one shared list of 3 picturesRed, no download: each file would carry all 3 pictures. Pages 1 and 3 are named as the first two that share the listBy hand Worked by hand from the cutting and checking rules in this tool
A job of 10 lettersDownload allowedBy hand Worked by hand from the cutting and checking rules in this tool
A job of 11 lettersPlan and check shown for all 11; no download on this free pageBy hand Worked by hand from the cutting and checking rules in this tool

Sources