Aspose.pdf解析pdf时,存在串位情况

aspose.pdf解析pdf时,存在串位情况,我们目前想调用此服务解析pdf后,存到结构化数据库中,然后在demo测试时发现此问题,请问如何解决?
1/ 第二页 串行

6a14248aa97aff2b37f2d8ba706a46b0.jpg (102.3 KB)
2、 字段串行
image.jpg (78.1 KB)

@feng.qun.zhu.avaryholding.com

概要
在使用 Aspose.PDF 将 PDF 解析后写入结构化库时,出现文字或字段位置错位(“串位”)的现象,通常是因为 PDF 中使用的字体在解析环境中不可用,Aspose.PDF 会回退到默认字体,从而导致坐标和字符宽度变化。

可能原因

  1. PDF 使用的字体未嵌入,解析机器上缺少对应字体。
  2. Aspose.PDF 在进行 PDF→HTML(或其他文本抽取)时未显式指定备用字体,导致回退。

解决思路

  1. 检查 PDF 是否嵌入字体
  • 用 Adobe Acrobat、Foxit 等工具打开 PDF,查看“文件 → 属性 → 字体”列表,确认所有使用的字体均已嵌入。
  • 若发现未嵌入的字体,请在生成 PDF 时将其嵌入,或在服务器上安装相同的字体。
  1. 在 Aspose.PDF 转换时指定默认字体(参考官方论坛示例)
// 将 PDF 转为 HTML,指定默认字体(该字体需已安装)
Document doc = new Document(new ByteArrayInputStream(pdfData));
HtmlSaveOptions htmlOpts = new HtmlSaveOptions();
htmlOpts.setPartsEmbeddingMode(HtmlSaveOptions.PartsEmbeddingModes.EmbedAllIntoHtml);
// 通过设置 DefaultFontName 来指定回退字体(如果 PDF 中缺失字体)
// htmlOpts.setDefaultFontName("Arial"); // 示例,实际字体请根据 PDF 使用情况选择
doc.save("output.html", htmlOpts);
  • 通过生成的 HTML 与原 PDF 对比,确认文字位置是否仍有错位。如果 HTML 正常,则说明问题主要在字体回退。
  1. 确保运行环境中已安装所需字体
  • 将 PDF 使用的字体文件(.ttf/.otf)复制到服务器的系统字体目录或 Aspose.PDF 的自定义字体文件夹。
  • 重启应用后重新解析。
  1. 如仍出现错位
  • 收集以下信息以便进一步诊断:
    • 出现问题的 PDF 示例文件;
    • 使用的 Aspose.PDF 代码片段(尤其是转换/抽取的配置);
    • 运行时的操作系统和 .NET/Java 版本。

后续
按照上述步骤检查并补齐缺失字体、在 HtmlSaveOptions 中显式指定默认字体后,通常可以消除因字体回退导致的文字/字段错位。如果问题仍未解决,请提供上述诊断信息,以便进一步定位根因。

b9abed28481d6f2c1d87448e1c5e6b03.png (13.5 KB)

有嵌入字体

@feng.qun.zhu.avaryholding.com

您是否使用的是最新版本的API?如果该问题在最新版本中仍然存在,请提供您的示例PDF文档以及示例代码片段。我们将在我们的环境中测试该场景并相应地解决问题。

使用的是这个地址测试的 Convert PDF | Online and Free

@feng.qun.zhu.avaryholding.com

感谢您分享这些信息。如之前所请求的,您能否分享您尝试转换的文档?我们需要该文档以便在我们的环境中测试该场景,并相应地解决问题。