关于 Aspose.PDF for Android via Java 23.2

关于 Aspose.PDF for Android via Java 23.2的转换效果
这是pdf转docx的效果,效果太差了,排版全部错乱,根本不能用,我看这个是23年的SDK了,过了几年了,现在有新的SDK了吗?
wechat_2025-09-09_101055_600.png (111.7 KB)

pdf转pptx直接报错:
W java.lang.NoSuchMethodError: No virtual method setCompositingQuality(I)V in class Lcom/aspose/pdf/internal/ms/System/Drawing/Graphics; or its super classes (declaration of ‘com.aspose.pdf.internal.ms.System.Drawing.Graphics’ appears in /data/app/com.beiwang.aippt-vgQRKSftqIUDbNR0C6_DQg==/base.apk!classes23.dex)
W at com.aspose.pdf.internal.p235.z7.m1(Unknown Source:191)
W at com.aspose.pdf.internal.p6.z5.m1(Unknown Source:11)
W at com.aspose.pdf.internal.p6.z10.m1(Unknown Source:177)
W at com.aspose.pdf.internal.p6.z4.m1(Unknown Source:23)
W at com.aspose.pdf.internal.p4.z2.m1(Unknown Source:121)
W at com.aspose.pdf.internal.p235.z5.m23(Unknown Source:10)
W at com.aspose.pdf.z15.m1(Unknown Source:112)
W at com.aspose.pdf.ADocument.m1(Unknown Source:24)
W at com.aspose.pdf.Document.m1(Unknown Source:0)
W at com.aspose.pdf.ADocument.save(Unknown Source:76)
W at com.aspose.pdf.Document.save(Unknown Source:0)

能修复一下吗?

@molihuan

您好,感谢您使用 Aspose.PDF for Android via Java 并在此反馈问题!

下面将针对您提到的两点进行说明与解决方案:


:one: PDF → DOCX 转换效果差

可能原因 解决办法
源 PDF 内容复杂(如表格、浮动对象、嵌入式字体、图层) - 在调用 save 时使用 DocSaveOptions 并打开 setPreserveOriginalFormatting(true) 以保留原始布局。
- 如有表格,开启 setKeepTableLayout(true)
缺失字体 - 将 PDF 使用的字体文件(.ttf/.otf)放入 /assets 或**/fonts** 目录,并在代码中通过 FontRepository.addFont("path/to/font.ttf") 注册。
旧版 SDK 解析引擎 强烈建议升级到最新的 24.x 版本(截至 2025 年 9 月最新为 24.11),该版本在 DOCX/Word 结构化转换方面做了大量改进。

示例代码(使用最新 SDK)

import com.aspose.pdf.*;
import com.aspose.pdf.devices.*;

public class PdfToDocx {
    public static void main(String[] args) throws Exception {
        // 加载 PDF
        Document pdfDoc = new Document("/sdcard/input.pdf");

        // 注册所需字体(如果有自定义字体)
        FontRepository.addFont("/sdcard/fonts/SimSun.ttf");

        // 配置 DOCX 保存选项
        DocSaveOptions saveOptions = new DocSaveOptions();
        saveOptions.setPreserveOriginalFormatting(true);   // 保持原始排版
        saveOptions.setKeepTableLayout(true);             // 保持表格布局
        saveOptions.setCompliance(DocSaveOptions.Compliance.ISO_29500_2008_TRANSITIONAL);
        // 如有需要,可调节图片压缩、字体嵌入等

        // 保存为 DOCX
        pdfDoc.save("/sdcard/output.docx", saveOptions);
    }
}

参考文档


:two: PDF → PPTX 转换时报 NoSuchMethodError: setCompositingQuality

产生原因

  • 您使用的 23.2 版内部仍依赖旧的 Graphics 实现,而在 Android 12+(或 API 31 以上)中相关方法已被移除,导致运行时异常。

解决方案

  1. 升级到最新 SDK(≥ 24.10)
    • 最新版已将内部绘图实现迁移到兼容 Android 的 android.graphics.Canvas,不再调用已废弃的方法。
  2. 确保使用的 Gradle 依赖与真实运行时版本一致
dependencies {
    // 替换为最新的 Aspose.PDF for Android via Java
    implementation 'com.aspose:aspose-pdf-android:24.11'
}
  1. 清理旧的 dex/apk 缓存后重新编译
./gradlew clean assembleDebug
  1. (可选) 若仍需使用旧版 SDK,请在 proguard-rules.pro 中保留 com.aspose.pdf.internal.ms.System.Drawing.Graphics 类,但这仅是临时措施,强烈建议升级。

示例代码(PDF → PPTX)

import com.aspose.pdf.*;
import com.aspose.pdf.devices.*;

public class PdfToPptx {
    public static void main(String[] args) throws Exception {
        Document pdfDoc = new Document("/sdcard/input.pdf");

        // PPTX 保存选项
        PptxSaveOptions pptxOptions = new PptxSaveOptions();
        pptxOptions.setColorMode(PptxSaveOptions.ColorMode.COLOR); // 颜色模式
        pptxOptions.setSlidesLayout(PptxSaveOptions.SlidesLayout.ONE_SLIDE_PER_PAGE);

        // 保存为 PPTX
        pdfDoc.save("/sdcard/output.pptx", pptxOptions);
    }
}

参考文档


:rocket: 下一步行动建议

  1. 立即升级 SDK 到最新的 24.x 版本(通过 Maven/Gradle 或手动下载 JAR/AAR)。
  2. 使用上面提供的代码示例 重新尝试转换,观察效果是否得到提升。
  3. 若仍有排版异常或错误:
    • 请提供 一份能够复现问题的 PDF(可以通过文件分享链接发送)。
    • 同时贴出 完整的堆栈信息(如果还有其他异常),以及 目标 Android API 版本
    • 我们会进一步进行内部排查并给出针对性的调优建议。

:telephone_receiver: 如需进一步帮助

  • 官方技术支持渠道https://forum.aspose.com/(请选择对应产品版块)
  • 提交工单:在 Aspose 官方网站的 Support → Submit a Ticket 页面提供完整日志与样例文件。

我们期待您的样例文件,以便快速定位并为您提供最适配的解决方案。祝开发顺利!

Aspose 技术支持团队
2025年9月

找不到com.aspose:aspose-pdf-android:24.11

@molihuan

我们已经在另一个线程中回复了您关于同一主题的问题,您可以在那里继续跟进。