Dessiner sur un pdf

jimmy85600 Messages postés 8 Date d'inscription dimanche 15 août 2010 Statut Membre Dernière intervention 25 avril 2014 - 24 avril 2014 à 17:52
Zermelo Messages postés 378 Date d'inscription samedi 22 septembre 2012 Statut Membre Dernière intervention 13 août 2017 - 1 mai 2014 à 10:04
Bonjour à tous,

Je souhaiterais charger un pdf à la demande sur ma form afin de pouvoir dessiner dessus.

J'ai bien sûr pensé à la picturebox, mais impossible de charger un pdf en arriere plan.

J'ai egalement utilise le controle acrobat reader, mais je n'arrive pas à dessiner dessus.

Quelqu'un aurait il une solution?

Merci d'avance

Jim

4 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
24 avril 2014 à 19:23
Bonjour,
Voilà un sujet qui m'intéresse grandement .. Il y a si longtemps que je cherche le moyen de DESSINER sur ce qui n'est pas doté d'un dispositif de dessin (hdc) ... (j'sais po moi, ... une textbox, un fichier text, un ... machin ...)
Pour parler plus sérieusement : on ne dessine pas sur un pdf. On ne peut à la rigueur que dessiner sur l'un des contrpôles que le logiciel de pdf utilise ! Te reste plus qu'à entrer dans les secrets de ce logiciel, identifier les contrôles qu'il utilise, en extraire le handle, etc ... etc ...
0
jimmy85600 Messages postés 8 Date d'inscription dimanche 15 août 2010 Statut Membre Dernière intervention 25 avril 2014
25 avril 2014 à 17:31
Bonjour Merci de ta reponse,

En fait je ne veux pas reellement dessiner sur un pdf, mais plutot extraire une page d'un pdf selectionnée et l'afficher dans un picturebox pour dessiner dessus.

merci d'avance
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
25 avril 2014 à 18:05
Assez scabreux (tiré par les cheveux), mais si tu y tiens, voilà la marche à suivre (toutes les opérations à faire) :
http://www.codeproject.com/Articles/37458/PDF-Viewer-Control-Without-Acrobat-Reader-Installe
Bon courage.

Es-tu certain, pixelisation pour pixelisation) de ne pas avoir intérêt à te contenter d'une copie d'écran dans le presse-papier puis à copier dans la picturebox ?
0
jimmy85600 Messages postés 8 Date d'inscription dimanche 15 août 2010 Statut Membre Dernière intervention 25 avril 2014
25 avril 2014 à 18:32
merci de ta réponse. je vais regarder ça.

Pour la copie écran, non ca ne va pas le faire, car je veux absolument garder l'echelle d'origine.

Les pdf contiennent des plans d'architecte avec une echelle precise.
Je souhaite pour dessiner des cotations sur ce plan.
0
Zermelo Messages postés 378 Date d'inscription samedi 22 septembre 2012 Statut Membre Dernière intervention 13 août 2017 14
1 mai 2014 à 10:04
Bonjour Jimmy85600,

Ayant eu à traiter un programme similaire, je crois pouvoir vous aider. Il s'agissait de récupérer fidèlement une partie rectangulaire d'une page d'un document Word 2010. J'ai procédé en trois étapes successives,
- conversion de la page Word en une page PDF,
- conversion de la page PDF en image JPG,
- conversion de cette image en une autre image JPG ramenant la première aux cotes inititiales.
Ce sont donc, me semble-t-il, les deux dernières conversions qui sont susceptibles de vous intéresser.
J'ai converti la page PDF en image JPG par le logiciel gratuit PDFCreator. Cette image est très agrandie, mais de façon rigoureusement homothétique, comme on peut s'en rendre compte par une simple règle de trois, et cela m'a permis de la ramener aux cotes initiales par le petit programme suivant. Je vous le livre tel quel, en vous laissant le soin de l'adapter à vos besoins. Je vous précise néammoins que
- les données x, y, dx, dy sont les cotes décrivant le rectangle prélevé,
- ChmE est le chemin d'accès de la première image,
- ChmS est le chemin d'accès de l'image ramenée aux cotes initiales.

Public Class Accueil
'Données
Dim x As Double = 14, y As Double = 14, dx As Double = 102, dy As Double = 132
Dim ChmE As String = "C:\Mon espace\Mes études\Longueur d'un arc d'ellipse\VueE.jpg"
Dim ChmS As String = "C:\Mon espace\Mes études\Longueur d'un arc d'ellipse\VueS.jpg"
'Nombre de pixels par millimètre
Dim dpm As Double = Me.CreateGraphics.DpiX / 25.4

Private Sub Accueil_Load(sender As Object, e As System.EventArgs) Handles Me.Load
MesurerPlanBrut()
AjusterPlan()
AfficherVueAjustée()
Tps.Start()
End Sub

Private Sub MesurerPlanBrut()
With pBox
.SizeMode = PictureBoxSizeMode.AutoSize
.Image = Image.FromFile(ChmE)
End With
End Sub

Private Sub AjusterPlan()
Dim u As Integer, v As Integer
With pBox
u = .Width
v = .Height
.SizeMode = PictureBoxSizeMode.StretchImage
Dim k As Double = dpm * 210 / u
.Width = CInt(k * u)
.Height = CInt(k * v)
.Left = .Left - CInt(dpm * x)
.Top = .Top - CInt(dpm * y)
End With
End Sub

Private Sub AfficherVueAjustée()
Dim Sze As Size
With Sze
.Width = CInt(dpm * dx)
.Height = CInt(dpm * dy)
End With
Me.ClientSize = Sze
End Sub

Private Sub RécupérerVueAjustée()
Dim x As Integer, y As Integer, p As Point, q As Point, g As Graphics
Dim Bmp As New Bitmap(Me.ClientSize.Width, Me.ClientSize.Height) : g = Graphics.FromImage(Bmp)
p.X = 0 : p.Y = 0 : q = Me.PointToScreen(p) : x = q.X : y = q.Y
g.CopyFromScreen(x, y, 0, 0, Me.ClientSize)
Bmp.Save(ChmS)
End Sub

Private Sub Tps_Tick(sender As Object, e As System.EventArgs) Handles Tps.Tick
RécupérerVueAjustée()
Tps.Stop()
End Sub

End Class

Cordialement.
0
Rejoignez-nous