Hallo!
Wir haben folgendes Problem:
Mit dem LiveCycleDesigner von Adobe haben wir eine PDF erstellt und möchten diese nun mit dem Tool füllen und ausdrucken.
WENN wir im LiveCycleDesigner z.B. einem Textfeld einen Namen geben und diesen auch demensprechend über das Programm ansprechen, dann füllt er zwar das Textfeld, macht aber sämtliche Text raus...
Machen wir den Namen oder die Namen raus und sprechen diese nicht mehr über das Tool an, dann zeigt er uns wieder alles normal an, füllt aber natürlich dann keine Felder mehr...
Habt ihr da eine Idee?
Kennt jemand das Problem?
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:
| procedure Tfrm_mdi_uebersicht.cmd_druckenClick(Sender: TObject); var i_Anz, i, j: integer; sl_PDF: TStringList; s_PDFFeld: string; pdf_feld: TgtPDFFormField; begin for I := 0 to fg_anzeigen.F_RowCount -1 do begin if trim(fg_anzeigen.GetCellText(col_drucken, i)) = 'J' then begin sl_PDF := TStringList.Create; sl_PDF.Delimiter := '|'; sl_PDF.QuoteChar := '°'; sl_PDF.StrictDelimiter := true; cmd_Drucken.Enabled := false;
Erstelle_PDFSList( sl_PDF, -1, 'firma', 'TestFirma');
PDF.LoadFromFile('Vorlagen\test.pdf'); i_anz := PDF.GetFormFieldCount; if i_Anz> 0 then begin pdf_Feld := PDF.GetPDFFormField( 1); s_pdfFeld := pdf_Feld.FieldName; if Pos('[0]', s_PDFFeld) > 0 then begin for j:=0 to sl_PDF.Count -1 do begin sl_PDF.Strings[j] := sl_PDF.Names[j] + '[0]' + '=' + sl_PDF.ValueFromIndex[j]; end; end; end;
sl_PDF.Free; PDFView.PDFDocument := PDF; PDFView.Active := true; PDFPrint.PDFDocument := PDF; PDFPrint.PrintDoc; PDFView.Active := False;
cmd_Drucken.Enabled := true; end; end; end;
procedure Erstelle_PDFSList( var sl: TStringList; i_nr: integer; s_Name, s_Wert: string); var i_Pos: integer; begin while Pos('''', s_wert) > 0 do begin i_Pos := Pos('''', s_wert); system.delete( s_Wert, i_Pos, 1); system.insert( sl.QuoteChar, s_Wert, i_Pos); end; if i_Nr >= 0 then s_Name := s_Name + IntToStr( i_Nr); if sl.Count = 0 then sl.DelimitedText := s_Name + '='+ s_Wert else sl.DelimitedText := sl.DelimitedText + sl.Delimiter + s_Name + '=' + s_Wert; end; |
Versteht ihr das Problem?