Я создаю приложение UWP (универсальное приложение для Windows 10) с C#/XAML. это приложение для выпуска модели / собственности. Итак, у меня есть следующий шаблон.
Нажмите здесь, чтобы увидеть шаблон
Я хочу сделать следующее с С#
Я уже пробовал syncfusion api для pdf, но по какой-то причине он не совместим с проектом UWP .NET CORE.
Пожалуйста, дайте мне знать, если есть какая-либо библиотека для этой задачи. Я буду очень признателен за любую помощь
Syncfusion Essential PDF для UWP также поддерживает .NET Core. Пожалуйста, попробуйте этот пример кода.
//Loading Pdf and image to stream
Stream jpegImage = typeof(MainPage).GetTypeInfo().Assembly.GetManifestResourceStream("templateForm.DataUWP.images.png");
Stream docStream = typeof(MainPage).GetTypeInfo().Assembly.GetManifestResourceStream("templateForm.DataUWP.Form.pdf");
PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream);
//Draw image
PdfImage img = new PdfBitmap(jpegImage);
loadedDocument.Pages[0].Graphics.DrawImage(img, new PointF(380, 90), new SizeF(100, 100));
//Get the loaded form.
PdfLoadedForm loadedForm = loadedDocument.Form;
PdfLoadedFormFieldCollection fieldCollection = loadedForm.Fields as PdfLoadedFormFieldCollection;
PdfLoadedField loadedField = null;
// Get the field using TryGetField Method and fill it.
if (fieldCollection.TryGetField("name", out loadedField))
{
(loadedField as PdfLoadedTextBoxField).Text = "John";
}
//Save the modified document.
MemoryStream streamOut = new MemoryStream();
loadedDocument.Save(streamOut);
//Close the document
loadedDocument.Close(true);
//Save document to file
Save(streamOut, "sample.pdf");
Библиотека XFINIUM.PDF поддерживает Windows 10 UWP.
В вашем шаблоне нет полей, поэтому я изменил его. Код для заполнения формы выглядит так:
private Assembly assembly = typeof(MainPage).GetTypeInfo().Assembly;
private async void btnFillDocumentTemplate_Click(object sender, RoutedEventArgs e)
{
Stream pdfStream = assembly.GetManifestResourceStream("UWP_FillDocumentTemplate.ModelReleaseTemplate.pdf");
PdfFixedDocument document = new PdfFixedDocument(pdfStream);
pdfStream.Dispose();
// Fill photographer info
document.Form.Fields["PhotographerName"].Value = "John Doe";
document.Form.Fields["PhotographerDateSigned"].Value = "09/03/2017";
document.Form.Fields["PhotographerShootDate"].Value = "08/03/2017";
document.Form.Fields["PhotographerShootCountry"].Value = "Italy";
document.Form.Fields["PhotographerShootDescription"].Value = "Tuscany";
// Draw photographer signature
DrawImageAtFieldLocation(document.Form.Fields["PhotographerSignature"].Widgets[0], "PhotographerSignature.png");
// Fill model info
document.Form.Fields["ModelName"].Value = "Jane Doe";
document.Form.Fields["ModelDOB"].Value = "01/01/1980";
document.Form.Fields["ModelGender"].Value = "Male";
document.Form.Fields["ModelAddress1"].Value = "via Romana no 1";
document.Form.Fields["ModelCity"].Value = "Rome";
document.Form.Fields["ModelState"].Value = "Rome";
document.Form.Fields["ModelCountry"].Value = "Italy";
document.Form.Fields["ModelZip"].Value = "12345";
document.Form.Fields["ModelPhone"].Value = "0123456789";
document.Form.Fields["ModelEmail"].Value = "jane.doe@nomail.com";
document.Form.Fields["ModelDateSigned"].Value = "09/03/2017";
document.Form.Fields["ModelParentName"].Value = "Parent Jane Doe";
// Draw model signature
DrawImageAtFieldLocation(document.Form.Fields["ModelSignature"].Widgets[0], "ModelSignature.png");
// Draw model visual
DrawImageAtFieldLocation(document.Form.Fields["ModelVisualReference"].Widgets[0], "XFINIUM.PDF.png");
// Fill ethnicity
(document.Form.Fields["EthnicityAsian"] as PdfCheckBoxField).Checked = true;
// Fill witness info
document.Form.Fields["WitnessName"].Value = "Witness John Doe";
document.Form.Fields["WitnessDateSigned"].Value = "09/03/2017";
// Draw photographer signature
DrawImageAtFieldLocation(document.Form.Fields["WitnessSignature"].Widgets[0], "WitnessSignature.png");
// If you want to prevent changes to filled data, you can flatten the form fields.
document.Form.FlattenFields();
// Save the filled form
FileSavePicker fileSavePicker = new FileSavePicker();
fileSavePicker.FileTypeChoices.Add("PDF files", new List<string>() { ".pdf" });
fileSavePicker.SuggestedFileName = "ModelReleaseFilled";
var outputFile = await fileSavePicker.PickSaveFileAsync();
if (outputFile != null)
{
var destPdfStream = await outputFile.OpenAsync(FileAccessMode.ReadWrite);
using (Stream stm = destPdfStream.AsStream())
{
document.Save(stm);
await stm.FlushAsync();
}
destPdfStream.Dispose();
}
}
private void DrawImageAtFieldLocation(PdfFieldWidget fieldWidget, string imageName)
{
Stream imageStream = assembly.GetManifestResourceStream("UWP_FillDocumentTemplate." + imageName);
PdfPngImage image = new PdfPngImage(imageStream);
PdfVisualRectangle fieldRect = fieldWidget.VisualRectangle;
// Draw the image on the page where the field widget is located.
fieldWidget.Page.Graphics.DrawImage(image,
fieldRect.Left, fieldRect.Top, fieldRect.Width, fieldRect.Height);
imageStream.Dispose();
}
Вы можете скачать заполненную форму и образец проекта .
Отказ от ответственности: я работаю в компании, которая разрабатывает эту библиотеку.
touseefbsb
Михай Янку
touseefbsb
Михай Янку