iTextSharp を使用して、次のコードを使用して XFA フォームで PDF に XML データを入力しています。バイトを PDF ファイルに書き出すと、それを開くことができ、XML 属性の文字が として&
表示されていることがわかります&
。
public static byte[] FillDynamicPdf(XElement templateXml, PdfReader reader)
{
using (var pdfStream = new MemoryStream())
using (var xmlStream = new MemoryStream())
{
templateXml.Save(xmlStream);
xmlStream.Position = 0;
using (var stamper = new PdfStamper(reader, pdfStream))
{
stamper.AcroFields.Xfa.FillXfaForm(xmlStream);
}
return pdfStream.ToArray();
}
}
ただし、結果のバイト配列で XFAFlattener (有料ライセンス) を使用する&
と、最終的な PDF に表示されます。私はかなりの範囲を検索しましたが、同じ問題や優れた API ドキュメントを投稿している人を見つけることができないようです。誰かが同じ問題を抱えていましたか?それはかなり一般的でなければならないようです。
これは、フラット化プロセスのコード スニペットです。この質問領域にうまく収まるように、コードから関連する行をコピーして貼り付ける必要があったため、構文エラーが発生している可能性があります。
byte[] pdfStream = getFormFilledPDFBytes();
var outputStream = new MemoryStream();
var document = new Document();
var writer = PdfWriter.GetInstance(document, outputStream);
var reader = new PdfReader(pdfStream);
var xfaf = new XFAFlattener(document, writer);
xfaf.Flatten(reader);
var flatPdf = outputStream.ToArray();