pdftk Erreur: impossible d'ouvrir le fichier PDF:
Je suis en utilisant pdftk
bibliothèque pour extraire les champs de formulaire à partir du fichier pdf .Tout fonctionne bien sauf le seul problème que j'ai eu un fichier pdf fichier pdf lien. ce qui provoque l'erreur est donnée soufflet
Error: Failed to open PDF file:
http://www.uscis.gov/sites/default/files/files/form/i-9.pdf
Done. Input errors, so no output created.
commande est
root@ri8-MS-7788:/home/ri-8# pdftk http://192.168.1.43/form/i-9.pdf dump_data_fields
la même commande fonctionne pour toutes les autres formes .
Attempt1
J'ai essayé de chiffrer le fichier pdf à la mauvaise version, mais il produire la même erreur . voici la commande
pdftk http://192.168.1.43/forms/i-9.pdf input_pw foopass output /var/www/forms/un-i-9.pdf
Mise à jour
c'est ma fonction pour gérer cette
public function Formanalysis($pdfname)
{
$pdffile=Yii::app()->getBaseUrl(true).'/uploads/forms/'.$pdfname;
exec("pdftk ".$pdffile." dump_data_fields 2>&1", $output,$retval);
//got an error for some pdf if these are secure
if(strpos($output[0],'Error') !== false)
{
$unsafepdf=Yii::getPathOfAlias('webroot').'/uploads/forms/un-'.$pdfname;
//echo "pdftk ".$pdffile." input_pw foopass output ".$unsafepdf;
exec("pdftk ".$pdffile." input_pw foopass output ".$unsafepdf);
exec("pdftk ".$unsafepdf." dump_data_fields 2>&1", $outputunsafe,$retval);
return $outputunsafe ;
//$response=array('0'=>'error','error'=>$output[0]);
//return $response;
}
//if (strpos($output[0],'Error') !== false){ echo "error to run" ; } //this is the option to handle error
return $output;
}
- vous pouvez utiliser pdftk, seulement prêter attention à ces détails: 1 = télécharger et d'utiliser la dernière version ou de la compilation de pdflabs.com/docs/pdftk-version-history; 2 = ce document pdf a des restrictions (mot de passe de propriétaire) appliquée; vous devez supprimer les restrictions avant d'utiliser pdftk. vous pouvez faire cela avec qpdf qpdf.sourceforge.net qpdf --decrypt *.le fichier pdf de sortie.pdf, vous pouvez utiliser pdftk sans douleurs
- en fait, seuls les très anciennes versions (pdftk 1.41) n'ont pas de support pour la version pdf>1.4/1.5, les nouveaux soutiens pleinement ces versions et au-delà
Vous devez vous connecter pour publier un commentaire.
cela peut être une petite astuce, solution, mais doit travailler pour vous . comme @bruno a dit que c'est le fichier crypté . Vous devez déchiffrer ce avant d'utiliser pour la
pdftk
. Pour cela, j'ai trouvé un moyen de déchiffrer qui estqpdf
gratuit opem source de la bibliothèque pour déchiffrer le fichier pdf, supprimer le propriétaire d'utilisateur et mots de passe, etc et beaucoup plus. Vous pouvez trouver ici Qpdf. l'installer sur votre système . et l'exécution de cette commandeensuite utiliser le fichier de sortie dans le
pdftk
de commande . il devrait fonctionner .PdfTk est un outil qui a été créé par la compilation une version obsolète de iText à un exécutable en utilisant le Compilateur GNU pour Java (GCJ) (PdfTk est pas approuvé par la bibliothèque iText Group NV).
J'ai examiné le document PDF et il utilise deux technologies qui n'étaient pas pris en charge par la bibliothèque iText au moment PdfTk a été créé: XFA et compressé de la croix-des tables de référence.
Ce dernier est quelles sont les causes de votre problème. PdfTk attend votre fichier à la fin comme ceci:
Dans cet extrait de code
startxref
marques de l'offset d'octet dexref
qui est l'endroit où la croix-table de référence commence. Cette table contient les octets des décalages de tous les objets dans le fichier PDF.Quand vous regardez le PDF vous vous référez, vous voyez que ça se termine comme ceci:
Dans ce cas,
startxref
fait toujours référence à l'endroit où le premier cross-table de référence commence (c'est un PDF linéarisé), mais la croix de la table de référence est stockée à l'intérieur d'un objet, et cet objet est compressé (voir le charabia entre lestream
etendstream
mots-clés).Comprimé de la croix-tableaux de référence et la compression des objets ont été introduits au format PDF 1.5 (2003), mais ils ne sont pas pris en charge par PdfTk. Vous aurez à trouver un outil qui peut faire face à de tels cours d'eau (par exemple, une version récente de iText, qui est le vrai truc, comparativement à PdfTk), ou vous devez enregistrer votre PDF en format PDF 1.4 avant de la traiter avec PdfTk (mais vous perdrez le XFA, parce que XFA a également été mis en PDF 1.5).
Mise à jour:
Puisque vous posez des questions à propos des champs de formulaire, je vais ajouter les pièces jointes suivants:
Cette capture d'écran a été prise en utilisant iText RUPS (ce qui prouve que iText pouvez ouvrir le document). À droite, vous pouvez voir que le même formulaire est défini deux fois:
Si vous marchez dans l'arbre sous
Fields
, vous trouverez tous les champs qui sont stockées dans le fichier PDF à l'aide de AcroForm de la technologie. À gauche, vous pouvez voir la description de ce champ:Si vous regardez sous XFA, vous remarquez que le même formulaire est également défini à l'aide XML Forms Architecture. Si vous cliquez sur
datasets
, vous voyez la description XML de la base de données dans le panneau inférieur:Toutes ces informations peuvent être accessibles par programmation à l'aide de la bibliothèque iText (Java) ou iTextSharp (C#). PdfTk est simplement un outil basé sur une très vieille version de cette technologie.