Qualité d'image en utilisant Itext
Est possible de générer un document PDF à l'aide de la bibliothèque Itext qui contient imgages avec une résolution de 150 dpi.
(Semble être que Itext est de réduire la qualité des images à 72 dpi.)
Grâce
source d'informationauteur Luixv
Vous devez vous connecter pour publier un commentaire.
Voir ce filspécifiquement ce post ce qui explique que les fichiers Pdf ne disposez pas d'un concept de PPP. Ce fil est une bonne lecture, trop.
Essentiellement (et ce n'est pas techniquement exact, mais assez proche) par défaut, lorsque vous placez une image à l'aide de la bibliothèque iText assumer pour chaque 72 pixels de 1 pouce d'espace imprimé sera utilisé. Si vous souhaitez modifier cette règle, alors vous devez changer l'image du
matrix
. Vous pouvez soit le faire directement (ce qui est difficile) ou d'utiliser les méthodes de mise à l'échelle (beaucoup plus facile) commescaleAbsolute()
scaleAbsoluteWidth()
scaleAbsoluteHeight()
scalePercentage()
etscaleToFit()
.La modification de la matrice ne pas changer l'image d'une quelconque façon, il ne (essentiellement) les modifications de la définition du nombre de pixels à fourrer dans un pouce, qui lors de l'impression que vous appelez des DPI. (Vous êtes en train de modifier la relation entre les pixels de l'image et du document de l'utilisateur de parts, mais vous n'avez pas vraiment besoin de savoir ça). Donc, par défaut, un de 200x200 pixels de l'image placée par iText, il imprime à environ 2 3/4". Si vous appelez
scaleAbsolute(100,100)
il va fourrer ces 200 pixels en 100 "unité utilisateur", vous donnant un DPI effectif de 144 et d'impression à environ 1 3/8".Tout cela peut vraiment faire votre mal à la tête, surtout si vous avez utilisé pour l'imagerie des programmes tels que Adobe Photoshop qui vous permettent de définir une "résolution" pour certains types d'images. Malheureusement, c'est plus une impression "hint" et n'a pas vraiment changer le fichier que beaucoup. Un 100x100 pixel de l'image à 72 dpi est exactement la même que 100x100 pixels en 300 DPI, sauf lors de l'impression. iText ignore complètement cette impression de l'indice, soit parce que c'est tout ce qu'il est ou de parce que pas tous les formats d'image de soutien. (Ne sont pas directement liés, mais un mythe courant est que les "Enregistrer pour le Web" fait des images en 72 DPI quand la réalité complètement les bandes de la résolution d'informations à partir du fichier.)
En ignorant ce qui se passe en réalité, pour obtenir l'image à être ce que vous pensez de 150 DPI, prendre la source de l'image en largeur et hauteur en pixels, et plusieurs personnes par
0.48
(72 divisé par 150) et de transmettre ces nouveaux numéros descaleAbsolute()
.Il y a une méthode sur la
Image
classe appeléesetDPI
mais aussi loin que je peux dire que ce n'est pas réellement un effet sur le placement de l'image et plus d'une chose d'information.Si la mauvaise qualité de l'image dans le PDF. vous pouvez effectuer les opérations suivantes:
Cela a résolu mon problème.