我正在开发一个小工具来为PDF加水印,它适用于一些PDF,而其他一些则崩溃。
我正在使用iText库和 bouncycastle(依赖项)
pom.xml:
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.6</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.49</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
它在这一行(代码的第一行)崩溃:
PdfReader reader = new PdfReader(src);
Run Code Online (Sandbox Code Playgroud)
使用以下堆栈跟踪:
Exception in thread "main" com.itextpdf.text.exceptions.InvalidPdfException: class "org.bouncycastle.asn1.ASN1Primitive"'s signer information does not match signer information of other classes in the same package
at com.itextpdf.text.pdf.PdfReader.readPdf(PdfReader.java:727)
at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:181)
at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:219)
at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:207)
at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:197)
... <from here it points to my code>
Run Code Online (Sandbox Code Playgroud)
我已经做了一些谷歌搜索,有些人说可能问题是我在某处复制了这个bouncycastle …
我正在使用 SD 卡,需要每 5 分钟创建一个新的 csv 文件。
因此,每当我的计时器到期时,我都会创建一个名为“newfile0.csv”、newfile1.csv“的文件,依此类推。它会按预期工作,直到我到达“newfile10.csv”。此时,我开始来获取函数FR_INVALID_NAME的返回值f_open。
我已经尝试过不同的方法来创建包含文件名的字符串。我在调用之前也检查了字符串内容f_open,结果没问题。
我将在这里放置一些代码。
char *file_name = (char*)calloc(17,sizeof(char));
if (file_name != NULL )
printf("error");
char *number = (char*)calloc(10,sizeof(char));
if (number != NULL )
printf("error");
if (count_files < MAX_NO_FILES){
count_files++;
strcat(file_name, "lewfile");
itoa(file_name, number);
strcat(file_name, number);
strcat(file_name, ".csv");
printf("CONCATENATED STRING: %s", file_name);
fileSystemResult = f_open(&fileObject[count_files], file_name, FA_CREATE_ALWAYS | FA_WRITE);
if (fileSystemResult != FR_OK)
printf("error creating the file: %d \n\r",fileSystemResult );
Run Code Online (Sandbox Code Playgroud)
我可能错过了什么提示吗?