SSRS 2012在PDF渲染过程中嵌入完整字体

时间:2016-07-22 20:42:11

标签: c# pdf reporting-services itext ssrs-2012

我的情况是,我们可能有200份报告由SSRS生成并导出为PDF。然后将这100份报告合并为一份大型PDF进行分发(在任何人推荐之前,一般过程不会改变......在可预见的将来,我们将继续收到多个单独的PDF文件。)

合并PDF的大小非常大(我正在使用iTextSharp和PdfSmartCopy来合并那些感兴趣的人)。代码如下,以防有人可以改进。

    private void MergePDF()
    { 
        using (MemoryStream stream = new MemoryStream())
        {
            Document doc = new Document();
            PdfSmartCopy pdf = new PdfSmartCopy(doc, stream);
            doc.Open();

            files.OrderBy(o => o.GetOrder()).ToList().ForEach(file =>
            {
                pdf.AddDocument(new PdfReader(file.AcquireFile()));
            });

            mergedStream = new MemoryStream(stream.GetBuffer());

            if (doc != null) doc.Close();
        }

        mergedFile = new EMMAFilePDF();
        mergedFile.SetStream(mergedStream);
    }

我已将问题缩小到字体子集。 It appears SSRS will embed a font subset for each report。而iTextSharp,有理由,cannot merge embedded font subsets

使用Acrobat Pro我可以清理其中的一部分并减小文件大小,但我试图完全自动化该过程,这个字体子集问题似乎是最后一块。

这让我想到了核心问题:是否有人知道强制SSRS嵌入完整字体而不是字体子集的方法?如果是这样,那么iTextSharp可以在合并时删除完整字体,从而产生更小的最终PDF大小。

或者,是否有可以正确合并字体子集的工具(非免费)?

0 个答案:

没有答案