【破解】Aspose.Words去水印

前言

Aspose.Words去水印

添加依赖

pom.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<repositories>
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://releases.aspose.com/java/repo/</url>
</repository>
</repositories>

<dependencies>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-words</artifactId>
<version>23.4</version>
<classifier>jdk17</classifier>
</dependency>
</dependencies>

创建注册类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package com;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.util.ArrayList;

public class Register {

/**
* aspose-words:jdk17:23.4 版本
*/
public static void registerWord() throws Exception {
// 构造一个注册信息
Class<?> zzXgCClass = Class.forName("com.aspose.words.zzXgC");
Constructor<?> constructors = zzXgCClass.getDeclaredConstructors()[0];
constructors.setAccessible(true);
Object instance = constructors.newInstance("zzW5k", "zzYON");
// zzXFN = 1
java.lang.reflect.Field zzXFN = zzXgCClass.getDeclaredField("zzXFN");
zzXFN.setAccessible(true);
zzXFN.set(instance, 1);

// 把注册信息放到 zzYVA这个类中来
Class<?> zzYVAClass = Class.forName("com.aspose.words.zzYVA");
java.lang.reflect.Field zzwP = zzYVAClass.getDeclaredField("zzwP");
zzwP.setAccessible(true);
ArrayList<Object> zzwPValue = new ArrayList<>();
zzwPValue.add(instance);
zzwP.set(null, zzwPValue);

// 生成文档会掉这个来判断 zzXQo
Class<?> zzXQoClass = Class.forName("com.aspose.words.zzXQo");
java.lang.reflect.Field zzHA = zzXQoClass.getDeclaredField("zzHA");
zzHA.setAccessible(true);
zzHA.set(null, 128);
Field zzWod = zzXQoClass.getDeclaredField("zzWod");
zzWod.setAccessible(true);
zzWod.set(null, false);
}

}

调用注册类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package com;

import com.aspose.words.*;

public class App {

public static void main(String[] args) {

// 注册
Register.registerWord();

...

}

}

完成