Autor Beitrag
HotCoffee
Hält's aus hier
Beiträge: 14

Suse Linux 11, Win Xp SP 3, Win 2000, Win 98,

BeitragVerfasst: So 25.07.10 14:53 
Hallo,
ich arbeite grade an nem kleinen Progrämmchen, ich hab nicht sonderlich viel Ahnung, daher hoffe ich, dass ihr mir hier mal ein bischen helfen könnt...
Also Folgendes:
Ich hab hier einige Daten und diese in ner Datei Gespeichert, ich möchte jetzt gerne die einzelnen Verbundvariablen auslesen und deren Daten in nem PDF-Dokument ausgeben. Meine Idee bis jetzt war, die Daten in ein Image zu schreiben und das dann via PowerPDF zu speichern.
Beispiel:
In der Datei steht:
Alex; 16;
Maik; 18;
Kai; 36;
Ich lese die einzelnen Daten aus und schreibe nacheinander in ein Image, so dass da steht:
Name | Alter
--------------------
Alex | 16
Maik | 18
Kai | 36
So und das würde ich dann gerne so als PDF ausgeben. Da entsteht Problem Nr.1 ich blicke bei PowerPDF nich durch, daher hab ich mir das Beispiel genommen, wo ein Bild über ein Formular geöffnet wird und als PDF ausgegeben wird und hab die Unit so verändert, dass nurnoch das Image geöffnet wird, an das Dok angehängt und speichert. Dummerweise funktioniert es nichtmehr. Es wär sehr lieb, wenn mir hier mal jemand zeigen könnte, wie man das richtig macht, also Image ans PDF anhängen und speichern.
Zu Problem Nr.2, es wär natürlich schöner, wenn das was ja Text ist im PDF auch hinter noch Text ist und nicht Bild. Also wenn jemand da ne Idee hat und die möglichst ohne irgendwelche externen Programme geht und ohne Ausgabe über Drucker... etc... würd ich mich sehr freuen ;)
LG
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Mi 28.07.10 10:44 
:welcome:

Guckst du hier:
www.est.hi-ho.ne.jp/...eshi_kanno/powerpdf/

In dem Downloadarchiv (.zip) gibt es einen Ordner mit Beispielen. Dort müsste sich sicher was finden lassen (FontDemo z.B). Konnte es nicht ausprobieren, er meckert hier wieder um "Klasse nicht gefunden" obwohl die Unit eingebunden ist, in der die Klasse ist.

Komponenten in Delphi installieren :autsch: und dann auch noch die Bug-Version von 2005 ;) Muss ich jetzt nicht haben, ich denke mal dort findest du schon selbst was du brauchst.

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
HotCoffee Threadstarter
Hält's aus hier
Beiträge: 14

Suse Linux 11, Win Xp SP 3, Win 2000, Win 98,

BeitragVerfasst: Mi 28.07.10 11:54 
Moderiert von user profile iconNarses: Komplett-Zitat des letzten Beitrags entfernt.

erstmal Danke,
wie ich oben bei mir schon erwähnt habe, ich habe PowerPdf schon und habe auch die Beispiele schon gesehen. Ein Beispiel erzeugt ein Formular, mit welchem man ein Bild laden kann und speichert das als PDF ab. Das Problem ist, ich verstehe nicht, wie es das tut. Wenn ich versuche, aus dem Beispiel eine Procedur zu basteln, die nachdem ein PDF erstellt wurde ein Bild als neue Seite anhängt und man es danach speichern kann, klappt das leider garnicht... und da wär es nett, wenn jemand, der da mehr durchblickt - und davon gibt es hier ja ne menge - mir helfen könnte.
platzwart
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: Mi 28.07.10 12:26 
Kannst du den entsprechenden Teil des Sourcecodes von dir und vom Beispiel hier zeigen? Hat sicherlich nicht jeder Lust, sich irgendwelche Kompos runterzuladen und zu installieren...

_________________
Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
HotCoffee Threadstarter
Hält's aus hier
Beiträge: 14

Suse Linux 11, Win Xp SP 3, Win 2000, Win 98,

BeitragVerfasst: Mi 28.07.10 18:57 
Also, momentan erstelle ich aus den Daten ein Bild und versuche das dann über folgende Unit in ein PDF zu verwandeln, was aber nicht klappt, das PDF wird mit der richtigen Seitenanzahl erstellt, leider sind alle Seiten leer.

