看看Docotic.Pdf library。这个库支持.NET Core,没有任何依赖和不安全的代码。
Docotic 的 PDF 到图像渲染器不依赖于 GDI+ (System.Drawing)。这对于在 ASP.NET 上下文或 Linux 上可靠运行代码非常重要。
合并 PDF 文档:
public void MergeDocuments(string firstPath, string secondPath)
{
using (var pdf = new PdfDocument(firstPath))
{
pdf.Append(secondPath); // or append stream or byte array
pdf.ReplaceDuplicateObjects(); // useful when merged files contain common objects like fonts and images
pdf.Save("merged.pdf");
}
}
将 PDF 页面转换为 PNG 图像:
using (var pdf = new PdfDocument(@"merged.pdf"))
{
PdfDrawOptions options = PdfDrawOptions.Create();
options.Compression = ImageCompressionOptions.CreatePng();
options.BackgroundColor = new PdfRgbColor(255, 255, 255);
options.HorizontalResolution = 600;
options.VerticalResolution = 600;
pdf.Pages[0].Save("result.png", options);
}
More samples for PDF to image conversion
您提到了将合并的 PDF 文档转换为单个 PNG 图像。 PNG 不支持多帧图像 (more detail)。所以只能做到以下几点:
- 将所有 PDF 文档页面合并到单个页面
- 如上所述呈现此页面
这是本案例的示例(将 2 页合并为一页并另存为 PNG):
using (var other = new PdfDocument(@"merged.pdf"))
{
using (var pdf = new PdfDocument())
{
PdfXObject firstXObject = pdf.CreateXObject(other.Pages[0]);
PdfXObject secondXObject = pdf.CreateXObject(other.Pages[1]);
PdfPage page = pdf.Pages[0];
double halfOfPage = page.Width / 2;
page.Canvas.DrawXObject(firstXObject, 0, 0, halfOfPage, 400, 0);
page.Canvas.DrawXObject(secondXObject, halfOfPage, 0, halfOfPage, 400, 0);
PdfDrawOptions options = PdfDrawOptions.Create();
options.BackgroundColor = new PdfRgbColor(255, 255, 255);
page.Save("result.png", options);
}
}