Fusionner des fichiers PDF sur iOS
Est-il un moyen dans iOS pour fusionner des fichiers PDF, qui est, ajouter les pages de l'un à la fin de l'autre et de l'enregistrer sur le disque?
source d'informationauteur lkraider
Vous devez vous connecter pour publier un commentaire.
Je suis sorti avec cette solution:
La question la plus importante ici est d'allocation de mémoire. Comme vous pouvez le voir, dans cette approche, vous avez pour lire les fichiers PDF que vous souhaitez fusionner avec et, en même temps, de générer la sortie. Les rejets se produisent seulement à la fin. J'ai essayé de combiner un fichier PDF avec 500 pages (environ 15 MO) avec un autre contenant 100 pages (~3 MO) et il a produit un nouveau, avec plus de 600 pages (bien sûr!) le fait d'avoir seulement ~5 MO taille (magie?). L'exécution a pris environ 30 secondes (pas si mal, compte tenu de l'iPad 1) et alloué 17MB (ouch!). L'application heureusement, ne s'est pas effondré, mais je pense que iOS aimerais tuer une application de consommer 17MB comme celui-ci. ;P
J'ai fait un peu de refactoriser sur Jonathan code de joindre n'importe quel fichier PDF de n'importe quelle taille:
Espère que ça aide
Ma fonction dans swift 3:
Je suis la promotion de mon propre bibliothèque ici...mais j'ai un PDF gratuit de lecture/écriture de la bibliothèque, j'ai récemment montré comment utiliser iOS contexte. il est parfait pour la fusion de documents Pdf et de les manipuler, et de le faire avec une mémoire relativement petite signature. Envisager de l'utiliser, voir ici un exemple - ios avec PDFHummus. Encore une fois, c'est moi la promotion de ma propre bibliothèque, prenez donc cet avis dans le bon contexte.
J'ai pensé que je pourrais partager avec vous la réponse à l'aide Swift depuis que j'ai été chercher dans Swift et ne pouvait pas trouver et de le traduire. Aussi, ma réponse utilise un tableau de chacun des fichiers pdf
pdfPagesURLArray
et boucle pour générer le pdf complet. Je suis assez nouveau sur ce donc toutes les suggestions sont les bienvenues.Pourrait faire la force de déballer ici comme ceci:
page = CGPDFDocumentGetPage(pdfReference, index)!
Mais pour continuer avec les meilleures pratiques:
J'ai basé ma solution sur la solution créée par @matsoftware.
J'ai créé un extrait de code pour ma solution: https://gist.github.com/jefferythomas/7265536
Je crois FastPdfKit est exactement ce que vous recherchez et il y a une version gratuite!