Hi everyone,
Using the pdfbox-1.8.13.dll and c#, i fill some forms of a xfa pdf file.
It works, a filled xfa pdf file is saved from my c# codes.
But when I use the 'Save as ...' for the filled xfa pdf file unders Adobe
Acrobat Reader.
The message "Adobe Acrobat Reader can just only save an empty copy of this
document. Print the modified document to keep a copy ..., blabla.." is
displayed.
Does anyone have an idea to resolve that.
Thanks in advance.
BuuNguyen
My codes to fill and save a xfa pdf file :
using (PDDocument doc = PDDocument.load(nomComplet))
{
try
{
doc.setAllSecurityToBeRemoved(true);
PDDocumentCatalog pdCatalog = doc.getDocumentCatalog();
PDAcroForm pdAcroForm = pdCatalog.getAcroForm();
PDXFA xfa = pdAcroForm.getXFA();
if (xfa != null)
{
// Remplir les valeurs dans la copie
COSBase cos = xfa.getCOSObject();
org.w3c.dom.Document w3c_xmldoc = xfa.getDocument();
// lire les noeuds contenants les champs PDF
List<Node> nodes =
ArpXfaPDFieldHelper.getElementsChampsPdfs(w3c_xmldoc, _mainSubformname, true);
if (nodes.IsNullOrEmpty() == false)
{
foreach (var g in dicosChamps.GroupBy(o =>
o.Key.NomChampPdf))
{
#region// Remplir d'un champs PDF Xfa à
partir d'un noeud org.w3c.dom.Node
// .....
#endregion
}
#region// enregistrer le document pdf rempli
String nomFichier =
Path.GetFileName(nomComplet);
String extension =
Path.GetExtension(nomComplet);
fichierRempli = nomComplet.Replace(nomFichier,
"") + nomFichier.Replace(extension, "") + "_rempli" + extension;
{
COSStream cosout = new COSStream(new
RandomAccessBuffer());
TransformerFactory.newInstance().newTransformer()
.transform(new
DOMSource(w3c_xmldoc), new StreamResult(cosout.createUnfilteredStream()));
pdAcroForm.setXFA(new PDXFA(cosout));
// Suppression des permissions afin de
pouvoir toujours modifier le formulaire PDF une fois rempli.
COSDictionary dico =
pdCatalog.getCOSDictionary();
if (dico.containsKey("Perms"))
{
COSDictionary permission =
dico.getDictionaryObject("Perms") as COSDictionary;
Boolean bUr3 =
permission.containsKey("UR3");
if (bUr3)
{
permission.clear();
}
}
doc.save(fichierRempli);
}
#endregion
}
}
}
catch (Exception ex)
{
throw new MetierException(ex.Message);
}
finally
{
doc.close();
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]