PDF metadata salad

Started by mazeckenrode, July 04, 2023, 07:14:40 AM

Previous topic - Next topic

mazeckenrode

User of PDF-XChange Editor and ExifTool to write and edit PDF metadata here, usually followed by QPDF to linearize, and I generally count on my file manager Directory Opus to display that PDF metadata which it's capable of displaying (via tooltip, or DOpus' own metadata viewer or editing panel). I've experienced some of the metadata in certain PDFs which have had it added/edited by me being displayed in a garbled manner by Directory Opus, but it doesn't happen to every PDF I've tweaked metadata in, and doesn't even happen in all the same metadata fields, though Subject/Description, Title, and Author (as displayed by DOpus) are the most commonly affected. I started a topic about the anomaly in DOpus' support forum a little over a month ago.

One of the developers replied two days ago:

QuoteWe worked out what the issue is (some PDF software using an absolutely insane way to double-encode text-as-text) and have it on the list to see if we can support what they're doing.

In one of my own posts at the linked topic, I spell out the workflow that resulted in the metadata displayed as garbled by DOpus, and ExifTool was the last tool I used to affect the metadata before the DOpus display became a problem. But all of the metadata looks as it should when viewed in PDF-XChange Editor, or as exported to JSON by ExifTool. Since the display by DOpus was the only problem, I initially figured it was that program's fault, which is why I brought it up in their forum. But given the developer's latest comment, I'm wondering if ExifTool is doing something strange? I was hoping you guys could take a look. I believe I've posted all the information necessary to understand the problem in the DOpus forum topic thread, and there's a downloadable 7-zip archive containing an example PDF there as well, but if you'd prefer that I duplicate that information and archive here, please let me know.

Linked 7-zip: "2023-05-31 10;00;00 - Test.7z" (3,094)

Contents:

"2023-05-31 10;00;00 - Test\"
"2023-05-31 10;00;00 - Test.pdf" (10,706)
"2023-05-31 10;00;00 - Test.pdf.json" (3,175)


Phil Harvey

I'll look at this as soon as I can, but it would help if you could provide 3 things:

1. A PDF file that is OK in DOpus before you run an ExifTool command.

2. The exact ExifTool command that you used.

3. The resulting file that gives problems in DOpus.

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

mazeckenrode

Quote from: Phil Harvey on July 04, 2023, 12:21:50 PMI'll look at this as soon as I can, but it would help if you could provide 3 things:

Thanks, Phil. See attached 7-zip for files representing nearly every step of the way. My workflow to create them:

1. Made a copy, with custom name, of an existing invoice already populated with (partially garbled in DOpus) metadata.

2. Loaded into PDF-XChange Editor.

3. Inserted 1 blank page; deleted original page.

4. Replaced existing metadata with new dummy metadata via PDF-XChange Editor and saved as new name.

5. Used QPDF to linearize.

6. Imported PDF creation and modification dates from filename via DOpus and ExifTool -progress -echo "Writing PDF/XMP Create & Modify dates from filename(s)..." -m "-PDF:CreateDate<filename" "-PDF:ModifyDate<filename" "-XMP-pdf:CreationDate<filename" "-XMP-pdf:ModDate<filename" "-XMP:CreateDate<filename" "-XMP:ModifyDate<filename" {filepath$}, with {filepath$} representing the file I have selected in DOpus.

7. Used ExifTool to export all current metadata to JSON file via DOpus and ExifTool -progress -echo "Creating JSON file(s)..." -w %%f.%%e.json -json -struct -G -PDF:All -XMP:All {filepath$}.

8. Because PDF-XChange Editor appears to write metadata field PDF:Keywords incorrectly — ExifTool-exported JSON showing ;"," between keywords instead of "," — loaded the JSON into a text editor and replaced ;"," with ",".

9. Re-imported edited JSON data via DOpus and ExifTool -config MAZE_PDF+XMP_Custom.config -m "-json={filepath$}.json" "{filepath$}". NOTE that it was at this point that the PDF's metadata first started being displayed incorrectly by DOpus, but I use essentially this same workflow on practically ALL PDFs I add or modify metadata in, and they don't all have the garbled display problem in DOpus.

10. Used QPDF to linearize.

