Originalmente publiqué esta pregunta en el desbordamiento de pila, pero me recomendaron publicarla aquí.
Pregunta inicial
Estoy en proceso de convertir una aplicación de Windows Mobile a Xamarin Forms, específicamente Android. En la aplicación de Windows Mobile, creamos archivos PDF usando PDF4NET y podemos agregar palabras clave a la sección Información del documento del PDF. En la conversión a Xamarin Forms (android), no puedo continuar usando PDF4NET debido a las restricciones de la plataforma, pero me encontré con PrintedPDFDocument. Cumple con todos los requisitos hasta ahora, excepto agregar palabras clave a la información del documento. Todo el proceso de creación del PDF se realiza en el dispositivo móvil: texto/imágenes y metadatos.
Todavía no he podido encontrar en ninguna parte de la documentación para PrintedPDFDocument sobre cómo agregar palabras clave y no parece que el objeto tenga una propiedad para la información del documento. ¿Hay alguna manera especial de hacer esto, o no es compatible en absoluto? Si no hay una manera de hacer la información del documento en PrintedPDFDocument, ¿cuáles son algunas otras opciones que tengo para la generación de PDF con Xamarin y Android?
Esto sería para uso comercial, pero si hay una biblioteca de código abierto que maneje esto, sería genial.
¡Gracias por adelantado!
La biblioteca XFINIUM.PDF admite agregar palabras clave y otra información a archivos PDF en Xamarin Android e iOS.
El siguiente código muestra cómo lograr esto:
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);
Descargo de responsabilidad: trabajo para la empresa que desarrolla la biblioteca.
Syncfusion Essential PDF admite la creación de PDF en la aplicación Xamarin. Su requisito podría lograrse utilizando el fragmento de código a continuación
//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
El esquema personalizado se puede crear usando el siguiente enlace https://help.syncfusion.com/file-formats/pdf/working-with-metadata#adding-custom-schema-to-the-pdf-document
Todo el conjunto de controles está disponible de forma gratuita (también para aplicaciones comerciales) a través del programa de licencia comunitaria si califica (menos de 1 millón de dólares estadounidenses en ingresos). La licencia comunitaria es el producto completo sin limitaciones ni marcas de agua.
Nota: Trabajo para Syncfusion.
PDFTron PDFNet SDK admite la creación y edición de PDF completos, junto con un motor de renderizado multiplataforma completo. El SDK, con una API idéntica para la creación de PDF y metadatos, está disponible para Xamarin , Android , UWP , iOS y Web, junto con Linux, Windows (.Net, .NetCore) y macOS.
Nuestra aplicación de exhibición, Xodo, que está disponible de forma gratuita en todas las tiendas móviles y que tiene una calificación de 4.7/5 en Android, es una excelente manera de evaluar a nuestro espectador. https://play.google.com/store/apps/details?id=com.xodo.pdf.reader
Entonces, con un solo SDK y API, usando Xamarin, puede admitir UWP, Android y, si le gusta, iOS.
Para comenzar con su evaluación, comience aquí. https://www.pdftron.com/documentation/xamarin/guides
El SDK incluye una muestra de CompleteReader, que es en lo que se basa la aplicación Xodo.
Este es el ejemplo de la API de contenido de página de bajo nivel, aunque hay otras formas de generar contenido de página PDF con PDFNet. https://www.pdftron.com/documentation/samples/xamarin/cs/ElementBuilderTest?platforms=xamarin
Para agregar palabras clave, haría algo similar a lo siguiente.pdfdoc.GetDocInfo().SetKeywords("keyword1, keyword2, keyword3");
Finalmente, PDFTron ofrece soporte de evaluación completo y puede brindar asistencia para migrar de su código PDF4NET a PDFNet.
Ryan
donaldson1713
Ryan
donaldson1713
Ryan
donaldson1713