Dans mon utilisateur, l'utilisateur passe l'entrée comme nombre de copies.
Donc, si l'utilisateur passe le nombre de copies 2, je veux générer un document PDF unique avec les mêmes pages répétant deux fois P>
J'utilise Bibliothèque PDFSharp P>
J'ai ci-dessous le code qui crée un document PDF avec plusieurs pages P> Je suis sûr que nous devons ajouter une boucle mais que plus de choses que je dois faire avoir les mêmes copies répétant dans le même document que par entrée fournie à condition que p> fortre> p> permet de dire que le document généré 2 pages et utilisateur dit nombre de copies 2 alors que ce seul Le document PDF aura maintenant 4 pages avec 2 pages répétant deux fois dans le même document: P> pagecontent1 pagecontent 2, pagecontent1, pagecontent2 P> Mise à jour 2 strong> p> P> J'ai essayé la solution @christophers et j'ai changé de code comme ci-dessous avant d'enregistrer le document p> mais maintenant je reçois une erreur Un document PDF doit être ouvert avec pdfdocumentopenmode.import Pour importer des pages de celui-ci strong> p> p>
3 Réponses :
D'accord, le propblème s'est avéré très différent de ce que j'ai compris. Comme je n'ai aucune expérition avec PDFSharp en particulier, je ne peux que vous aider avec la structure de boucle générale.
//I use a array to simulate the input PDF int[] input = new int[]{ 1, 2 }; //And a list to simulate the output PDF List<int> output = new List<int>(); //PageCopies is set somewhere outside this code. //The loop counting the copies for(int i = 0; i < PageCopies; i++){ //the loop doing the copies for(int k = 0; k < input.Count; k++){ output.Add(input[k]); } }
Si je comprends bien correctement, je pense que vous pouvez enregistrer votre PDF complet original, puis ouvrir et fusionner plusieurs fois.
Si tel est le cas, cela peut être proche. J'ai combiné votre code avec une documentation de PDFSharp trouvée ici: http: // www. pdfshaparp.net/wiki/concaténateateocuments-sample.ashx p> Je soupçonne que cela pourrait être fait sans sauvegarder et redoubler le document, mais je n'ai pas 't utilisé moi-même. p> p>
Est-il possible que nous ne économisions pas de document en première instance et utilise simplement une instance de variable de document, puis effectuez une opération de fusion entière et enregistrez enfin un seul document?
Je soupçonne oui, mais je ne connais pas PDFSharp et que pourrait arriver à l'état interne des objets tels qu'ils sont utilisés. Je voudrais essayer de le faire sans enregistrer le premier document et voir ce qui se passe.
Avez-vous donné cela un essai? Je vois votre mise à jour que vous avez rencontrée dans une erreur que le document doit être ouvert en mode d'importation, cette méthode utilise le mode d'importation.
Enfin, j'ai réussi à me résoudre, mais au-delà des indices de @christopher et @blaise. Voici mon code final
var document = new PdfDocument(); var page = document.AddPage(); var gfx = XGraphics.FromPdfPage(page); page.Width = XUnit.FromMillimeter(111); page.Height = XUnit.FromMillimeter(222); //some logic to create multiple pages document.Save("C:\mydoc\"); PdfDocument finalOutputDocument; if (CopyCount >1) { MemoryStream stream = new MemoryStream(); document.Save(stream, false); PdfDocument source = PdfReader.Open(stream, PdfDocumentOpenMode.Import); finalOutputDocument= new PdfDocument(); for (int i = 0; i < CopyCount; i++) { for (int k = 0; k < document.Pages.Count; k++) { finalOutputDocument.Pages.Add(source.Pages[k]); } } } else { finalOutputDocument= document; } finalOutputDocument.Save(path);
Parlons-nous de Pagecontent1, Pagecontent2, Pagecontent1, Pagecontent2? Ou pagecontent1, pagecontent1, pagecontent2, pagecontent2
Vous voulez faire des copies de certaines pages en tant que PDF séparé?
@christopher pagecontent1 pagecontent 2, pagecontent1, pagecontent2
@kixoka je veux une copie de certaines pages dans le même PDF