Bonjour,
Je suis occupé à convertir du html vers du pdf. Je ne dois plus être très loin de la solution mais je bloque.
je suis parti sur une lib du nom de synPDF avec Thtmlviewer pour la partie html.

J'ai déjà laissé un message sur le forum de synPdf mais il reste sans réponse.

Un exe est disponible sur cette page datant de 2010, il fonctionne bien.
Le code source devrait être sur le repository mais je ne le trouve plus.
J'ai fini par trouvé le code sur cette page mais je n'arrive pas à le faire fonctionner.

J'en suis arrivé à soit il me renvoie une erreur d'exécution soit il ne fait rien avec le code ci-dessous.
C'est la partie html qui bloque, sinon j'arrive à créer un pdf si je rajoute le texte 'This is some text.'
Aurriez-vous déjà utiliser cette lib ?

je suis sous delphi rio.

Merci et bonne journée
Bertrand
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
procedure TForm1.btn_tpdfDocumentClick(Sender: TObject);
var
  filename: string;
 
  // lPdf: TPdfDocument;
  lPdf: THtml2Pdf;
  lPage: TPdfPage;
 
  // html
  Fenetre: TForm;
  html: TStringList;
begin
  filename := 'D:\Delphi\pdf\synPdf\export\tpdfDocument.pdf';
 
  Fenetre := TForm.Create(nil);
  HTMLViewer := THTMLViewer.Create(Fenetre);
  Fenetre.InsertControl(HTMLViewer);
 
  html := TStringList.Create;
  html.LoadFromFile('D:\Delphi\pdf\synPdf\html\Doc_absence.print.html', TEncoding.UTF8);
  HTMLViewer.LoadFromString(html.Text);
 
  // lPdf := TPdfDocument.Create;
  lPdf := THtml2Pdf.Create;
  try
    lPdf.Info.Author := 'Tester';
    lPdf.Info.CreationDate := Now;
    lPdf.Info.Creator := 'Tester';
    lPdf.DefaultPaperSize := psA4;
    lPage := lPdf.AddPage;
 
    lPdf.Canvas.SetFont('Helvetica', 10.0, []);
    lPdf.Canvas.SetLeading(lPdf.Canvas.Page.FontSize);
    lPdf.Canvas.SetLineWidth(0.1);
 
    // lPdf.Canvas.BeginText;
    // lPdf.Canvas.TextOut(300, 700, 'This is some text.');
    // lPdf.Canvas.EndText;
 
    lPdf.MarginLeft := 1;
    lPdf.MarginTop := 1;
    lPdf.MarginRight := 1;
    lPdf.MarginBottom := 1;
    lPdf.ScaleToFit := True;
 
    lPdf.Viewer := HTMLViewer;
    lPdf.Execute;
 
    lPdf.SaveToFile(filename);
  finally
    lPdf.Free;
  end;
 
  HTMLViewer.Free;
  Fenetre.Free;
 
  ShellExecute(Handle, 'open', PChar(filename), '', '', SW_NORMAL);
end;