Of the files in the 7-zip, [1] and [2] do not display any fields as garbled in DOpus, while for both [3] and [4], SUBJECT is garbled.

Attached: "2023-07-04 16;41;45 - PDF Metadata Test.7z" (8,845)

"2023-07-04 16;41;45 - PDF Metadata Test\"
  "2023-07-04 13;44;01 - Metadata Test - [1] PDF-Xchange+QPDF.pdf" (7,562)
  "2023-07-04 13;44;01 - Metadata Test - [2] PDF-Xchange+QPDF+ExifToolDates.pdf" (14,942)
  "2023-07-04 13;44;01 - Metadata Test - [3] PDF-Xchange+QPDF+ExifToolImport.pdf" (16,320)
  "2023-07-04 13;44;01 - Metadata Test - [4] PDF-Xchange+QPDF+ExifToolImport+QPDF.pdf" (9,585)
  "2023-07-04 13;44;01 - Metadata Test - [4] PDF-Xchange+QPDF+ExifToolImport+QPDF.pdf.json" (3,248)

StarGeek

Quote from: mazeckenrode on July 04, 2023, 05:47:00 PMAttached: "2023-07-04 16;41;45 - PDF Metadata Test.7z" (8,845)

I don't see the attached file.
* Did you read FAQ #3 and use the command listed there?
* Please use the Code button for exiftool code/output.
 
* Please include your OS, Exiftool version, and type of file you're processing (MP4, JPG, etc).

mazeckenrode

Quote from: StarGeek on July 04, 2023, 06:50:51 PMI don't see the attached file.

Yikes, got me again.

Attached (for real this time): "2023-07-04 16;41;45 - PDF Metadata Test.7z" (8,845)

"2023-07-04 16;41;45 - PDF Metadata Test\"
  "2023-07-04 13;44;01 - Metadata Test - [1] PDF-Xchange+QPDF.pdf" (7,562)
  "2023-07-04 13;44;01 - Metadata Test - [2] PDF-Xchange+QPDF+ExifToolDates.pdf" (14,942)
  "2023-07-04 13;44;01 - Metadata Test - [3] PDF-Xchange+QPDF+ExifToolImport.pdf" (16,320)
  "2023-07-04 13;44;01 - Metadata Test - [4] PDF-Xchange+QPDF+ExifToolImport+QPDF.pdf" (9,585)
  "2023-07-04 13;44;01 - Metadata Test - [4] PDF-Xchange+QPDF+ExifToolImport+QPDF.pdf.json" (3,248)

2023-07-04 16;41;45 - PDF Metadata Test.7z

Phil Harvey

Looking at the way Keywords are stored in these files:

