{"id":542,"date":"2008-08-02T10:29:26","date_gmt":"2008-08-02T09:29:26","guid":{"rendered":"http:\/\/minibrain.wordpress.com\/2008\/08\/02\/tutorial-itextsharp-writer-meta-daten\/"},"modified":"2008-08-02T10:29:26","modified_gmt":"2008-08-02T09:29:26","slug":"tutorial-itextsharp-writer-meta-daten","status":"publish","type":"post","link":"https:\/\/abramowitsch.de\/blog\/?p=542","title":{"rendered":"Tutorial iTextSharp: Writer &#038; Meta-Daten"},"content":{"rendered":"<h2>Das Writer-Objekt<\/h2>\n<p>Nachdem nun das Document-Objekt definiert wurde, wird zum Schreiben ein Writer-Objekt ben\u00f6tigt. Dieses entscheidet, wie das Dokument sp\u00e4ter geschrieben wird. F\u00fcr jeden \u201eDokumenttyp\u201c gibt es ein Writer-Objekt: Beispielsweise wird f\u00fcr PDF-Dokumente ein PdfWriter ben\u00f6tigt, w\u00e4hrend f\u00fcr TeX-Dokumente ein TeXWriter instanziiert werden muss usw. Das Konzept von iTextSharp erm\u00f6glicht auch eine Dokumenttypen und \u2013writer zu erstellen. Diese m\u00fcssen nur von der abstrakten Klasse DocWriter aus dem iTextSharp.text-Namespace abgeleitet sein.<\/p>\n<p><a href=\"http:\/\/abramowitsch.de\/blog\/wp-content\/uploads\/2008\/08\/image1.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right:0;border-top:0;border-left:0;border-bottom:0;\" src=\"http:\/\/abramowitsch.de\/blog\/wp-content\/uploads\/2008\/08\/image-thumb.png\" alt=\"image\" width=\"613\" height=\"223\" \/><\/a><\/p>\n<p>Abbildung 1: Klassenhierarchie DocWriter<\/p>\n<p>Der Konstruktor der Writer-Klassen ist nicht \u00f6ffentlich (private), sodass mittels GetInstance-Methode ein neues Objekt erzeugt werden muss. GetInstance erwartet zwei Parameter: das Document-Objekt (Das Document-Objekt) und einen Stream, in den die Ausgabe geschrieben wird.<\/p>\n<p>Beispiel f\u00fcr das Erstellen eines neuen PDF-Writers:<\/p>\n<p><span style=\"font-family:&quot;font-size:x-small;\">Document doc = new Document(PageSize.A4.Rotate());<\/span><\/p>\n<p><span style=\"font-family:&quot;font-size:x-small;\">PdfWriter writer = PdfWriter.GetInstance(doc, File.Create(&#8222;test.pdf&#8220;));<\/span><\/p>\n<p>Zum Schreiben einer PDF-Datei wird das writer-Objekt nicht mehr direkt verwendet (nat\u00fcrlich h\u00e4lt jedes Writer-Objekt einen IDocListener auf das Document-Objekt und wird somit \u00fcber \u00c4nderungen im Document informiert). Stattdessen erm\u00f6glicht es weitere Features, auf die in den entsprechenden Kapiteln eingegangen wird:<\/p>\n<ul>\n<li>Bearbeiten vorhandener PDF-Dokumente<\/li>\n<li>Direktes Zeichnen von Grafiken<\/li>\n<li>Verschl\u00fcsseln von PDF-Dokumenten<\/li>\n<li>Viewer-Einstellungen vornehmen (Anzeige mit\/ohne Men\u00fcleiste, Vollbild-Modus, Vorschaubilder anzeigen, Seiten-Skalierung etc.)<\/li>\n<li>Dateien anh\u00e4ngen<\/li>\n<\/ul>\n<h2>PDF Meta-Daten bearbeiten<\/h2>\n<p>Die Meta-Daten im PDF-Dokument beinhalten allgemeine Informationen \u00fcber das Dokument. Im Adobe Acrobat Reader k\u00f6nnen die Meta-Daten in den Dokumenteigenschaften (Datei \u00e0 Dokumenteigenschaften \/ Strg + D) angesehen werden:<\/p>\n<p><a href=\"http:\/\/abramowitsch.de\/blog\/wp-content\/uploads\/2008\/08\/image2.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right:0;border-top:0;border-left:0;border-bottom:0;\" src=\"http:\/\/abramowitsch.de\/blog\/wp-content\/uploads\/2008\/08\/image-thumb1.png\" alt=\"image\" width=\"233\" height=\"244\" \/><\/a><\/p>\n<p>Abbildung 2: PDF-Metadaten<\/p>\n<p>Rot hervorgehoben sind die jeweiligen Metadaten, die programmatisch auf dem Document-Objekt gesetzt werden k\u00f6nnen:<\/p>\n<h3>Eigenschaft in den Metadaten<\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" style=\"border-right:0;border-top:0;border-left:0;border-bottom:0;\" src=\"http:\/\/abramowitsch.de\/blog\/wp-content\/uploads\/2008\/08\/image3.png\" alt=\"image\" width=\"525\" height=\"169\" \/><\/p>\n<p>Beispiel f\u00fcr das Setzen der Meta-Daten:<\/p>\n<p><span style=\"font-family:&quot;font-size:x-small;\">doc.AddAuthor(&#8222;Ralf Abramowitsch&#8220;);<br \/>\ndoc.AddCreationDate();<br \/>\ndoc.AddCreator(&#8222;Mein Tool&#8220;);<br \/>\ndoc.AddKeywords(&#8222;iTextSharp&#8220;);<br \/>\ndoc.AddKeywords(&#8222;Tutorial&#8220;);<br \/>\ndoc.AddKeywords(&#8222;.NET&#8220;);<br \/>\ndoc.AddSubject(&#8222;Thema&#8220;);<br \/>\ndoc.AddTitle(&#8222;Titel&#8220;);<br \/>\ndoc.AddProducer();<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Das Writer-Objekt Nachdem nun das Document-Objekt definiert wurde, wird zum Schreiben ein Writer-Objekt ben\u00f6tigt. Dieses entscheidet, wie das Dokument sp\u00e4ter geschrieben wird. F\u00fcr jeden \u201eDokumenttyp\u201c gibt es ein Writer-Objekt: Beispielsweise wird f\u00fcr PDF-Dokumente ein PdfWriter ben\u00f6tigt, w\u00e4hrend f\u00fcr TeX-Dokumente ein TeXWriter instanziiert werden muss usw. Das Konzept von iTextSharp erm\u00f6glicht auch eine Dokumenttypen und \u2013writer [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[3],"tags":[126,57,86],"class_list":["post-542","post","type-post","status-publish","format-standard","hentry","category-net","tag-net","tag-itextsharp","tag-tutorial"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p3Ug90-8K","_links":{"self":[{"href":"https:\/\/abramowitsch.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/542","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/abramowitsch.de\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/abramowitsch.de\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/abramowitsch.de\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/abramowitsch.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=542"}],"version-history":[{"count":0,"href":"https:\/\/abramowitsch.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/542\/revisions"}],"wp:attachment":[{"href":"https:\/\/abramowitsch.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=542"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/abramowitsch.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=542"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/abramowitsch.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=542"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}