
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
Parse PDF and group elements based on enclosing lines. A node.js module that promisifies the pdf2json parser and structures the data in a way that is suitable for tables with merged cells.
After installing node.js you can use npm to add pdf2tree in your project folder.
npm install pdf2tree
When you create a new parser object as shown below, parameters are passed to the pdf2json parser.
import PDF2Tree from 'pdf2tree'
let pdf2tree = new PDF2Tree()
Then you can set the following pdf2tree specific parameters.
pdf2tree.maxStrokeWidth = 1
pdf2tree.maxGapWidth = 0.1
Finally, parsing can start either with a filepath or a buffer.
pdf2tree.loadPDF(PDFpath)
pdf2tree.parseBuffer(PDFbuffer)
The promise returns a JSON object as documented in pdf2json, but adds an additional Tree property. To simplify readability <str> represents an object like the ones pdf2json provides for every Page but each object only contains all elements within the lines, i.e. { ..., Texts: [ { x, y, ..., R: [ { T: 'str', ... } ] } ], ... }.
{
...
Tree: [
[
<Page 1>,
[
[ <A>, <B>, <C>, <D> ],
[ <X>, <1>, <2>, <3> ],
[
<Y>,
[
[ <5>, <6>, <7> ],
[ <8>, <9> ],
]
]
]
],
[
<Page 2>,
[
[ <TITLE> ],
[
<Z>,
[
[
<F>,
<G>,
[
[ <H> ],
[ <I> ],
],
],
[ <J>],
[ <K>]
],
<?>
]
]
]
]
}
For content structured like this:
Page 1
+---+---+---+---+
| A | B | C | D |
+---+---+---+---+
| X | 1 | 2 | 3 |
+---+---+---+---+
| | 5 | 6 | 7 |
| Y +---+---+---+
| | 8 | 9 |
+---+---+-------+
Page 2
+---+---+---+---+
| TITLE |
+---+---+---+---+
| | | | H |
| | F | G +---+
| | | | I |
| Z +---+---+---+
| | J | |
| +---+ ? |
| | K | |
+---+---+-------+
If a cell is not rectangular or merges rows that the cell to the left did not also merge are not supported. This would require a data structure that allows traversing the neighborhood with .right or .below and can include loops for non-rectangular areas. It should be easier to fix those special cases after the parsing.
FAQs
Parse PDF and group elements based on enclosing lines.
We found that pdf2tree demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.