OPENPDF.NET

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 23 mai 2008 à 11:27
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 - 8 mars 2013 à 16:29
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/46727-openpdf-net

bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
8 mars 2013 à 16:29
Merci mais tout le mérite revient à NeO78.

La fonction LoadResString se trouve à la fin du fichier Resources.Designer.vb
Cependant elle disparaît si on met à jour la source par exemple avec VB2010 (développé en VB2008).
Il faut dans ce cas la rajouter manuellement (blocnote) après conversion.

Normalement les fichiers Resources sont gérés par l'IDE.
La fonction LoadResString était présente dans VB6 mais a disparu avec VB.Net. Il a donc fallu la réécrire.
Shaegal Messages postés 110 Date d'inscription vendredi 1 février 2008 Statut Membre Dernière intervention 12 mai 2021 1
8 mars 2013 à 13:33
Bonjour Bouv (et les autres),

Ta source est superbe et ça fait longtemps que je l'attendais.
Toutefois, j'ai un petit soucis:
My.Resources.LoadResString est inconnu. Il semble logique que ce soit un fichier String(). Mais qu'y'a-til dedans?
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
11 oct. 2011 à 17:10
KingFreeman >> 3 ans déjà... Le temps passe vite.
J'ai effectivement observé que les fichiers créés s'ouvrent sur la dernière page mais j'avoue ne jamais avoir cherché pourquoi. De plus je n'ai pas ouvert mon VB depuis au moins 1 an. Ce n'est pas mon métier et je n'ai plus beaucoup de temps. Je ne saurai donc t'aider. En revanche si tu trouves une solution exploitable, je suis preneur pour mettre à jour la source.
KingFreeman Messages postés 1 Date d'inscription lundi 8 janvier 2007 Statut Membre Dernière intervention 11 octobre 2011
11 oct. 2011 à 16:19
Merci bouv pour vette excellente source... J'aimerais savoir par contre s'il serait possible de se positionner sur la première page du document pdf lorsque ce doc comporte plusieurs pages. Par défaut et c'est un peu génant à l'utilisation, lorsque tu crées un doc de plusieurs pages et que tu l'ouvres après download tu arrives toujours sur la dernière page générée, la première serait plus pratique... Merci pour vos réponses si réponses il y aura vu que le source a été posté il y a 3 ans déjà ;-)).
drof Messages postés 28 Date d'inscription mardi 7 novembre 2006 Statut Membre Dernière intervention 30 août 2011
30 août 2011 à 15:04
Superbe source! La plus simple à mettre en place que j'ai trouvée à l'heure actuelle...
Un grand merci à bouv.
cs_sackounet Messages postés 1 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 16 octobre 2010
16 oct. 2010 à 19:31
Excellent travail !!! Merci à Neo et à toi.
cs_hajarette Messages postés 6 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 20 septembre 2010
2 sept. 2010 à 13:35
merciiiiiiiiiiiiiiiiiiiii bouv
guilleto Messages postés 256 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 20 mars 2013 1
25 août 2010 à 09:09
Merci,
C'était ça !
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
24 août 2010 à 23:25
Il faut également copier les resources fournies dans le nouveau projet.

Cdt
guilleto Messages postés 256 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 20 mars 2013 1
24 août 2010 à 15:10
Bonjour à toutes et tous,

Je viens de trouver cette source qui fonctionne très bien avec l'exemple fourni.

Cependant, dès que j'essaie d'intégrer cet élément à mon programme, plus rien ne fonctionne, j'ai une erreur sur cette ligne :
Dim sFont As String = My.Resources.LoadResString(ArrFontAFM(ID).ID)
et de même si je la remplace par celle-ci :
Dim sFont As String = My.Resources.ResourceManager.GetString(ArrFontAFM(ID).ID)

La variable sFont retourne Nothing !!!

Pourquoi n'ai-je pas la même chose que sous le programme exemple ?

Par avance merci

