Skip to content

Commit 9f62a81

Browse files
authored
Merge pull request ststeiger#310 from ascott18/patch-1
Implement missing XForm.Finish() method
2 parents ddf452b + caf0757 commit 9f62a81

File tree

1 file changed

+26
-1
lines changed

1 file changed

+26
-1
lines changed

PdfSharpCore/Drawing/XForm.cs

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,31 @@ protected override void Dispose(bool disposing)
177177
/// </summary>
178178
internal virtual void Finish()
179179
{
180+
if (_formState == FormState.NotATemplate || _formState == FormState.Finished)
181+
return;
182+
183+
if (!(_formState == FormState.Created || _formState == FormState.UnderConstruction))
184+
{
185+
throw new InvalidOperationException("Expected the form to be Created or UnderConstruction");
186+
}
187+
188+
_formState = FormState.Finished;
189+
Gfx.Dispose();
190+
Gfx = null;
191+
192+
if (PdfRenderer != null)
193+
{
194+
//pdfForm.CreateStream(PdfEncoders.RawEncoding.GetBytes(PdfRenderer.GetContent()));
195+
PdfRenderer.Close();
196+
197+
if (_document.Options.CompressContentStreams)
198+
{
199+
_pdfForm.Stream.Value = Filtering.FlateDecode.Encode(_pdfForm.Stream.Value, _document.Options.FlateEncodeMode);
200+
_pdfForm.Elements["/Filter"] = new PdfName("/FlateDecode");
201+
}
202+
int length = _pdfForm.Stream.Length;
203+
_pdfForm.Elements.SetInteger("/Length", length);
204+
}
180205
}
181206

182207
/// <summary>
@@ -437,4 +462,4 @@ string IContentStream.GetFormName(XForm form)
437462
internal XGraphicsPdfRenderer PdfRenderer;
438463

439464
}
440-
}
465+
}

0 commit comments

Comments
 (0)