ausblenden volle Höhe Delphi-Quelltext
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:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
unit mImgToPdf;

interface

uses
  SysUtils, Classes,
  PReport, ExtCtrls, StdCtrls, Buttons, PRJpegImage, PdfDoc, ShellApi, Graphics;

type  TImgToPdf=class(TComponent)

private
PRPage: TPRPage;
PRLayoutPanel: TPRLayoutPanel;
PRJpegImage: TPRJpegImage;
PReport: TPReport;
public
constructor Init;
function    AddPage (APicture  : TPicture) : Boolean;
procedure PRPagePrintPage(Sender: TObject; ACanvas: TPRCanvas);
destructor  SaveClose(FileName: String);

end;
VAR
  Owner : TImgToPdf;

implementation

constructor TImgToPdf.Init;
begin
  PReport :=  TPReport.Create(Owner);
  PRPage  :=  TPRPage.Create(Owner);
  PRLayOutPanel  :=  TPRLayoutpanel.Create(PRPage);
  PRJpegImage  :=  TPRJpegImage.Create(PRLayoutPanel);
  PRJpegImage.Stretch:=True;
  PReport.BeginDoc;
  PRPage.OnPrintPage:=PRPagePrintPage;

end;

procedure TImgToPdf.PRPagePrintPage(Sender: TObject; ACanvas: TPRCanvas);
VAR Dest: TPRDestination;
begin

    Dest := PReport.CreateDestination;
  with Dest do
    begin
      DestinationType := dtXYZ;
      Left := -10;
      Top := -10;
      Zoom := 1;
    end;
    PReport.OpenAction := Dest;

end;

function    TImgToPdf.AddPage (APicture  : TPicture) : Boolean;
begin
  try

    PRJpegImage.Picture:=APicture;
    PrJpegImage.Repaint;
    PReport.Print(PRPage);
    result:=True;
  except
    result:=False;
  end;
end;
destructor  TImgToPdf.SaveClose(FileName: String);
begin
  PReport.FileName:=Filename;
  PReport.EndDoc;
end;


end.


Die Beispiel-Unit von PowerPDF sieht so aus: popcomp.no-ip.info:6...ageExample/Unit1.pas


Zuletzt bearbeitet von HotCoffee am Mi 28.07.10 18:59, insgesamt 1-mal bearbeitet
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: Mi 28.07.10 18:59 
Vielleicht ist das hier was für dich: www.delphi-library.d...ight=pdf+ghostscript
HotCoffee Threadstarter
Hält's aus hier
Beiträge: 14

Suse Linux 11, Win Xp SP 3, Win 2000, Win 98,

BeitragVerfasst: Mi 28.07.10 19:53 
user profile iconJakob_Ullmann hat folgendes geschrieben Zum zitierten Posting springen:
Vielleicht ist das hier was für dich: www.delphi-library.d...ight=pdf+ghostscript

... eher nicht, da ich ja unabhängig von irgendwelchen externen Programmen sein möchte.
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Do 29.07.10 09:30 
Hallo,

zur Erstellung von PDFs direkt aus meinen Delphi-Programmen(auch D 3) nutze ich Tnpdf um Text als Text und Bilder in PDFs zu speichern.
tnpdf ist nicht sehr umfangreich aber gerade das ist ja manchmal ein Vorteil.
Das Arbeiten mit tnpdf ist ähnlich der Druckausgabe mit Printer, ein Demo-Beispiel gibt es auch dazu.
Link zu tnpdf: Nishita's PDF Creation VCL

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Do 29.07.10 10:04 
user profile iconHotCoffee hat folgendes geschrieben Zum zitierten Posting springen:
Ein Beispiel erzeugt ein Formular, mit welchem man ein Bild laden kann und speichert das als PDF ab.

Aso, ja, das hatte ich mal bei nem Reportgenerator. Der hat alles auf ein Canvas gemalt, aber als PDF gedruckt war es dann doch wieder Schrift (und kein Bild).

user profile iconHotCoffee hat folgendes geschrieben Zum zitierten Posting springen:
Also, momentan erstelle ich aus den Daten ein Bild und versuche das dann über folgende Unit in ein PDF zu verwandeln, was aber nicht klappt, das PDF wird mit der richtigen Seitenanzahl erstellt, leider sind alle Seiten leer.