Olivier
Tenerezu Messages postés 4 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 22 août 2010
22 août 2010 à 09:21
Bonjour,

Je viens de télécharger cette source et sur VB 2010 express, le LoadResString ne passe pas non plus. Par contre la solution de Sparknet fonctionne très bien. A retenir.

Très bon boulot,

@+
cs_bidouille007 Messages postés 257 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 22 décembre 2012 1
16 août 2009 à 23:56
Intéressant comme source mais ce que je recherche c'est le moyen d'afficher du PDF dans un logiciel fait en VB NET sans utiliser ADOBE ou tout autre viewer.

Je me demande si cela existe ? un lien me ferait très plaisir
yjulien88 Messages postés 20 Date d'inscription vendredi 22 décembre 2006 Statut Membre Dernière intervention 8 mars 2010
25 juin 2009 à 10:43
Très bonne source.
Fonctionne parfaitement.
10/10
Nikkobass Messages postés 1 Date d'inscription mercredi 1 août 2007 Statut Membre Dernière intervention 17 mars 2009
17 mars 2009 à 10:25
Salut,

tout d'abord félicitation pour ta source!
Je rencontre toutefois un ptit problème: j'aurais besoin d'ouvrir une image bmp, et il me semble que le format n'est pas supporté. Le pb, cest que quand je change le format de l'image en jpg grace à "Image.Save(_path, System.Drawing.Imaging.ImageFormat.Jpeg)", sa qualité devient vraiment dégueulasse!
Quelqu'un aurait une idée sur la facon de passer à un format jpg de meilleure qualité?
FrTeurynome Messages postés 7 Date d'inscription samedi 28 décembre 2002 Statut Membre Dernière intervention 6 février 2009
6 févr. 2009 à 14:04
Ok, je te remercie pour le tuyau, je vais fouiller un peu, je posterais la solution si je la trouve :)
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
6 févr. 2009 à 12:13
Bien joué !
Cela fait longtemps que je ne me suis pas penché sur cette source, mais je me souviens avoir eu le problème.
Il peut notamment survenir si tu a renommer le nom des polices pour les harmoniser.
Sinon je vois pas.
FrTeurynome Messages postés 7 Date d'inscription samedi 28 décembre 2002 Statut Membre Dernière intervention 6 février 2009
6 févr. 2009 à 11:53
Du nouveau de mon côté, j'ai enfin réussi à convertir l'ensemble pour VB .net 2003, cela fonctionne presque parfaitement. Il subsiste un problème.
Lorsque je génère le pdf et que je l'ouvre, j'ai droit à un petit message m'annonçant fièrement que le /BBox de la police TimesItalic est érroné. hors j'ai fais un peu le tour des .afm sur le web, et je n'ai décelé aucune différence dans les BBox :/

Des idées ?

again: Très beau boulot cette source !
poy20 Messages postés 40 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 19 janvier 2009
19 janv. 2009 à 09:39
Bon finalement j'ai trouvé, le caractère vbcrlf est en fait sur deux caractères.
Dans PDFCell, j'ai donc modifié :

While i <= lText

Dim sCar As String = Mid(sText, i, 1)

Dim RetourLigne As Boolean = False
Try
If sCar & Mid(sText, i + 1, 1) = vbCrLf Then
RetourLigne = True
End If
Catch ex As Exception

End Try

If RetourLigne Then 'sCar = vbCrLf Then
sPDFBorder = bBorder1

PDFCell2(Mid(sText, j, i - j), Xpos, yPos, tWidth, H)
yPos = dCurrentY

bMulti = True

....
poy20 Messages postés 40 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 19 janvier 2009
19 janv. 2009 à 09:17
Pour avoir une estimation correcte de la largeur max, j'ai utilisé ce calcul dans PDFCell():
Dim WidthMax As Double = (W - 2 * mPDFCellMargin) * 28.6 / PDFFontSize