> exiftool 2023-07-04\ 1*.pdf -v3 | grep -E 'Keyw|==='
======== 2023-07-04 13;44;01 - Metadata Test - [1] PDF-Xchange+QPDF.pdf
  | 2)  Keywords = (Winston; Niles; Rumfoord; Treasurer; ABCDEFGHIJ; Township; Municipa[snip]
  |     - Tag 'Keywords', direct object
  | | | Keywords = Winston; Niles; Rumfoord; Treasurer; ABCDEFGHIJ; Township; Municipal[snip]
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/pdf:Keywords'
======== 2023-07-04 13;44;01 - Metadata Test - [2] PDF-Xchange+QPDF+ExifToolDates.pdf
  | 2)  Keywords = (Winston; Niles; Rumfoord; Treasurer; ABCDEFGHIJ; Township; Municipa[snip]
  |     - Tag 'Keywords', direct object
  | | | Keywords = Winston; Niles; Rumfoord; Treasurer; ABCDEFGHIJ; Township; Municipal[snip]
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/pdf:Keywords'
======== 2023-07-04 13;44;01 - Metadata Test - [3] PDF-Xchange+QPDF+ExifToolImport.pdf
  | 2)  Keywords = (Winston, Niles, Rumfoord, Treasurer, ABCDEFGHIJ, Township, Municipa[snip]
  |     - Tag 'Keywords', direct object
  | | | Keywords = Winston; Niles; Rumfoord; Treasurer; ABCDEFGHIJ; Township; Municipal[snip]
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/pdf:Keywords'
======== 2023-07-04 13;44;01 - Metadata Test - [4] PDF-Xchange+QPDF+ExifToolImport+QPDF.pdf
  | 3)  Keywords = (Winston, Niles, Rumfoord, Treasurer, ABCDEFGHIJ, Township, Municipa[snip]
  |     - Tag 'Keywords', direct object
  | | | Keywords = Winston; Niles; Rumfoord; Treasurer; ABCDEFGHIJ; Township; Municipal[snip]
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/pdf:Keywords'

In each file, both PDF:Keywords and XMP-pdf:Keywords are stored.  In the output above, PDF:Keywords comes first and the -v output shows the raw values of these tags.  DOpus seems to prefer semicolons for separators, but ExifTool uses commas by default.

You can use the following command to restore the semicolon-separated PDF:Keywords from the XMP-pdf:Keywords value:

exiftool "-pdf:keywords<xmp-pdf:keywords" -api NoPDFList FILE

After doing this, DOPus shouldn't (hopefully) have any problems.

Unforuntately, for DOPus compatibility you will have to use the API NoPDFList option and separate entries manually with semicolons if you want to modify PDF:Keywords.

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

mazeckenrode

Quote from: Phil Harvey on July 10, 2023, 08:00:37 PMDOpus seems to prefer semicolons for separators, but ExifTool uses commas by default.

Thanks for this, Phil, but I'm confused, and fear now that my wording has led to confusion on your part. For all of the PDFs in my uploaded .7z file, there are no issues for me with how Keywords are displayed by DOpus — I only mentioned them in my workflow steps because of how they always appear (;",") in the ExifTool-exported JSON after having been written by PDF-XChange Editor. I typically enter them in PDF-XChange Editor with ; (a semicolon followed by a space) between values, and the program's interface actually says that commas can also be used, but no matter how I've tried it, the subsequent JSON I export never shows the values separated by ",", which is how I expect to see them based on my experience with Keywords and other list-format tags in image files.

Please confirm: Does the JSON display of ;"," between values not indicate that they were written incorrectly by PDF-XChange Editor, and should my replacing ;"," with "," in said JSON prior to re-importing not be considered a suitable fix for that?

In any case, it isn't the Keywords whose display is being garbled by DOpus — it's the tag that DOpus calls Subject, which corresponds to a entry field with that same label in PDF-XChange Editor, but exists as both PDF:Subject and XMP:Description in the exported JSON. In PDF-XChange Editor and the ExifTool JSON, that value is correctly displayed as such:

ABCDEFGHIJ Township Astronomy Fund invoice 13579, Account SWR-24680 (123456 Main St, Tralfamadore City, Tralfamadore), 4 Jul 2023, 13:44:01, $1,234,567.89, due 31 Jul 2023; Emailed by Winston Niles Rumfoord, Treasurer, ABCDEFGHIJ Township Municipality, 4 Jul 2023, 16:15:06; File as attached: "Inv_13579_from_ABCDEFGHIJ_Township_Astronomy_Fund_6543.pdf" (1,584,159) [15 p, 1802 w, 9897/8808 ch, 465 l]

But for the second two PDFs ([3] and [4]) from my 7-zip, in DOpus, it is displayed as this:

eff004100420043004400450046004700480049004a00200054006f0077006e007300680069007000200041007300740072006f006e006f006d0079002000460075006e006400200069006e0076006f006900630065002000310033003500370039002c0020004100630063006f0075006e00740020005300570052002d00320034003600380030002000280031003200330034003500360020004d00610069006e002000530074002c0020005400720061006c00660061006d00610064006f0072006500200043006900740079002c0020005400720061006c00660061006d00610064006f007200650029002c002000340020004a0075006c00200032003000320033002c002000310033003a00340034003a00300031002c002000240031002c003200330034002c003500360037002e00380039002c00200064007500650020003300310020004a0075006c00200032003000320033003b00200045006d00610069006c00650064002000620079002000570069006e00730074006f006e0020004e0069006c00650073002000520075006d0066006f006f00720064002c0020005400720065006100730075007200650072002c0020004100420043004400450046004700480049004a00200054006f0077006e00730068006900700020004d0075006e00690063006900700061006c006900740079002c002000340020004a0075006c00200032003000320033002c002000310036003a00310035003a00300036003b002000460069006c0065002000610073002000610074007400610063006800650064003a0020201c0049006e0076005f00310033003500370039005f00660072006f006d005f004100420043004400450046004700480049004a005f0054006f0077006e0073006800690070005f0041007300740072006f006e006f006d0079005f00460075006e0064005f0036003500340033002e007000640066201d002000280031002c003500380034002c00310035003900290020005b0031003500200070002c0020003100380030003200200077002c00200039003800390037002f0038003800300038002000630068002c00200034003600350020006c005d

Phil Harvey

DOpus is probably having trouble with Subject because it is stored as a hex string:

  | 6)  Subject = <feff004100420043004400450046004700480049004a00200054006f0077006e0073[snip]
