2016-01-13 22 views
0

我试图重叠模型PDF,以查看之间的差异和我的新PDF。Itextsharp pdfwriter getimported页面增长文件大小

这里是我的代码:

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未被选中,则输出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

页面的数据导入页面

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); 
} 
+0

谢谢您的回答。现在我明白getimportedpage是如何工作的。我想到在Pdfimportedpage页面中,我得到了所需的页面,addTemplate有效地将页面放在了我的pdf中。 – Razvan