Первоначально я разместил этот вопрос о переполнении стека, но вместо этого мне рекомендовали опубликовать его здесь.
Оригинальный вопрос
Я занимаюсь преобразованием приложения Windows Mobile в Xamarin Forms, в частности, в Android. В приложении для Windows Mobile мы создаем PDF-файлы с помощью PDF4NET и можем добавлять ключевые слова в раздел «Информация о документе» PDF-файла. При преобразовании в Xamarin Forms (Android) я не могу продолжать использовать PDF4NET из-за ограничений платформы, но я столкнулся с PrintedPDFDocument. На данный момент он соответствует всем требованиям, за исключением добавления ключевых слов в информацию о документе. Весь процесс создания PDF выполняется на мобильном устройстве — текст/изображения и метаданные.
Мне пока не удалось найти нигде в документации по PrintedPDFDocument информацию о добавлении ключевых слов, и не похоже, что у объекта есть свойство для информации о документе. Есть ли специальный способ сделать это, или он вообще не поддерживается? Если нет способа сделать информацию о документе в PrintedPDFDocument, какие другие варианты у меня есть для создания PDF с помощью Xamarin и Android?
Это было бы для коммерческого использования, но если есть библиотека с открытым исходным кодом, которая обрабатывает это, это было бы здорово.
Заранее спасибо!
Библиотека XFINIUM.PDF поддерживает добавление ключевых слов и другой информации в файлы PDF на Xamarin Android и iOS.
Код ниже показывает, как это сделать:
PdfFixedDocument document = new PdfFixedDocument(inputPdfFile);
// Display the document in full screen mode.
document.DisplayMode = PdfDisplayMode.FullScreen;
// Fill the document information.
document.DocumentInformation = new PdfDocumentInformation();
document.DocumentInformation.Author = "Xfinium Software";
document.DocumentInformation.CreationDate = DateTime.Now;
document.DocumentInformation.ModifyDate = DateTime.Now;
document.DocumentInformation.Creator = "Xfinium.Pdf DocumentProperties sample";
document.DocumentInformation.Producer = "Xfinium.Pdf";
document.DocumentInformation.Title = "Xfinium.Pdf DocumentProperties sample";
document.DocumentInformation.Subject = "Xfinium.Pdf sample code";
document.DocumentInformation.Keywords = "xfinium.pdf,pdf,sample";
// Set custom metadata in the XMP metadata.
document.XmpMetadata = new PdfXmpMetadata();
// This custom metadata will appear as a child of 'xmpmeta' root node.
document.XmpMetadata.Metadata = "<custom>Custom metadata</custom>";
// Set the viewer preferences.
document.ViewerPreferences = new PdfViewerPreferences();
document.ViewerPreferences.CenterWindow = true;
document.ViewerPreferences.DisplayDocumentTitle = true;
document.ViewerPreferences.HideMenubar = true;
document.ViewerPreferences.HideToolbar = true;
document.ViewerPreferences.HideWindowUI = true;
document.ViewerPreferences.PrintScaling = PdfPrintScaling.None;
// Set the PDF version.
document.PdfVersion = PdfVersion.Version15;
document.Save(outputPdfFile);
Отказ от ответственности: я работаю в компании, которая разрабатывает библиотеку.
Syncfusion Essential PDF поддерживает создание PDF-файлов в приложении Xamarin. Ваше требование может быть достигнуто с помощью приведенного ниже фрагмента кода
//Create a new PDF document.
PdfDocument document = new PdfDocument();
//Set document information.
document.DocumentInformation.Author = "Syncfusion";
document.DocumentInformation.CreationDate = DateTime.Now;
document.DocumentInformation.Creator = "Essential PDF";
document.DocumentInformation.Keywords = "PDF";
document.DocumentInformation.Subject = "Document information DEMO";
document.DocumentInformation.Title = "Essential PDF Sample";
//Add a page to the document.
PdfPage page = document.Pages.Add();
//Create PDF graphics for the page.
PdfGraphics graphics = page.Graphics;
//Set the font.
PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 20);
//Draw the text.
graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, new PointF(0, 0));
//Save the document.
document.Save("Output.pdf");
//Close the document.
document.Close(true);
https://help.syncfusion.com/file-formats/pdf/working-with-document#working-with-document-properties
Пользовательскую схему можно создать, используя приведенную ниже ссылку https://help.syncfusion.com/file-formats/pdf/working-with-metadata#adding-custom-schema-to-the-pdf-document .
Весь набор элементов управления доступен бесплатно (включая коммерческие приложения) через программу лицензирования сообщества , если вы соответствуете требованиям (доход менее 1 миллиона долларов США). Лицензия сообщества — это полный продукт без ограничений и водяных знаков.
Примечание: я работаю в Syncfusion.
PDFTron PDFNet SDK поддерживает полное создание и редактирование PDF, а также полноценный кроссплатформенный механизм рендеринга. Пакет SDK с идентичным API для создания PDF и метаданных доступен для Xamarin , Android , UWP , iOS и Интернета, а также для Linux, Windows (.Net, .NetCore) и macOS.
Наше демонстрационное приложение Xodo, которое бесплатно доступно во всех мобильных магазинах и имеет рейтинг 4,7/5 на Android, — отличный способ оценить нашего зрителя. https://play.google.com/store/apps/details?id=com.xodo.pdf.reader
Таким образом, с помощью одного SDK и API, используя Xamarin, вы можете поддерживать UWP, Android и, если хотите, iOS.
Чтобы начать работу с оценкой, начните здесь. https://www.pdftron.com/documentation/xamarin/guides
SDK включает образец CompleteReader, на котором основано приложение Xodo.
Вот пример низкоуровневого API содержимого страницы, хотя есть и другие способы создания содержимого страницы PDF с помощью PDFNet. https://www.pdftron.com/documentation/samples/xamarin/cs/ElementBuilderTest?platforms=xamarin
Чтобы добавить ключевые слова, вы должны сделать что-то похожее на следующее.pdfdoc.GetDocInfo().SetKeywords("keyword1, keyword2, keyword3");
Наконец, PDFTron предлагает полную поддержку оценки и может оказать помощь при переходе с вашего кода PDF4NET на PDFNet.
Райан
tdonaldson1713
Райан
tdonaldson1713
Райан
tdonaldson1713