Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

PackageProperties.cs 3.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using System.Xml;
  8. namespace System.IO.Packaging
  9. {
  10. public abstract class PackageProperties : IDisposable
  11. {
  12. internal const string NSPackageProperties = "http://schemas.openxmlformats.org/package/2006/metadata/core-properties";
  13. internal const string NSPackagePropertiesRelation = "http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties";
  14. internal const string PackagePropertiesContentType = "application/vnd.openxmlformats-package.core-properties+xml";
  15. static int uuid;
  16. protected PackageProperties()
  17. {
  18. }
  19. public abstract string Category { get; set; }
  20. public abstract string ContentStatus { get; set; }
  21. public abstract string ContentType { get; set; }
  22. public abstract DateTime? Created { get; set; }
  23. public abstract string Creator { get; set; }
  24. public abstract string Description { get; set; }
  25. public abstract string Identifier { get; set; }
  26. public abstract string Keywords { get; set; }
  27. public abstract string Language { get; set; }
  28. public abstract string LastModifiedBy { get; set; }
  29. public abstract DateTime? LastPrinted { get; set; }
  30. public abstract DateTime? Modified { get; set; }
  31. internal Package Package { get; set; }
  32. internal PackagePart Part { get; set; }
  33. public abstract string Revision { get; set; }
  34. public abstract string Subject { get; set; }
  35. public abstract string Title { get; set; }
  36. public abstract string Version { get; set; }
  37. public void Dispose()
  38. {
  39. Dispose(true);
  40. }
  41. protected virtual void Dispose(bool disposing)
  42. {
  43. // Nothing
  44. }
  45. internal void Flush()
  46. {
  47. using (MemoryStream temp = new MemoryStream())
  48. {
  49. using (XmlTextWriter writer = new XmlTextWriter(temp, System.Text.Encoding.UTF8))
  50. {
  51. WriteTo(writer);
  52. writer.Flush();
  53. if (temp.Length == 0)
  54. return;
  55. }
  56. }
  57. if (Part == null)
  58. {
  59. int id = System.Threading.Interlocked.Increment(ref uuid);
  60. Uri uri = new Uri(string.Format("/package/services/metadata/core-properties/{0}.psmdcp", id), UriKind.Relative);
  61. Part = Package.CreatePart(uri, PackagePropertiesContentType);
  62. PackageRelationship rel = Package.CreateRelationship(uri, TargetMode.Internal, NSPackagePropertiesRelation);
  63. }
  64. using (Stream s = Part.GetStream(FileMode.Create))
  65. using (XmlTextWriter writer = new XmlTextWriter(s, System.Text.Encoding.UTF8))
  66. WriteTo(writer);
  67. }
  68. internal virtual void LoadFrom(Stream stream)
  69. {
  70. }
  71. internal virtual void WriteTo(XmlTextWriter writer)
  72. {
  73. }
  74. }
  75. }