C# - iTextSharp su Aruba(Required permission/SecurityException)) 29/04/2011 23:44:48
Usare le dll iTextSharp su Aruba = MACELLO!
Il primo problema riscontrato è stato quello dei permessi :

System.Security.SecurityException: That assembly does not allow partially trusted callers.

Aruba_Permessi
che potete risolvere in questo modo :

1)scaricare il sorgente della libreria Download iTextSharp.Zip
2)inserire queste parti di codice nel file Assemblyinfo.cs e fare il build della .dll
le stringhe da inserire sono :

-->[assembly: AssemblyKeyFile("itextsharp.snk")]
-->[assembly: System.Security.AllowPartiallyTrustedCallers()]

using System.Reflection;
using System.Runtime.CompilerServices;

[assembly: AssemblyTitle("iTextSharp")]
[assembly: AssemblyDescription("A free PDF library ported from Java iText.")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("Copyright (C) 1999-2011 by Bruno Lowagie and Paulo Soares. All Rights Reserved.")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: AssemblyKeyFile("itextsharp.snk")]
[assembly: System.Security.AllowPartiallyTrustedCallers()]

[assembly: AssemblyVersion("5.0.6")]


3)Inserire la .dll nella cartella Bin
4)Nel codice andate a recuperare i file di scrittura e il template esistente da usare in questo modo
string newFile = Environment.GetFolderPath((Environment.SpecialFolder.MyDocuments)); newFile = Server.MapPath("newFile.pdf");
string oldFile = Server.MapPath("template1.pdf");

PROBLEMA 2
Usare la MemoryStream e non il FileStream altrimenti si hanno problemi di scrittura del file .PDF sempre per il fatto di sicurezza.
System.IO.MemoryStream m = new System.IO.MemoryStream();
Rectangle size = reader.GetPageSizeWithRotation(1);
Document document = new Document(size);
PdfWriter writer = PdfWriter.GetInstance(document, m);

................. ...............
Response.OutputStream.Write(m.GetBuffer(), 0, m.GetBuffer().Length);
Response.OutputStream.Flush();
Response.OutputStream.Close();
Response.ContentType = "application/pdf";


Continua ...... alla prossima! :)
12345
Copyright (c) 2010 ilcorsaronero. All rights reserved.