Das ist logisch (denk ich zumindest).

Edit: Jetzt find ichs nichtmehr so logisch nachdem ich deinen Code nochmal angeguckt hab :mrgreen: Ich hab mal die ganze Sülze die ich geschrieben hatte wieder gelöscht :P

Also:
PowerPDFRef.pdf hat folgendes geschrieben:
TPRJpegImage properties
property Align: TAlign;
Determines how the control aligns within its container (or parent control).
property Printable: boolean;
Determines whether the control will be printed or not.
property Picture: TPicture;
Specifies the image that appears on the control. Only TJpegImage is allowed

Ist printable auf true? Vermutlich.
Aber: Du verwendest TPicture statt TJPEGImage. Ob das ne Auswirkung hat, keine Ahnung, aber wenns schon so da steht. Jetzt ist TJPEGImage glaub ich kein TPicture...hmm, TGraphic. Guck einfach nochmal ob du auch nen JPG verwendest :nixweiss:

Aber: da gibts auch tolle Sachen wie TPRLabel und TPRText, ist vielleicht besser für deine Variablen. Probiers mal damit.

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
HotCoffee Threadstarter
Hält's aus hier
Beiträge: 14

Suse Linux 11, Win Xp SP 3, Win 2000, Win 98,

BeitragVerfasst: Sa 31.07.10 02:42 
user profile iconXion hat folgendes geschrieben Zum zitierten Posting springen:

Guck einfach nochmal ob du auch nen JPG verwendest :nixweiss:

... ja, ist ein JPG...
user profile iconXion hat folgendes geschrieben Zum zitierten Posting springen:

Aber: da gibts auch tolle Sachen wie TPRLabel und TPRText

...dummerweise wird die ganze Kiste dadurch dann nurnoch komplizierter. Es wär natürlich schön nur denk ich, dass mir das dann doch zu viel Arbeit für so ne Kleinigkeit ist. Es würd mir schon reichen, wenn mir irgendwer n Tip geben kann, wie ich es schaffen kann, dass das Bild dann auch hinterher da ist ;)
platzwart
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: Sa 31.07.10 11:49 
user profile iconHotCoffee hat folgendes geschrieben Zum zitierten Posting springen:

... ja, ist ein JPG...


... aber ist auch ein TJpegImage?!?

_________________
Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
HotCoffee Threadstarter
Hält's aus hier
Beiträge: 14

Suse Linux 11, Win Xp SP 3, Win 2000, Win 98,

BeitragVerfasst: Sa 31.07.10 14:01 
user profile iconplatzwart hat folgendes geschrieben Zum zitierten Posting springen:

... aber ist auch ein TJpegImage?!?

ja... das lässt sich ja Testweise einfach sicherstellen, mit
ausblenden Delphi-Quelltext
1:
PRJpegImage.Picture.LoadFromFile('C:/Test.jpg');					

oder?
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Sa 31.07.10 18:01 
Jo, klingt logisch.

Funktioniert denn die angehängte Beispielunit von dir? Dann würd ich gaaaanz langsam einfach eins nach dem andern ändern und gucken, ab wann es nichtmehr geht. Dort liegt dann das Problem. Zu der Unit gehört übrigens noch eine .dfm Datei mit den Daten, was auf der Form liegt.

Wenn du dann erstmal die Stelle hast wo der Fehler auftritt (bzw ab dem es nicht mehr funktioniert), dann können wir vermutlich eher weiterhelfen. Notfalls müsste man sich dann mal den SourceCode der Komponente an der Stelle angucken.

user profile iconHotCoffee hat folgendes geschrieben Zum zitierten Posting springen:

user profile iconXion hat folgendes geschrieben Zum zitierten Posting springen:

Aber: da gibts auch tolle Sachen wie TPRLabel und TPRText

...dummerweise wird die ganze Kiste dadurch dann nurnoch komplizierter.

Ja...vielleicht. Aber du könntest damit mal gucken, ob ein Label gedruckt wird. Wenn das Label angezeigt wird aber das Bild nicht, wäre man schon wieder schlauer. Außerdem ist bei dem Bild das Problem, dass es gedruckt ne miese Qualität geben wird und die pdf-Datei auch unnötig groß ist.

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
HotCoffee Threadstarter
Hält's aus hier
Beiträge: 14

