我有一个Base64 jpeg图像字符串,这是一个简单的签名图像。我可以将字符串存储在SQL Server中并对其进行检索,但是当我尝试将其传递给方法或保存在Session变量中时,我得到null值。您可以传递给方法或保存在会话变量中的字符串是否有限制?
这是代码;
我从db获取字符串,
string VSignature = ds.Tables[0].Rows[0]["SignatureB64"];
// VSignature gets valued ok
// then passed to a class with method to handle image,
Write.GetPageOneReadyToBeAltered(f_older + "\\FDD.PDF", f_older + @"\N.PDF",
CertID, VSignature);
//这里VSignature为空
public static void GetPageOneReadyToBeAltered(string PageNReader, string PageNStamper, string CertificateNo, string VSignature)
{
// prepare page one's copy to be altered by user
PdfReader pdfreader = new PdfReader(PageNReader);
PdfStamper pdfStamper = new PdfStamper(pdfreader, new FileStream(PageNStamper, FileMode.Create));
/*
some pdf stuff done here, irrelevant
*/
var pdfContentByte = pdfStamper.GetOverContent(1);
byte[] bytSig1 = Convert.FromBase64String(VSignature);
MemoryStream msSig1 = new MemoryStream(bytSig1);
iTextSharp.text.Image sig1 = iTextSharp.text.Image.GetInstance(msSig1);
sig1.SetAbsolutePosition(23, 76);
sig1.ScaleToFit(60f, 60f);
pdfContentByte.AddImage(sig1);
}
感谢
答案 0 :(得分:5)
如果你破坏了字符串大小的限制,你不会只获得一个空值 - 你会得到一个例外。 远更可能是你在代码中做错了什么,但是你还没有向我们展示,所以很难说出来。
基本上,虽然有限制(大约十亿个字符,IIRC),但你不太可能遇到它们。
答案 1 :(得分:1)
这不太可能与图像大小有关(除非你使用的是巨大的图像),无论如何你应该收到一个异常,坚持一个空值......