You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ConvertAPI上传doc流转PDF返回乱码且页数异常如何解决?

修复方案

核心原因排查&对应解决

  • 流位置异常
    虽然用字节数组初始化MemoryStream默认指针位于起始位置,仍建议手动重置指针位置,避免因前置操作导致指针偏移,传入空/无效二进制内容到转换接口:
    var stream = new MemoryStream(documents[0].content);
    // 新增这行
    stream.Position = 0;
    
  • 转换格式不匹配
    确认你存储的文档实际格式:如果是OOXML格式的docx文件,仅改后缀为doc不会改变实际文件结构,此时需要把转换方法的源格式参数从"doc"改为"docx",格式不匹配会导致转换引擎解析错误,出现乱码、页数异常的问题。
  • 中文编码适配
    文档包含中文内容时,需要显式指定转换的语言参数,让转换引擎使用对应编码解析文档内容:
    var convertToPdf = await convertApi.ConvertAsync("doc", "pdf",
        new ConvertApiFileParam(stream, "test.doc"),
        // 新增中文语言参数
        new ConvertApiParam("language", "zh-CN")
    );
    
  • 输出流处理校验
    拿到返回的outputStream后,不要用文本编码(比如UTF8)读取PDF内容,PDF是二进制格式,需要直接读取全量字节数组返回给前端或者写入文件,同时设置对应响应头:
    // 示例:输出到响应
    Response.ContentType = "application/pdf";
    Response.Headers.Add("Content-Disposition", "attachment; filename=converted.pdf");
    await outputStream.CopyToAsync(Response.Body);
    

修复后完整示例代码

var convertApi = new ConvertApi("<my key>");
var stream = new MemoryStream(documents[0].content);
// 重置流指针
stream.Position = 0;
var convertToPdf = await convertApi.ConvertAsync("doc", "pdf",
    new ConvertApiFileParam(stream, "test.doc"),
    // 适配中文编码
    new ConvertApiParam("language", "zh-CN")
);
var outputStream = await convertToPdf.Files[0].FileStreamAsync();
// 重置输出流指针再读取
outputStream.Position = 0;

内容的提问来源于stack exchange,提问作者Karthik Ganesan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 10:12:03