When exporting a document that contains a Widget created with FixedContentEditor an exception is thrown: System.ArgumentNullException: 'Value cannot be null. Parameter name: context'
It can be reproduced using the following code snippet:
RadFixedDocument document = new RadFixedDocument();
var page = document.Pages.AddPage();
FixedContentEditor editor = new FixedContentEditor(page);
PushButtonField pushButton = new PushButtonField("button");
editor.Position.Translate(20, 450);
editor.DrawWidget(pushButton, new Size(100, 20));
string path = "Exported.pdf";
File.Delete(path);
using (Stream output = File.OpenWrite(path))
{
PdfFormatProvider provider = new PdfFormatProvider();
provider.Export(document, output);
}document.AcroForm.FormFields.Add(pushButton);
From the PDF Specification: "An ink annotation represents a freehand “scribble” composed of one or more disjoint paths. When opened, it displays a pop-up window containing the text of the associated note."
Such fonts are:
Cell borders are not set when the border is set on the table:
<table border="1">
Currently RadFixedDocumentInfo is used only for export of Author, Title and Description document metadata properties. This should be extended to support custom properties. We should also implement the import of RadFixedDocumentInfo.
Currently, for .NET Framework scenarios, this could be achieved using RadPdfViewer's WPF control ThumbnailFactory class. Sample code may be seen at this forum post: http://www.telerik.com/forums/pdf-thumbnail-returns-transparent-images#jO33X-E8Cki_qLh_KsToWg.
The feature should be implemented for .NET Standard as well.
Provide API or mechanism for reusing the already embedded fonts instead of creating a new one when editing an existing document.
This causes an issue in adobe preflight (font name is not unique).
The issue is observed when performing merge with RadFixedDocument as well.
ImageSource imageSource = new ImageSource(new MemoryStream(this.ConvertWmfImageToPng(stream)));document.Pages.AddPage().Content.AddImage(imageSource);...private byte[] ConvertWmfImageToPng(Stream wmfImageStream){ byte[] pngBytes; using (MemoryStream pngImageStream = new MemoryStream()) { System.Drawing.Image imageDrawing = System.Drawing.Image.FromStream(wmfImageStream); imageDrawing.Save(pngImageStream, System.Drawing.Imaging.ImageFormat.Png); pngBytes = pngImageStream.ToArray(); } return pngBytes;}Hidden fields with pushButton widget become visible when using FlattenFormFields method to flatten fields.
Workaround: do not flatten fields if the IsHidden property of any of its Widget's is set to True:
var fieldsList = formFields.ToList();
for (int i = 0; i < fieldsList.Count; i++)
{
var field = fieldsList[i];
bool flattenCurrentField = true;
if (field.FieldType == FormFieldType.PushButton)
{
PushButtonField pushButtonField = (PushButtonField)field;
PushButtonWidget[] widgets = pushButtonField.Widgets.ToArray();
foreach (var widget in widgets)
{
var baseType = typeof(PushButtonWidget).BaseType.BaseType.BaseType;
PropertyInfo[] properties = baseType.GetProperties(BindingFlags.NonPublic | BindingFlags.Instance);
PropertyInfo isHidden = properties.FirstOrDefault(p => p.Name == "IsHidden");
bool value = (bool)isHidden.GetValue(widget);
if (value == true)
{
flattenCurrentField = false;
break;
}
}
}
if (flattenCurrentField)
{
document.AcroForm.FlattenFormField(field);
}
}