iTextSharp comment faire pivoter / changer de page de paysage en portrait
Je suis en utilisant iTextSharp de fusionner plusieurs fichiers PDF en un seul fichier Pdf. J'ai trouvé un exemple de code ou deux sur le web à la façon d'accomplir cette tâche.
Ils travaillent tous, ne semble pas avoir de problèmes, comme je suis capable de fusionner plusieurs fichiers PDF en un seul fichier PDF.
Le problème que j'ai c'est que j'aimerais que toutes les pages en mode PORTRAIT, comme certains fichiers PDF ont des pages en PAYSAGE et je voudrais pour eux d'être tourné vers le PORTRAIT. Je n'ai pas l'esprit que ils vont être à l'envers ou de côté, mais ils doivent tous être dans le portrait.
En regardant les sections de code dans les exemples ci:
page = writer.GetImportedPage(reader, i);
rotation = reader.GetPageRotation(i);
renvoie toujours la rotation de la page la valeur 0 (zéro) ainsi, la section de code
if (rotation == 90 rotation == 270)
{
cb.AddTemplate(page, 0, -1f, 1f, 0, 0,
reader.GetPageSizeWithRotation(i).Height);
}
n'est jamais exécuté (si c'est ce qui est censé faire, en tournant la page).
Donc, basé sur le code dans le lien de la 1ère exemple de code page = writer.GetImportedPage(reader, i)
comment m'y prendre pour modifier la mise en page de la page
de Paysage à Portrait, avant que je l'ajouter à la nouvelle fusionné document PDF avec cb.AddTemplate...
?
PS. Déterminer si une page est soit en mode paysage ou portrait-je utiliser le morceau suivant de code obtenu à partir de (adapté de l'exemple de code ci-dessus):
float pageXYRatio = page.Width / page.Height;
if (XYRatio > 1f)
{
//page is landscape
}
else
{
//page is portrait
}
Toute aide serait appréciée.
Grâce
source d'informationauteur Riaan
Vous devez vous connecter pour publier un commentaire.
comme vous l'avez trouvé, vous ne pouvez pas toujours compter sur PdfReader.GetPageRotation().
par exemple, si l'objet Document est créé comme ceci:
PdfReader.GetPageRotation()
sera toujours retour 0.un vraiment simplifiée pour décider si une page est en mode portrait ou paysage est de comparer la largeur et la hauteur de chaque page de chaque fichier PDF que vous êtes à la combinaison. si la largeur est supérieure à la hauteur d'une page individuelle, ajouter une entrée dans le dictionnaire de la page et explicitement, c'est la rotation. quelque chose comme ce qui suit Gestionnaire HTTP:
prendre un coup d'oeil à la PdfDictionary classe. et voici un bon thread de la liste de diffusion expliquant comment iText[Forte] magasins de la rotation de la page à chaque page.
et bien sûr, vous pourriez envisager d'investir dans le livre.
J'ai utilisé quelque chose comme ça.
avec cet exemple http://alex.buayacorp.com/merge-pdf-files-with-itext-and-net.html
J'ai ajouté la ligne suivante:
Mes fichiers pdf sont construits à partir de SSRS et ils ont la même taille, donc j'utilise la 1ère page du 1er document (je suppose)