2009-09-23 116 views

Respuesta

17

utilizando funciona afilados PDF como este:

using System; 
using PdfSharp.Pdf; 
using PdfSharp.Pdf.IO; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
    static void Main (string[] args) 
    { 
     Program p = new Program(); 
     p.Test(); 

    } 

    public void Test() 
    { 
     PdfDocument document = PdfReader.Open ("Test.pdf"); 

     document.Info.Author = "ME"; 

     document.Save ("Result"); 
    } 
    } 

}

+0

lo he probado pero el productor no puede cambiar :(es malo VS2008 dice que es de solo lectura – subprime

+3

Debido a que el software es de código abierto, puede modificarlo. Por lo tanto, si desea cambiar el fabricante del documento, debe modificar el método PdfDocument.PrepareForSave(). Utiliza el productor del documento original si el documento es no creado usando PDFSharp. Cambie la Propiedad del Productor de PdfDocumentInformation para ser configurable y modifique el método PrepareForSave() Esto lo hará. – crauscher

+1

Lamentablemente, pdfsharp no admite los metadatos XMP. – mydogisbox

2

La clase PdfDocumentInformation de PDF Sharp cumple sus requisitos.

+0

¿Puede explicarme cómo funciona @crauscher – subprime

+0

http://www.pdfsharp.net/wiki/HelloWorld-sample.ashx muestra caliente para crear un documento PDF y cómo cambiar PdfDocumentInformation (PdfDocument.Info). Si desea abrir un Pdf existente, puede usar la clase PfdReader froom PDF sharp – crauscher

+0

¿Puedo eliminar/agregar el código xmp al pdf? ¡Gracias por la muestra! – subprime

3

Supongo que puede hacerlo con iTextSharp.

+0

Sí, con la propiedad de información tiene acceso a los metadatos PDF y con la propiedad Metadata tiene acceso a los metadatos XML (formato XMP) –

0

Pimping aquí - my company, Atalasoft, makes .NET components for working with images. Parte de la suite incluye la capacidad de leer/escribir metadatos de documentos PDF. No es gratis, pero es libre de derechos de autor para aplicaciones de escritorio.

El código para la lectura es sencilla:

PdfDocumentMetadata metadata = PdfDocumentMetadata.FromStream(sourceStream); 

para editarlo y escribir de nuevo a la misma corriente:

meta.Title = "Knicholas Knickleby"; 
meta.Author = "Edmund Wells"; 
sourceStream.Seek(0, SeekOrigin.Begin); 
meta.Append(sourceStream, false); // false means don't merge - overwrite 

Los campos personalizados son compatibles a través de una tabla hash.

0

Docotic.Pdf library se pueden utilizar para leer y actualización de los metadatos en los documentos PDF.

Existe la propiedad PdfDocument.Info que se puede usar para change metadata of a PDF document (propiedades como "Autor", "Título").

Y también existe la propiedad PdfDocument.Metadata que es útil si necesita acceder al incrustado XMP metadata in a PDF document. La biblioteca admite esquemas XMP predefinidos y también se puede usar para establecer propiedades personalizadas definidas por la aplicación.

La biblioteca es gratuita para aplicaciones no comerciales. (La biblioteca ya no es gratuita desde el 15 de febrero de 2012)

Descargo de responsabilidad: Yo trabajo para la empresa.

+0

Este Libary no es gratuito para aplicaciones no comerciales. Nota del descargo de responsabilidad: Licencia de evaluación Puede probar Docotic.Pdf con licencia de evaluación. En el modo de evaluación, el componente puede usarse solo con fines de prueba. No puede redistribuir la biblioteca Docotic.Pdf ni ningún producto creado con la versión de prueba de Docotic.Pdf. Además, cuando se utiliza en modo de prueba, la biblioteca impone las siguientes restricciones: -Los documentos generados con la biblioteca contienen un aviso de evaluación impreso en cada página. -Para todos los documentos existentes, la biblioteca solo lee la mitad de las páginas. – subprime

+0

@subprime Vea aquí: http://bitmiracle.com/pdf-library/free-pdf-library.aspx La biblioteca Docotic.Pdf es gratuita para uso no comercial. Si no está cobrando por su producto, y el producto no tiene otro propósito comercial, entonces puede obtener una licencia para la aplicación Enterprise Edition sin cargo. – Bobrovsky

+0

Desde el 15 de febrero de 2012 ya no es [gratis para uso no comercial] (http://bitmiracle.com/pdf-library/free-pdf-library.aspx). –

6

Para PDFsharp: Si desea cambiar/añadir los metadatos sobre las propiedades personalizadas de un PDF se puede utilizar el objeto de las PdfDocument.Info.Elements.

String filename = @"d:\temp\Hugo-input.pdf"; 
    String outputfile = @"d:\temp\Hugo-output.pdf"; 
    PdfDocument document = PdfReader.Open(filename); 
    document.Info.Elements.Add(new KeyValuePair<String,PdfItem>("/MyKey",new PdfString("MyValue"))); 
    document.Save(outputfile); 

¡Siempre comience una llave personalizada con una barra oblicua!

Puede encontrar la clave y el valor al abrir este documento en Adobe Acrobat Reader -> Archivo -> Propiedades -> Personalizar.

Esto funciona con PDFSharp 1.32

Cuestiones relacionadas