But this is a perfectly valid storage format.  DOpus should support this.

ExifTool isn't properly handling semicolon-separated keywords.  From the Adobe documentation was able to find, the keywords should be either space or comma separated.  But Googling around it seems that semicolons are also used.  I will patch ExifTool 12.65 to also support semicolon-separated lists.

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

mazeckenrode

Quote from: Phil Harvey on July 26, 2023, 08:09:30 AMDOpus is probably having trouble with Subject because it is stored as a hex string:

That actually begs more questions for me. Since ExifTool performed the last metadata modification before the display of Subject became garbled in DOpus, but it doesn't happen to every PDF I subject to the same workflow, is ExifTool sometimes storing Subject as a hex string and sometimes not? What are the determining factors? Sometimes other fields also get garbled in DOpus. Why the inconsistency? If you have any additional answers and haven't gotten tired of what is for me still a riddle, I'd love to hear.

QuoteBut this is a perfectly valid storage format.  DOpus should support this.

I'll let them know.

Phil Harvey

ExifTool only encodes in hex if the string contains non-ASCII characters.

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

mazeckenrode

Quote from: Phil Harvey on July 27, 2023, 02:54:53 PMExifTool only encodes in hex if the string contains non-ASCII characters.

I assume 'non-ASCII' in this case is meant to refer to any character with a codepoint above 127 (does not include the extended ASCII characters), and I admit to routinely using the characters "" '' – — © ® é in various capacities. But based on experimentation I've done since you posted yesterday, I'm seeing here that sometimes my use of any of those characters in PDF metadata results in garbled DOpus display, and sometimes it doesn't, so I remain confused as to what the determining factors are. I've managed to produce an example PDF with all of those characters being used in a handful of metadata fields that remain ungarbled when viewed in DOpus. If you're game to solve the mystery — unless you already know the answer? — should I upload it?

Phil Harvey

Looking at the ExifTool source code, I was wrong about my non-ASCII assumption.  Strings are written as hex if they contain any control character: \x00-\x08, \x0a-\x1f, \x7f or \xff.

Use the -v3 option to see how the values are stored in the file.  I'm away for the weekend so I'm hoping you'll be able to solve this mystery yourself.

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

mazeckenrode

Quote from: Phil Harvey on July 28, 2023, 03:42:18 PMStrings are written as hex if they contain any control character: \x00-\x08, \x0a-\x1f, \x7f or \xff.

I don't understand how any control characters could have been introduced into my metadata except by ExifTool, since the last step taken before the DOpus-garbled display was re-importing from the edited JSON file, and I never (consciously, at least) enter any control characters while editing the JSON. But, I loaded the JSON exported from my final PDF ("2023-07-04 13;44;01 - Metadata Test - [4] PDF-Xchange+QPDF+ExifToolImport+QPDF.pdf", in the 7-zip uploaded previously) into Notepad++ and did a regex search for [\x00-\x08\x0a-\x1f\x7f\xff]. All it matched were \x0A and \x0D in the actual newline sequences in the JSON file.

QuoteUse the -v3 option to see how the values are stored in the file. I'm away for the weekend so I'm hoping you'll be able to solve this mystery yourself.

I made a stab at it, anyway, but I think I only know enough to be dangerous. I ran this command:

exiftool -v3 -w txt -All "2023-07-04 13;44;01 - Metadata Test - [4] PDF-Xchange+QPDF+ExifToolImport+QPDF.pdf"

If there's anything useful in the output I saw, it was beyond my perception, or at least beyond my ability to recognize it.

Hope you had a good weekend, though.

Phil Harvey

Can you post the output of this command for a file with a garbled Subject in DOpus?

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

