Numéro Dynamiquement append au format PDF ou faire soumettre le bouton modifier son URL en fonction de ce nombre

StackOverflow https://stackoverflow.com/questions/2765486

  •  03-10-2019
  •  | 
  •  

Question

Je suis au service des fichiers PDF à partir d'un db SQL et de les présenter dans le navigateur. J'essaie de trouver un moyen d'intégrer un certain nombre dans le PDF dynamique afin que le recordID pour que les fichiers PDF dossier SQL est disponible pour moi lorsque le requérant fournit de l'utilisateur les données de formulaire XML. L'utilisateur touche le bouton d'envoi sur la forme et la forme soumet ses données XML à ma page de soumission. S'il y a une manière de changer l'URL de soumission à la volée alors que je pouvais faire une chaîne de requête pour passer mon auto RECORDID. Je ne suis pas générer le fichier PDF dans le code, son être créé à la main puis uploadés sur mon site.

Modifier

L'utilisateur reçoit un lien someServer.com/pdfLink.aspx?formID=5 ils y vont et que les pages tire un PDF à partir de la base de données et l'affiche. Cela tire vers le haut acrobate en taille réelle du navigateur si ma page ASPX ne contrôle pas de soumettre le formulaire dûment rempli, Acrobat. L'utilisateur remplit le formulaire et clique sur le bouton soumettre sous forme. Ce bouton d'envoi a été mis en place à la forme du temps de conception pour pointer vers une autre page someSite.com/pdfSubmit.aspx Le bouton soumettre les messages les données XML à cette page et je peux le traiter. J'ai besoin RECORDID dans la chaîne de requête pour la page someSite.com/pdfSubmit.aspx. Pour ce faire, il faudrait que je modifier le PDF soit ajouter le recordID et la chaîne de requête est le bouton envoyer envoyer URL, ou l'intégrer dans le ware PDF autre. La grande question est de savoir comment juste avant que je modifier le PDF que je l'afficher via someServer.com/pdfLink.aspx?formID=5 faire l'une de ces deux options.

Était-ce utile?

La solution 3

En essayant @ suggestion de socle j'ai réalisé que je devais changer de soumission XML (puisque ses données étaient sur le PDF directement. Je changé le formulaire pour soumettre comme XDP qui dispose de données XML + PDF intégré. Quand je l'ai fait et regardé XDP cru que la forme soumise, je suis tombé sur ce sujet.

  <?xml version="1.0" encoding="UTF-8" ?> 
  <?xfa generator="XFA2_4" APIVersion="3.0.8262.0"?> 
  <xdp:xdp xmlns:xdp="http://ns.adobe.com/xdp/" timeStamp="2010-05-04T15:15:00Z" uuid="6d0944c8-1573-442c-9c85-11e372bd38c3">
    <xfa:datasets xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/">
      <xfa:data>
         <form1>
           <TextField1>TestMe</TextField1> 
         </form1>
       </xfa:data>
    </xfa:datasets>
    <pdf href="ViewPDF.aspx?formID=10" xmlns="http://ns.adobe.com/xdp/pdf/" /> 
 </xdp:xdp>

Remarquez la 2ème dernière ligne. Il inclut automatiquement l'URL du PDF qui avait la valeur formID que je avais besoin. Donc, tout ce que je devais faire était XDP au lieu de poste XML pur de la forme et il me donne tout ce que je avais besoin.

Autres conseils

Intégrer un numéro en PDF est pas exactement casher, mais il y a certaines choses que vous pouvez faire qui honorera les spécifications.

La spécification PDF actuelle dit que « La dernière ligne du fichier ne contient que la fin de fichier marqueur

%%EOF

mais il y a une certaine marge de manœuvre - les détails de mise en œuvre dire qu'il n'a pas techniquement être la dernière ligne du fichier, mais n'a qu'à apparaître dans la dernière 1K et, en général, si vous ne le faites pas Muck avec des choses trop, les lecteurs les plus conformes ne seront même pas cligner des yeux. Si je devais le faire, je serais enclin à ajouter une nouvelle ligne (s'il n'y en a pas), alors% (ce qui est un commentaire PDF), un marqueur pour me faire savoir qu'il est à moi, et enfin le nombre. Donc, quelque chose comme:

// assume we already know it ends with %%EOF
void AppendNumberToPdf(Stream stm, int number, bool addNewline)
{
    stm.Seek(0, SeekOrigin.End); // go to EOF
    StreamWriter writer = new StreamWriter(stm, new ASCIIEncoding(), 1024);
    writer.WriteLine(string.Format("{0}% {1} {2}", (addNewLine ? "\n" : ""), kMyMarkerString, number));
    writer.Flush();
}

kMyMarkerString devrait être quelque chose comme « MyApplicationDocumentIdentifier: ». Ou quelque chose qui va le rendre facile d'identifier vos pistes

Le querystring est en lecture seule et vous ne pouvez pas changer dynamiquement lors de l'exécution. Cependant vous pouvez:

  1. Ajouter RECORDID à la forme au moment est d'abord rendu page, le soumettre

  2. Pouvez-vous traiter le formulaire et soumettre ensuite faire un Response.Redirect ou Server.Transfer à la bonne page avec le paramètre RecordID ajouté à la chaîne de requête

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top