J'ai écrit un code en C dans lequel je copie le contenu d'un fichier PDF d'un endroit à un autre pour un traitement ultérieur. Ce que je fait est:Copie de fichier PDF incorrecte en utilisant C
Ouvrez le fichier en mode lecture binaire
if ((fp = fopen(argv[6],"rb")) == 0) {
fprintf(stderr, "ERROR: Can't open input file %s\n",argv[6]);
goto out;
}
Puis-je enregistrer le contenu du fichier PDF à un emplacement temporaire
/* 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);
J'utilise MuPDF pour ouvrir la fichier; bien que MuPDF est capable d'afficher correctement le fichier, il donne l'erreur suivante sur le terminal:
$ mupdf cupsiptempfile.pdf
error: cannot find startxref
warning: trying to repair broken xref
Si j'utilise Okular pour afficher le même fichier, je n'obtenir aucune erreur
$ 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:
Pourquoi il y a une différence ici? Est-ce que je fais quelque chose de mal avec la partie copie?
Informations supplémentaires: Lorsque j'ouvre le fichier PDF d'origine en utilisant MuPDF, il n'y a PAS d'erreur.
N'hésitez pas à demander toute information complémentaire que vous souhaitez.
Lorsque vous copiez vous écrivez des caractères BUFSIZ mais vous pourriez ne pas avoir lu les caractères BUFSIZ - la variable n est là pour vous dire combien de caractères ont été lus si c'est combien vous devriez écrire . –
@JerryJeremiah Oui, vous avez raison. Cela a résolu le problème. Je suis stupide, je n'ai pas remarqué celui-là. – Pranjal
Content de t'avoir aidé. –