mazeckenrode

Certainly...

  ExifToolVersion = 12.55
  FileName = 2023-07-04 13;44;01 - Metadata Test - [4] PDF-Xchange+QPDF+ExifToolImport+[snip]
  Directory = .
  FileSize = 9585
  FileModifyDate = 1688503044.4971
  FileAccessDate = 1688503044.46309
  FileCreateDate = 1688503044.46309
  FilePermissions = 33206
  FileType = PDF
  FileTypeExtension = PDF
  MIMEType = application/pdf
  PDFVersion = 1.4
  Linearized = true
PDF dictionary (1 of 2) with 5 entries:
  0)  Info (SubDirectory) -->
      - Tag 'Info', indirect object (2 0 R)
  + [Info directory with 8 entries]
  | 0)  Author = (ABCDEFGHIJ Township Municipality)
  |     - Tag 'Author', direct object
  | 1)  CreateDate = (D:20230704134401)
  |     - Tag 'CreationDate', direct object
  | 2)  Creator = (Tralfamadore Digital Documents)
  |     - Tag 'Creator', direct object
  | 3)  Keywords = (Winston, Niles, Rumfoord, Treasurer, ABCDEFGHIJ, Township, Municipa[snip]
  |     - Tag 'Keywords', direct object
  | 4)  ModifyDate = (D:20230704134401)
  |     - Tag 'ModDate', direct object
  | 5)  Producer = (Tralfamadore Digital Documents)
  |     - Tag 'Producer', direct object
  | 6)  Subject = <feff004100420043004400450046004700480049004a00200054006f0077006e0073[snip]
  |     - Tag 'Subject', direct object
  | 7)  Title = (ABCDEFGHIJ Township Astronomy Fund invoice 13579, Account SWR-24680 \([snip]
  |     - Tag 'Title', direct object
  1)  Root (SubDirectory) -->
      - Tag 'Root', indirect object (5 0 R)
  + [Root directory with 4 entries]
  | 0)  AcroForm (SubDirectory) -->
  |     - Tag 'AcroForm', indirect object (6 0 R)
  | + [AcroForm directory with 2 entries]
  | | Object was freed:
  | | 0)  DR = <free>
  | |     - Tag 'DR', indirect object (7 0 R)
  | | 1)  Fields = []
  | |     - Tag 'Fields', direct array of 0 objects
  | 1)  Metadata (SubDirectory) -->
  |     - Tag 'Metadata', indirect object (3 0 R)
  | + [Metadata directory with 3 entries]
  | | 0)  Subtype = /XML
  | |     - Tag 'Subtype', direct object
  | | 1)  Type = /Metadata
  | |     - Tag 'Type', direct object
  | | 2)  Length = 6116
  | |     - Tag 'Length', direct object
  | | Metadata stream data
  | |     0000: 3c 3f 78 70 61 63 6b 65 74 20 62 65 67 69 6e 3d [<?xpacket begin=]
  | |     0010: 27 ef bb bf 27 20 69 64 3d 27 57 35 4d 30 4d 70 ['...' id='W5M0Mp]
  | |     0020: 43 65 68 69 48 7a 72 65 53 7a 4e 54 63 7a 6b 63 [CehiHzreSzNTczkc]
  | |     0030: 39 64 27 3f 3e 0a 3c 78 3a 78 6d 70 6d 65 74 61 [9d'?>.<x:xmpmeta]
  | |     0040: 20 78 6d 6c 6e 73 3a 78 3d 27 61 64 6f 62 65 3a [ xmlns:x='adobe:]
  | |     [snip 6036 bytes]
  | | + [XMP directory, 6116 bytes]
  | | | XMPToolkit = Image::ExifTool 12.55
  | | | Creator = ABCDEFGHIJ Township Municipality
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/dc:creator/rdf:Seq/rdf:li 10'
  | | | Description = ABCDEFGHIJ Township Astronomy Fund invoice 13579, Account SWR-246[snip]
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/dc:description/rdf:Alt/rdf:li 10'
  | | | Format = application/pdf
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/dc:format'
  | | | Rights = .. 2023 The RAMJAC Corporation
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/dc:rights/rdf:Alt/rdf:li 10'
  | | | Subject = Winston
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/dc:subject/rdf:Bag/rdf:li 10'
  | | | Subject = Niles
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/dc:subject/rdf:Bag/rdf:li 11'
  | | | Subject = Rumfoord
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/dc:subject/rdf:Bag/rdf:li 12'
  | | | Subject = Treasurer
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/dc:subject/rdf:Bag/rdf:li 13'
  | | | Subject = ABCDEFGHIJ
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/dc:subject/rdf:Bag/rdf:li 14'
  | | | Subject = Township
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/dc:subject/rdf:Bag/rdf:li 15'
  | | | Subject = Municipality
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/dc:subject/rdf:Bag/rdf:li 16'
  | | | Subject = 2023-07-04
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/dc:subject/rdf:Bag/rdf:li 17'
  | | | Subject = 2023
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/dc:subject/rdf:Bag/rdf:li 18'
  | | | Subject = July
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/dc:subject/rdf:Bag/rdf:li 19'
  | | | Subject = Astronomy
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/dc:subject/rdf:Bag/rdf:li 210'
  | | | Subject = Fund
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/dc:subject/rdf:Bag/rdf:li 211'
  | | | Subject = Invoice
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/dc:subject/rdf:Bag/rdf:li 212'
  | | | Subject = Invoice_13579
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/dc:subject/rdf:Bag/rdf:li 213'
  | | | Subject = Account_SWR-24680
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/dc:subject/rdf:Bag/rdf:li 214'
  | | | Subject = 123456_Main_St
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/dc:subject/rdf:Bag/rdf:li 215'
  | | | Subject = Tralfamadore City
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/dc:subject/rdf:Bag/rdf:li 216'
  | | | Subject = Tralfamadore
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/dc:subject/rdf:Bag/rdf:li 217'
  | | | Subject = $1
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/dc:subject/rdf:Bag/rdf:li 218'
  | | | Subject = 234
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/dc:subject/rdf:Bag/rdf:li 219'
  | | | Subject = 567.89
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/dc:subject/rdf:Bag/rdf:li 220'
  | | | Subject = Due_2023-07-31
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/dc:subject/rdf:Bag/rdf:li 221'
  | | | Title = ABCDEFGHIJ Township Astronomy Fund invoice 13579, Account SWR-24680 (12[snip]
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/dc:title/rdf:Alt/rdf:li 10'
  | | | CreationDate = 2023-07-04T13:44:01
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/pdf:CreationDate'
  | | | Keywords = Winston; Niles; Rumfoord; Treasurer; ABCDEFGHIJ; Township; Municipal[snip]
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/pdf:Keywords'
  | | | ModDate = 2023-07-04T13:44:01
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/pdf:ModDate'
  | | | Producer = Tralfamadore Digital Documents
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/pdf:Producer'
  | | | CaptionWriter = Malachi Constant and the Army of Mars
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/photoshop:CaptionWriter'
  | | | [adding XMP-xmp:CaptionWriter]
  | | | CaptionWriter = Malachi Constant and the Army of Mars
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/xmp:CaptionWriter'
  | | | CreateDate = 2023-07-04T13:44:01
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/xmp:CreateDate'
  | | | CreatorTool = Tralfamadore Digital Documents
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/xmp:CreatorTool'
  | | | MetadataDate = 2023-07-04T16:33:48
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/xmp:MetadataDate'
  | | | ModifyDate = 2023-07-04T13:44:01
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/xmp:ModifyDate'
  | | | DocumentID = uuid:dd2264f9-3040-4e7f-9c2c-6786e876bd73
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/xmpMM:DocumentID'
  | | | InstanceID = uuid:f4cd0aea-8115-4bb6-8183-1d06f4c2fe72
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/xmpMM:InstanceID'
  | | | Marked = True
  | | | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/xmpRights:Marked'
  | 2)  Pages (SubDirectory) -->
  |     - Tag 'Pages', indirect object (1 0 R)
  | + [Pages directory with 3 entries]
  | | 0)  PageCount = 1
  | |     - Tag 'Count', direct object
  | | 1)  Kids (SubDirectory) -->
  | |     - Tag 'Kids', direct array of 1 objects
  | | + [Kids directory with 4 entries]
  | | | 0)  MediaBox = [0,0,612,792]
  | | |     - Tag 'MediaBox', direct array of 4 objects
  | | | 1)  Parent = ref(1 0 R)
  | | |     - Tag 'Parent', indirect object (1 0 R)
  | | | 2)  Resources (SubDirectory) -->
  | | |     - Tag 'Resources', direct object
  | | | 3)  Type = /Page
  | | |     - Tag 'Type', direct object
  | | 2)  Type = /Pages
  | |     - Tag 'Type', direct object
  | 3)  Type = /Catalog
  |     - Tag 'Type', direct object
  2)  Size = 10
      - Tag 'Size', direct object
  3)  Prev = 9379
      - Tag 'Prev', direct object
  4)  ID = [<e2afbaf545b7ee418abfe861c4e2d427>,<6af127e5e5cff80a069937478d1e4711>]
      - Tag 'ID', direct array of 2 objects
