Skip to content

v0.62.0

Latest

Choose a tag to compare

@github-actions github-actions released this 13 Oct 12:12

Added

  • A PDF whose cross-reference table is damaged opens, and says it was repaired. A file cut short or saved with
    offsets that point where its objects are not used to fail with PdfParse; the parser now rebuilds the table from the
    objects in the file. The reader reports it as Hints["xref_reconstructed"] = true (DocumentProps on ReadAsync)
    with a warning, plus declared_page_count when the document declares one. The status is not lowered for the rebuild
    alone — pages_incomplete still says whether pages are known to be missing.

Changed

  • PDF: the parser moves from Unpdf 0.41.0 to 0.43.0, and extracted text changes for PDFs with ruled tables, merged
    cells or rotated text.
    Measured on 24 PDFs (papers, datasheets, manuals, Korean forms and proposals): 13 change, none
    fails. What changes:
    • A ruled table whose sides are not drawn keeps its first and last columns. Before, their header cells were appended to
      the text above and their data cells became a second table or loose text.
    • Merged cells are read as one cell (구 분, not 구 | 분), and every Markdown row is as wide as the table: the
      merged text sits in the first position it covers, the others are empty. PDF tables in RawContent.Tables now carry
      TableData.MergedCells.
    • A table ruled only above, under its header and below has one row per record, where all values of a column used to
      share one cell.
    • Text turned on the page (axis labels, turned column heads, a stamp up the margin) is a line of its own, no longer
      mixed into the text beside it or taken for a heading. Two columns under a short running head are read one after the
      other. A word gap drawn with character spacing is a space (abilityand → ability and).
    • Known regressions, reported to the parser: in datasheet register maps the end labels bit 7 … bit 0 become one
      cell, and row labels of a rotated table can merge (AF11 AF12 AF13 AF14 AF15), moving values between rows; a value
      spanning Min/Typ/Max columns is written under Min in Markdown (the structured TableData keeps the span); in one
      document a wrapped cell of a table without body rules was split into one row per line.

Fixed

  • A paragraph that contains pipes is no longer merged into the table after it. A body paragraph such as
    … 과 |파이프|, followed by a table, became that table's header row: the blank line between them was dropped and a
    delimiter row was put after the paragraph, which pushed the real header down as a data row. The rule that re-attaches a
    header row a parser separated from its body now applies only to a row that starts with a pipe, and only before a body
    without a delimiter row of its own.
  • Characters in Word and PowerPoint body text that Markdown reads as syntax are escaped again: a*b*c →
    a\*b\*c, backticks, [ ] and backslashes. Since 0.59.3 they reached the refined Markdown unescaped, so a
    renderer showed emphasis, code spans and links that the document does not have, and dropped a backslash of a path. The
    readers had asked the parsers for no escaping, and the parsers' current releases honour that. HWP/HWPX and the Excel
    fallback (a workbook without sheet structure) take the same reader option now. Extracted text changes wherever body
    text holds such characters.
    • Not yet: a body paragraph that starts with #, 1., * or > is still written as is, and so renders as a
      heading, a list item or a quote. Reported to the parser.