Par contre lors d'un appel de PDFCell, comment faire pour envoyer un texte avec des retours à la ligne ??
Par exemple PDFCell("test" & vbcrlf & "retest", 5,5,45,4)
vbcrlf -> marche pas
vbnewline -> marche pas
???

Merci !
poy20 Messages postés 40 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 19 janvier 2009
15 janv. 2009 à 09:11
Superbe source ! Merci à toi et à Néo ! 10/10

Je pense qu'il y a une petite erreur sur l'estimation de la largeur max de cellule lors d'un appel de PDFCell.
Je crois que cela est dû au fait que j'ai choisit le mm comme unité.
Dans ce cas la largeur est sous estimée.

J'essaie de résoudre proprement cela dès que j'ai un peu de temps, mais si qqu'un est dispo, qu'il n'hésite pas !!
FrTeurynome Messages postés 7 Date d'inscription samedi 28 décembre 2002 Statut Membre Dernière intervention 6 février 2009
12 janv. 2009 à 14:43
Parce que malheureusement j'ai une version imposée dans le cadre de mon boulot :/

Sinon en effet, s'eût été la solution la plus simple et la plus logique. Mais pourquoi faire simple... comme on dit :)
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
12 janv. 2009 à 14:36
Tout d'abord merci.

Sinon, tu n'es pas le seul à avoir des problèmes de compatibilité.
Mais pourquoi ne pas télécharger gratuitement VB2008 Express ?

Bonne prog
++
FrTeurynome Messages postés 7 Date d'inscription samedi 28 décembre 2002 Statut Membre Dernière intervention 6 février 2009
12 janv. 2009 à 14:06
Une source qui à l'air vraiment au top, correspond exactement à ce dont j'ai besoin mais pauvre de moi, je suis sous VB 2003, du coup j'ai des soucis avec les LoadResString :/

Damned !

Mais en dehors de ça, je colle quand même la notre maximale !

Problèmes sous VB2003 au cas ou une âme charitable passerait dans le coin ;) :

Dim sLines() As String = Split(My.Resources.LoadResString(ArrFontAFM(ID).ID), vbCrLf)
etsPathConfiguration My.Application.Info.DirectoryPath> Ok en remplaçant par Application.StartupPath
et
Dim sFont As String = My.Resources.LoadResString(ArrFontAFM(ID).ID)
Sparknet Messages postés 2 Date d'inscription vendredi 22 décembre 2000 Statut Membre Dernière intervention 24 décembre 2008
24 déc. 2008 à 12:44
Salut à vous,

aymeric53, essais avec:
My.Resources.ResourceManager.GetString(...)
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
23 déc. 2008 à 21:26
Salut,
La source a été développée avec VB 2008 Express.
Je ne sais pas si elle fonctionnera en VB 2005.
Tu peux cependant télécharger gratuitement la version VB 2008 Express.

Bonne prog
++
aymeric53 Messages postés 7 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 23 décembre 2008
23 déc. 2008 à 17:29
Salut,
Trés bon travail !!!

J'ai juste une petite question,
comment puis je utiliser cette source sur visual studio 2005.

La ligne My.Resources.LoadResString(...) ne passe pas.
Comment intégrer les ressources?

Merci d'avance
++
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
26 nov. 2008 à 08:18
Salut,
Désolé pour YI013587, j'ai zapper sa question, je réponds donc à vous deux en même temps.

La police doit être au format AFM (Adobe Font Metrics) ou ATM (Adobe Type Manager). Dans mon exemple seules des polices de type AFM sont fournies.
Pour en ajouter de nouvelles, il faut :
- en trouver sur le net et les télécharger
- les ajouter en ressource
- adapter la partie du code qui y fait appel

Si vous avez des fichiers AFM ou ATM sous la main, je peux éventuellement faire la MAJ du code afin que tout le monde en bénéficie. Dans ce cas envoyez moi un MP pour obtenir mon adresse email.