PDF dictionary (2 of 2) with 2 entries:
  0)  Size = 4
      - Tag 'Size', direct object
  1)  ID = [<e2afbaf545b7ee418abfe861c4e2d427>,<6af127e5e5cff80a069937478d1e4711>]
      - Tag 'ID', direct array of 2 objects
ExifTool Version Number         : 12.55
File Name                       : 2023-07-04 13;44;01 - Metadata Test - [4] PDF-Xchange+QPDF+ExifToolImport+QPDF.pdf
Directory                       : .
File Size                       : 9.6 kB
File Modification Date/Time     : 2023:07:04 16:37:24-04:00
File Access Date/Time           : 2023:07:04 16:37:24-04:00
File Creation Date/Time         : 2023:07:04 16:37:24-04:00
File Permissions                : -rw-rw-rw-
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.4
Linearized                      : Yes
Author                          : ABCDEFGHIJ Township Municipality
Create Date                     : 2023:07:04 13:44:01
Keywords                        : Winston, Niles, Rumfoord, Treasurer, ABCDEFGHIJ, Township, Municipality, 2023-07-04, 2023, July, Astronomy, Fund, Invoice, Invoice_13579, Account_SWR-24680, 123456_Main_St, Tralfamadore, City, Tralfamadore, $1, 234, 567.89, Due_2023-07-31
Modify Date                     : 2023:07:04 13:44:01
XMP Toolkit                     : Image::ExifTool 12.55
Creator                         : ABCDEFGHIJ Township Municipality
Description                     : ABCDEFGHIJ Township Astronomy Fund invoice 13579, Account SWR-24680 (123456 Main St, Tralfamadore City, Tralfamadore), 4 Jul 2023, 13:44:01, $1,234,567.89, due 31 Jul 2023; Emailed by Winston Niles Rumfoord, Treasurer, ABCDEFGHIJ Township Municipality, 4 Jul 2023, 16:15:06; File as attached: "Inv_13579_from_ABCDEFGHIJ_Township_Astronomy_Fund_6543.pdf" (1,584,159) [15 p, 1802 w, 9897/8808 ch, 465 l]
Format                          : application/pdf
Rights                          : © 2023 The RAMJAC Corporation
Subject                         : Winston, Niles, Rumfoord, Treasurer, ABCDEFGHIJ, Township, Municipality, 2023-07-04, 2023, July, Astronomy, Fund, Invoice, Invoice_13579, Account_SWR-24680, 123456_Main_St, Tralfamadore City, Tralfamadore, $1, 234, 567.89, Due_2023-07-31
Title                           : ABCDEFGHIJ Township Astronomy Fund invoice 13579, Account SWR-24680 (123456 Main St, Tralfamadore City, Tralfamadore), 4 Jul 2023, 13:44:01, $1,234,567.89, due 31 Jul 2023
Creation Date                   : 2023:07:04 13:44:01
Mod Date                        : 2023:07:04 13:44:01
Producer                        : Tralfamadore Digital Documents
Caption Writer                  : Malachi Constant and the Army of Mars
Creator Tool                    : Tralfamadore Digital Documents
Metadata Date                   : 2023:07:04 16:33:48
Document ID                     : uuid:dd2264f9-3040-4e7f-9c2c-6786e876bd73
Instance ID                     : uuid:f4cd0aea-8115-4bb6-8183-1d06f4c2fe72
Marked                          : True
Page Count                      : 1