Seite 1 von 1

xml-Daten in pdf_Formulare importieren (iTextSharp o.ä.)

Verfasst: 09.12.2012, 17:48
von mischma
SORRY: meine natürlich den LCD ES2!!!

Hallo,

ich habe ein dynamisches PDF-Template erstellt und möchte nun mehrere hundert xml-Datendateien in dieses Template importieren.

Nach dem Import einer einzelnen xml-Datei möchte ich das ausgefüllte PDF mit jeweils neuen Namen abspeichern.

Das erweiterten Readerrechte im Template sollen in den ausgefüllten PDF-Dateien auch zur Verfügung stehen.

Bei meiner Recherche im Netz fand ich einige Beispiele in C# oder Java, die aber nicht den xml-Import behandelten.

Vielleicht hat jemand von Euch bereits Erfahrung damit und kann mir weiterhelfen.

Vielen Dank und Grüsse, Mike


xml-Daten in pdf_Formulare importieren (iTextSharp o.ä.)

Verfasst: 14.12.2012, 09:47
von mischma
P.S. Mittlerweile kann ich per Microsoft VBA die XML-Dateien nacheinander in ein Muster-PDF importieren und das gefüllte PDF unter neuem Namen abspeichern.

Code: Alles auswählen

Option Explicit

Dim strDateien() As String

Sub Fill_PDF()
   Dim AcroFRM  As New AcroAVDoc, AcroPDF   As AcroPDDoc, jso As Object
   Dim sPath As String, sRawPDF As String
   Dim i As Integer
   
   sPath = ThisWorkbook.Path
   sRawPDF = sPath & "Template.pdf"
     
   GetFiles sPath & "xml", "xml"
   
   AcroFRM.Open sRawPDF, ""
   
   For i = LBound(strDateien) To UBound(strDateien)
      Set AcroPDF = AcroFRM.GetPDDoc
      Set jso = AcroPDF.GetJSObject
       
      jso.importXFAData sPath & "xml" & strDateien(i)
         
      AcroPDF.Save 0, sPath & "pdf" & Replace(strDateien(i), ".xml", ".pdf")
      AcroPDF.Close
   Next i
     
   AcroFRM.Close False
   
   Set jso = Nothing
   Set AcroPDF = Nothing
   Set AcroFRM = Nothing
End Sub

Sub GetFiles(sPath As String, sType As String)
   Dim lngAnzahl As Long
   Dim strDatei As String
   
   strDatei = Dir(sPath & "*." & sType)
   
   Do While Len(strDatei)
      lngAnzahl = lngAnzahl + 1
      ReDim Preserve strDateien(1 To lngAnzahl)
      strDateien(lngAnzahl) = strDatei
      strDatei = Dir
   Loop
End Sub
Der Import funktioniert nur, wenn die erweiterten Reader-Rechte deaktiviert sind.

Diese bräuchte ich jedoch, da das PDF speicherbar sein sollte.

Vielleicht hat jemand eine Idee...

Vielen Dank und Grüsse, Mike

xml-Daten in pdf_Formulare importieren (iTextSharp o.ä.)

Verfasst: 16.12.2012, 23:14
von mischma
Hallo,

was man alles im Netz findet :-)

So funktioniert es...

Code: Alles auswählen

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;

namespace WindowsFormsApplication1
{
    public partial class frm : Form
    {
        string sourcePDF = @"C:\Users\Mike\Desktop\Template.PDF";
        string filledPDF = @"C:\Users\Mike\Desktop\Resultat.PDF";
        string sourceXML = @"C:\Users\Mike\Desktop\13034325.xml";

        public frm()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            ImportXmlData(sourcePDF, filledPDF , sourceXML);
        }

        public void ImportXmlData(string sourcePDF, string filledPDF, string sourceXML)
        {           
            FileStream fs = new FileStream(filledPDF,FileMode.Create);
            PdfReader Reader = new PdfReader(sourcePDF);
            PdfStamper Stamper = new PdfStamper(Reader, fs, '\0', true); 

            Stamper.FormFlattening = false;
            Stamper.AcroFields.Xfa.FillXfaForm(sourceXML);           
            Stamper.Close();
            Reader.Close();
        }
    }
}