Bonne prog
++
Sparknet Messages postés 2 Date d'inscription vendredi 22 décembre 2000 Statut Membre Dernière intervention 24 décembre 2008
26 nov. 2008 à 02:09
Bonjour, BOUV

trés bon travail en effet,

Mais comme YI013587, J aurais aimé savoir comment peut-on ajouter de nouvelle police.

Merci,
YI013587 Messages postés 2 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 10 octobre 2008
10 oct. 2008 à 12:01
Bonjour bouv.

Merci pour ce travail remarquable.

Je voudrais utiliser d'autres polices, par exemple la police Arial. J'ai vu que toutes les polices étaient décrites dans tes "Resources". Comment trouver la "Valeur" à inscrire en regard du nom de la police que j'ajoute ?

Merci d'avance,
Gilbert
edethacom Messages postés 9 Date d'inscription jeudi 8 janvier 2004 Statut Membre Dernière intervention 20 octobre 2009
24 sept. 2008 à 04:48
Tres bonne source, je n'aurai pas a lire un livre sur itextsharp pour creer un pdf.

Qui ne trouve pas, n'a pas cherche!!!!!


thanks a lot
speyrard Messages postés 19 Date d'inscription dimanche 30 décembre 2007 Statut Membre Dernière intervention 3 mars 2012
2 sept. 2008 à 15:28
Trés bonne source et trés utile
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
6 juin 2008 à 14:03
Nouvelle MAJ concernant l'ajout d'image.
Que ce soit depuis un fichier ou depuis la class Image.

Le code devrait être encore un peu plus rapide, surtout avec les grosses images.

Mon PC est assez puissant, mais je me suis rendu compte que sur les PC plus humbles le temps d'ajout d'une image >= 300PPP pouvait devenir rédhibitoire.

C'est maintenant résolu.
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
26 mai 2008 à 15:41
Code MAJ,

On peut désormais ajouter un PDF depuis la class Image. Je suis passé par un MemoryStream.

'Pour ajouter depuis un fichier
PDFImage "CheminDuFichier.jpg"

'Exemple pour ajouter depuis la class image
PDFImage MaPictureBox.Image

Pour info, cette modification à eu quelques répercussions sur PDFParseJPG notamment.

J'en ai profité pour :

- Renommer les variables de la structure aIMG (in_1, in_2, in3... n'étaient pas très compréhensible)

- Modifier les fonctions PDFImageWidth et PDFimageHeight. A chaque fois que l'une d'elle était appelée, l'image était mémorisée dans un tableau. Désormais on renvoi la valeur souhaitée et on vide les données.

Bonne prog
++
forchi Messages postés 33 Date d'inscription lundi 21 juin 2004 Statut Membre Dernière intervention 24 mai 2008
24 mai 2008 à 10:51
Bravo source super intéressante.
Le seul problème que j'ai rencontré et que lorsque je veux ouvrir un fichier pdf existant, il me l'ouvre avec mon logiciel par défaut.
Sinon bien, je t'ai mis un 9/10.
A+
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
23 mai 2008 à 14:57
un stream, oui, ca sait faire
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
23 mai 2008 à 14:50
Je trouve pas comment faire sans passer par un fichier :-(

Dois-je passer par un Stream ? Si oui comment ? Dois-je le convertir en JPG avant ou après récupération ?
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
23 mai 2008 à 11:39
pour la conversion ? la classe Graphics gère cela au poil.
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
23 mai 2008 à 11:35
Merci pour le compliment.

Il reste cependant pas mal de choses à optimiser.

J'aimerais notamment implementer l'ajout d'image à partir d'une PictureBox avec consersion en JPG à la volée afin ne pas avoir à créé le fichier JPG sur le HD pour le supprimer ensuite.

Mais je sais pas trop par quel bout le prendre. Une idée ?
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
23 mai 2008 à 11:27
du bon boulot, bien joue mister
Rejoignez-nous