XSLTを使用してPDFで画像を配置しようとしています。私はすでに表示されている画像を持っていますが、その場合は最初にバイトコードがあり、単純にbase64文字列を生成します。しかし、以下のケースでは、リソースファイルからイメージを読み込んでbase64に変更しようとしていますが、この場合、次のエラーが表示されます。PDFを生成中に画像が見つかりません
パス例外:this.imageFilePath(最初の100文字):base64: iVBORw0KGgoAAAANSUhEUgAAAFoAAABNCAYAAAAme3MhAAAABGdBTUEAALGPC/xhBQAAHrFJREFUeF7V3AuwrWVdx/ETQ
次のように使用されるテンプレートは、次のとおり
string brandLogoXslt = @"<Paragraph Style=""P"">Some text here:</Paragraph>";
brandLogoXslt += @"<Image><xsl:attribute name=""Filename"">" + MigraDocFilenameFromByteArray(ExtractResource(Business.Properties.Resources.logo)) + "</xsl:attribute></Image>";
genericPlaceholderNodes[i].ParentNode.InnerXml = genericPlaceholderNodes[i].ParentNode.InnerXml.Replace(genericPlaceholderNodes[i].OuterXml, brandLogoXslt);
コード画像を変更するために使用される:
private static string MigraDocFilenameFromByteArray(byte[] image)
{
return "base64:" + Convert.ToBase64String(image);
}
public static byte[] ExtractResource(System.Drawing.Image image)
{
MemoryStream ms = new MemoryStream();
image.Save(ms, ImageFormat.Png);
if (ms == null)
return null;
byte[] imageByteArray = ms.ToArray();
return imageByteArray;
}
私はすでにbase64文字列をチェックしており、オンラインで正しい画像を生成しています。
スタックトレース:
bei MigraDoc.Rendering.ImageRenderer.CalculateImageDimensions()
bei MigraDoc.Rendering.ImageRenderer.Format(Area area, FormatInfo previousFormatInfo)
bei MigraDoc.Rendering.TopDownFormatter.FormatOnAreas(XGraphics gfx, Boolean topLevel)
bei MigraDoc.Rendering.FormattedCell.Format(XGraphics gfx)
bei MigraDoc.Rendering.TableRenderer.FormatCells()
bei MigraDoc.Rendering.TableRenderer.InitFormat(Area area, FormatInfo previousFormatInfo)
bei MigraDoc.Rendering.TableRenderer.Format(Area area, FormatInfo previousFormatInfo)
bei MigraDoc.Rendering.TopDownFormatter.FormatOnAreas(XGraphics gfx, Boolean topLevel)
bei MigraDoc.Rendering.FormattedDocument.Format(XGraphics gfx)
bei MigraDoc.Rendering.DocumentRenderer.PrepareDocument()
bei MigraDoc.Rendering.PdfDocumentRenderer.PrepareDocumentRenderer(Boolean prepareCompletely)
bei MigraDoc.Rendering.PdfDocumentRenderer.PrepareRenderPages()
bei MigraDoc.Rendering.PdfDocumentRenderer.RenderDocument()
bei School.DE.WebApplications.SCHDI.Business.NewPDFGenerator.TemplateToPdfTransformerBase.Transform2Pdf(Object data, XslTransform transform, Stream outStrm) in d:\Projects\Business\NewPDFGenerator\TemplateToPdfTransformerBase.cs:Zeile 70.
はい私は知っているが、私はすでにxsltを使って画像を表示することができます。 xsltはPDF文書をテンプレート化する場合のみです – Maqsood
MigraDocコード内で例外が発生した場合、詳細情報(例外のスタックトレースなど)を提供するか、MCVEを提供してください。 MigraDocコードの外で例外が発生した場合、それは動作しません。 –
あなたの質問を編集して、より読みやすい形で胸部トレースを含め、ここでコメントを削除することができます。画像のBASE64はMigraDoc 1.50の新機能です。どのMigraDocのバージョンを使用していますか? –