关于 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 并在此反馈问题!
下面将针对您提到的两点进行说明与解决方案:
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);
}
}
参考文档:
PDF → PPTX 转换时报 NoSuchMethodError: setCompositingQuality
产生原因
- 您使用的 23.2 版内部仍依赖旧的
Graphics
实现,而在 Android 12+(或 API 31 以上)中相关方法已被移除,导致运行时异常。
解决方案
- 升级到最新 SDK(≥ 24.10)
- 最新版已将内部绘图实现迁移到兼容 Android 的
android.graphics.Canvas
,不再调用已废弃的方法。
- 确保使用的 Gradle 依赖与真实运行时版本一致
dependencies {
// 替换为最新的 Aspose.PDF for Android via Java
implementation 'com.aspose:aspose-pdf-android:24.11'
}
- 清理旧的 dex/apk 缓存后重新编译
./gradlew clean assembleDebug
- (可选) 若仍需使用旧版 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);
}
}
参考文档:
下一步行动建议
- 立即升级 SDK 到最新的 24.x 版本(通过 Maven/Gradle 或手动下载 JAR/AAR)。
- 使用上面提供的代码示例 重新尝试转换,观察效果是否得到提升。
- 若仍有排版异常或错误:
- 请提供 一份能够复现问题的 PDF(可以通过文件分享链接发送)。
- 同时贴出 完整的堆栈信息(如果还有其他异常),以及 目标 Android API 版本。
- 我们会进一步进行内部排查并给出针对性的调优建议。
如需进一步帮助
我们期待您的样例文件,以便快速定位并为您提供最适配的解决方案。祝开发顺利!
Aspose 技术支持团队
2025年9月
找不到com.aspose:aspose-pdf-android:24.11
@molihuan
我们已经在另一个线程中回复了您关于同一主题的问题,您可以在那里继续跟进。