Я написал код на C, где я копирую содержимое PDF-файла из одного места в другое для дальнейшей обработки. То, что я сделал это:Неправильная копия файла PDF с использованием C
Открыть файл в двоичном режиме чтения
if ((fp = fopen(argv[6],"rb")) == 0) {
fprintf(stderr, "ERROR: Can't open input file %s\n",argv[6]);
goto out;
}
Затем я сохранить содержимое файла PDF во временную папку
/* save the contents for the file to a temporary location */
tempfp = fopen(CUPS_IPTEMPFILE, "wb");
while ((n = fread(buf, 1, BUFSIZ, fp)) > 0) {
count = fwrite(buf, 1, BUFSIZ, tempfp);
}
fclose(tempfp);
Я использую MuPDF, чтобы открыть файл; хотя MuPDF способен правильно отобразить файл, он дает следующую ошибку на терминале:
$ mupdf cupsiptempfile.pdf
error: cannot find startxref
warning: trying to repair broken xref
Если я использую Okular для отображения одного файла, я не получаю ошибку
$ okular cupsiptempfile.pdf
okular(12821)/kdecore (KConfigSkeleton) KCoreConfigSkeleton::writeConfig:
okular(12821)/kdecore (KConfigSkeleton) KCoreConfigSkeleton::writeConfig:
okular(12821)/kdecore (KConfigSkeleton) KCoreConfigSkeleton::writeConfig:
okular(12821)/kdecore (KConfigSkeleton) KCoreConfigSkeleton::writeConfig:
okular(12821)/kdecore (KConfigSkeleton) KCoreConfigSkeleton::writeConfig:
Почему здесь есть разница? Я что-то делаю с копией?
Дополнительная информация: Когда я открываю исходный файл PDF с помощью MuPDF, он не дает ошибки.
Пожалуйста, задавайте любые интересующие вас вопросы.
При копировании вы пишете символы BUFSIZ, но вы не можете прочитать символы BUFSIZ - переменная п есть, чтобы сказать вам, сколько символов считывали так, что, сколько вы должны написать , –
@JerryJeremiah Да, вы правы. Это решило проблему. Глупый я, я этого не заметил. – Pranjal
Рад, что помогло. –