带有itextsharp的ImportPage不能按预期工作

时间:2014-05-22 10:28:13

标签: .net pdf itextsharp version

我有一个过程,可以将现有PDF中的PDF页面插入另一个使用Web应用程序中的PdfWriter从头开始创建的PDF(新PDF是作为发送到浏览器的内容响应创建的)。

直到今天一切正常,但现在我遇到了问题。

我使用了itextsharp和GetImportedPage。我尝试更新我的itextsharp dll但仍然无法正常工作,我只在我的pdf中得到一个空白页。

1 个答案:

答案 0 :(得分:1)

看看下面的截图: enter image description here

如您所见,页面词典的/Rotate条目值为90。

现在看看你的代码:

if ((ReceiptPageRotation == 90) || (ReceiptPageRotation == 270)) {
    writer.DirectContent.AddTemplate(importedPage, 20f, 20f, 20f, 20f, 0, ReceiptReader.GetPageSizeWithRotation(1).Height);
}
else {
    writer.DirectContent.AddTemplate(importedPage, 0, 0);
}

如果页面没有旋转,则将导入的页面放在A4页面的左下角坐标上。如果您的原始页面也是A4页面,这将有效。如果原始页面的格式不同,则新页面可能太大或太小。

然而,页面是旋转的,就像test.pdf 一样,你执行一个非常奇怪的转换和翻译。 您正在添加页面(当您查看生成的文件的文件大小时,您会注意到这一点),但是您要完全变形原始页面并且您已经将其添加到页面的可见区域之外。

请丢弃您的代码并重新开始。您应该阅读Chapter 6 of my book并考虑使用PdfStamper代替PdfWriter