Itextsharp pdfwriter getimported页面增长文件大小

时间:2016-01-13 10:21:55

标签: pdf itextsharp

我尝试重叠模型pdf,以查看它与我的新pdf之间的差异。

这是我的代码:

PdfReader reader = new PdfReader(WorkDir + "\\model.pdf");
    PdfImportedPage page = writer.GetImportedPage(reader, 1);

    pdfOut.NewPage(); 
    if (checkBox1.Checked) writer.DirectContent.AddTemplate(page, 0, 0);

我只想在检查checkbox1时才放入页面。 但是如果未选中checkbox1,则outout pdf文件非常大,重叠的文件不可见。

我删除了重叠部分:

 PdfReader reader = new PdfReader(WorkDir + "\\model.pdf");
        //PdfImportedPage page = writer.GetImportedPage(reader, 1);

        pdfOut.NewPage(); 
        //if (checkBox1.Checked) writer.DirectContent.AddTemplate(page, 0, 0);

现在文件大小正常。

我做错了什么? 我认为DirectContent元素添加了页面,但是不可见。 这可以解释为什么输出文件如此之大(重叠部分文件大小为700KB,不仅仅是4KB)

1 个答案:

答案 0 :(得分:1)

导入页面时,页面数据已添加到新文档中

PdfImportedPage page = writer.GetImportedPage(reader, 1);

后来的writer.DirectContent.AddTemplate(page, 0, 0);只会让它可见。

因此,您可能需要

PdfReader reader = new PdfReader(WorkDir + "\\model.pdf");

pdfOut.NewPage(); 
if (checkBox1.Checked)
{
    PdfImportedPage page = writer.GetImportedPage(reader, 1);
    writer.DirectContent.AddTemplate(page, 0, 0);
}