Suse Linux 11, Win Xp SP 3, Win 2000, Win 98,

BeitragVerfasst: Sa 31.07.10 18:36 
user profile iconXion hat folgendes geschrieben Zum zitierten Posting springen:
Jo, klingt logisch.
Aber du könntest damit mal gucken, ob ein Label gedruckt wird.

Auch ein Label wird nicht gedruckt. Grade das Formular ist ja das Problem, wenn ich alles was in der Beispielunit in einzelnen Diensten getan wird auch in dieser zu einem zusammenfasse, dann klappt alles noch. Wenn ich dann aber alles genauso in einer anderen Unit mache und diese dann wieder in ein Programm einbinde, dann funktioniert es nichtmehr.
Die Sache ist ja, ich will die Reports, Labels und Images nicht auf einem Formular haben, sondern ich will nur die Funktionen nutzen, also PDF erzeugen, Bild als Seite anhängen und abspeichern.
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Sa 31.07.10 20:27 
Poste mal die dfm Datei zu der Beispielunit.

Der Code in der Datei sieht ungefähr so aus:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
 {...} 
  object Label2: TLabel
    Left = 104
    Top = 584
    Width = 164
    Height = 13
    Anchors = [akLeft, akBottom]
  end
{...}


Daraus könnte man dann erkennen, welche Werte du bei der dynamischen Erstellung angeben musst.

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
HotCoffee Threadstarter
Hält's aus hier
Beiträge: 14

Suse Linux 11, Win Xp SP 3, Win 2000, Win 98,

BeitragVerfasst: Sa 31.07.10 20:52 
Ich weiß schon wie die aussieht :D
Die .dfm Datei ist auf der gleichen Seite zu finden, wie oben schon erwähnt:

Moderiert von user profile iconNarses: Anhang hochgeladen.
Einloggen, um Attachments anzusehen!
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Sa 31.07.10 22:03 
ausblenden volle Höhe Delphi-Quelltext
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:
  object ScrollBox1: TScrollBox
    Left = 0
    Top = 29
    Width = 760
    Height = 575
    Align = alClient
    Color = clGray
    ParentColor = False
    TabOrder = 1
    object PRPage1: TPRPage
      Left = 14
      Top = 14
      Width = 700
      Height = 873
      OnPrintPage = PRPage1PrintPage
      MarginTop = 32
      MarginLeft = 32
      MarginRight = 32
      MarginBottom = 20
      object PRLayoutPanel1: TPRLayoutPanel
        Left = 33
        Top = 55
        Width = 634
        Height = 797
        Align = alClient
        object PRJpegImage1: TPRJpegImage
          Left = 16
          Top = 6
          Width = 603
          Height = 780
          SharedImage = True
        end
      end
    end
  end
  object PReport1: TPReport
    FileName = 'JpegImageExample.pdf'
    Author = 'Takeshi Kanno'
    CreationDate = 37085.524204004630000000
    Creator = 'JpegImageExample'
    UseOutlines = False
    Left = 386
    Top = 6
  end


Was du machst:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
  PRLayOutPanel  :=  TPRLayoutpanel.Create(PRPage);
  PRJpegImage  :=  TPRJpegImage.Create(PRLayoutPanel);
  PRJpegImage.Stretch:=True;
  PReport.BeginDoc;
  PRPage.OnPrintPage:=PRPagePrintPage;


Ich hab ehrlich gesagt nicht ganz so den Durchblick wo der Haken ist. Ich hätte noch als Vermutung, dass deine Page ne größe von 0/0 hat...(eher abwegig)

Edit:
Ich bin auf jeden Fall dafür, dass du mal versucht ein Label zu drucken, damit man rauskriegt obs am Image oder am Drucken liegt. Danach würde ich schrittweise anfangen, die ganzen Werte wie sie in der DFM stehen auch beim dynamischen erstellen anzugeben, so sinnlos sie auch scheinen mögen. Auch das Teil mal auf ne ScrollBox platzieren. Vielleicht müsste auch das OnPrintPage VOR dem BeginDoc zugewiesen werden

Edit2:
Wenn dus noch nicht gemacht hast: Mach deine Funktion AddPage so, dass sie als Parameter den Dateinamen bekommt und dann in das Image über LoadfromFile reinläd.

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)