Simple: obtain a good sampling of output from every single EDA tool in existence. Examine the design of the output:
- If headers are set, then you probably have the information for free, in plain text. Example: the Allegro document above.
- If that is unavailable, then examining the output visually may be helpful. Most tools have distinctive defaults, and most users / organizations don't stray far from the defaults. Examples: Altium
https://www.seventransistorlabs.com/Images/AltiumBufferModel.png (the components are mostly from user libraries, but the shapes of primitives like supply/ground symbols, and the behavior of wires and pins, cannot be changed), Eagle's ugly defaults, OrCAD's relatively small text and odd positioning of it, etc.
Some aspects may be obvious in vector (PDF) format, especially when zoomed in; others may be artifacts of screenshots (like the above picture). There's an outside chance that you'll see a PDF with an embedded raster image, instead of direct vector format, which can be studied similarly.
- Even if the visual styles are inconclusive, it's very likely the graphical primitives used are distinctive of the output generator that created them. You would need a PDF decompiler / extractor / dumping tool, and probably, a good knowledge of how PDF itself works. Some generators will use polylines to draw wires; others, individual line segments. The line sizes may be magic numbers (Altium only supports four preset line widths, for example). The segments might be written or draw in raster order, in order of creation, in drawing order, etc. Components might be drawn as exploded primitives, or linked shapes. Area fills might be made from flood fills, filled polygons, triangles, line segments, etc. (Line fill is probably not used with SCH PDF, but some PCB tools use lines to fill polygons, and so the PCB PDF output has lines as well. PADS does this.)
This identification process will also apply to any other modestly complex output: Gerbers and ODB++, for example.
So, hey, you didn't say how in-depth you wanted to go!
Probably, if you wanted to go
this deep, you would've done so already: it's not an easy analysis to perform, but it's an obvious enough route, to someone who truly wants to know the ultimate depths of these things.
Now, if you were simply curious about what created a file, and nothing else, and you absolutely don't want any of this extraneous information... sorry, you can't get to there from here, without going through that!
Tim