我已经有几天这个问题并尝试过很多东西。基本上,我让用户编辑SVG,一旦完成,他们就会将其保存回服务器上的文件路径。我的问题是我的SVG包含目录中文件的href。作为一个SVG,它可以毫无问题地引用该文件,但是当我将文件转换为PDF时,它没有图像,但它确实有其他SVG元素,如行和文本。有没有人有这个问题或知道如何解决?我使用ImageMagick进行转换,但它仍然存在这个问题。请参阅下面的控制器代码:
[HttpPost]
public void ConvertToPDF(string[] svgs, string pdfFilePath, List<string> files)
{
MagickReadSettings settings = new MagickReadSettings();
using (MagickImageCollection images = new MagickImageCollection())
{
foreach(var s in svgs)
{
var fileName = System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["ConvertFromXMLToSvgTempPath"] + s + ".svg");
//images.Read(fileName, settings);
//var readSettings = new MagickReadSettings() { Format = MagickFormat.Svg };
using (var image = new MagickImage(fileName))
{
image.Format = MagickFormat.Pdf;
}
}
images.Write(pdfFilePath);
}
}
答案 0 :(得分:1)
仅供参考 - 我最终将图像路径转换为Base64。 SVG的其余部分正确转换。希望这有助于将来的任何人。
答案 1 :(得分:0)
更好你可以试试Syncfusion HTML to PDF库。这个对我来说效果更好。
HtmlToPdfConverter htmlConverter = new HtmlToPdfConverter(HtmlRenderingEngine.WebKit);
WebKitConverterSettings settings = new WebKitConverterSettings();
// WebKit library path
settings.WebKitPath = @"../../QtBinaries/";
//Assign WebKit settings to HTML converter
htmlConverter.ConverterSettings = settings;
//Convert a SVG file to PDF with HTML converter
PdfDocument document = htmlConverter.Convert(@"../../Sample.svg");
document.Save("Output.pdf");
document.Close(true);
下载webkit库 WebKit HTML转换器:https://www.syncfusion.com/downloads/latest-version