Библиотека PDF для добавления метаданных ключевых слов в PDF

Первоначально я разместил этот вопрос о переполнении стека, но вместо этого мне рекомендовали опубликовать его здесь.

Оригинальный вопрос

Я занимаюсь преобразованием приложения Windows Mobile в Xamarin Forms, в частности, в Android. В приложении для Windows Mobile мы создаем PDF-файлы с помощью PDF4NET и можем добавлять ключевые слова в раздел «Информация о документе» PDF-файла. При преобразовании в Xamarin Forms (Android) я не могу продолжать использовать PDF4NET из-за ограничений платформы, но я столкнулся с PrintedPDFDocument. На данный момент он соответствует всем требованиям, за исключением добавления ключевых слов в информацию о документе. Весь процесс создания PDF выполняется на мобильном устройстве — текст/изображения и метаданные.

Мне пока не удалось найти нигде в документации по PrintedPDFDocument информацию о добавлении ключевых слов, и не похоже, что у объекта есть свойство для информации о документе. Есть ли специальный способ сделать это, или он вообще не поддерживается? Если нет способа сделать информацию о документе в PrintedPDFDocument, какие другие варианты у меня есть для создания PDF с помощью Xamarin и Android?

Это было бы для коммерческого использования, но если есть библиотека с открытым исходным кодом, которая обрабатывает это, это было бы здорово.

Заранее спасибо!

Вы упомянули создание PDF. Каков источник PDF? Из файла другого типа (например, DOCX, PNG) или вручную с помощью PDF4NET API?
@Ryan Мы вручную создаем PDF-файлы с помощью PDF4NET, и нам нужно продолжать делать то же самое.
О, потому что в вашем вопросе говорилось: «Я не могу продолжать использовать PDF4NET». Вы говорите, что создаете серверную часть PDF с помощью PDF4NET, но добавляете метаданные ключевых слов на Android? Возможно, вы могли бы обновить свой вопрос, чтобы прояснить ситуацию.
Спасибо за вклад; Я пошел дальше и уточнил это. Мы полностью создаем PDF-файл на мобильном устройстве, так как устройство не всегда может быть подключено к Интернету. Создание PDF-файла также должно происходить довольно часто в течение дня, поскольку он используется в качестве «доказательства доставки». На данный момент похоже, что мы планируем использовать XFINIUM, поскольку он соответствует всем нашим потребностям.
Итак, вы будете портировать код API PDF4NET, который вы использовали для создания PDF, в API XFINIUM? Кроме того, какое значение для вас имеют ключевые слова? Это редко используемая функция, и она даже устарела в последней спецификации PDF 2.0 ISO. Наконец, не могли бы вы уточнить, что вы подразумеваете под «доказательством доставки».
Для портирования, это правильно. Я не могу вдаваться в подробности о проекте, поскольку мы заключили контракт на работу над ним, но я полагаю, что использование ключевых слов в основном используется другой третьей стороной для сортировки PDF-файлов для целей выставления счетов. Я считаю, что вариант использования также должен частично отвечать вашему «доказательству доставки».

Ответы (3)

Библиотека 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);

Отказ от ответственности: я работаю в компании, которая разрабатывает библиотеку.

Спасибо тебе за это. Я передал эту информацию, и моя компания свяжется с Xfinium с вопросом о мобильных и кросс-платформенных версиях.

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.

Спасибо за эту рекомендацию. Я передам эту рекомендацию до того, как мой босс перейдет на XFINIUM.

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.

Спасибо за эту рекомендацию. Я передам эту рекомендацию до того, как мой босс перейдет на XFINIUM.