C# 使用ITextSharp合并PDF并删除空白
我在处理图像PDF文件(仅包含图像的PDF文件,无文本)时遇到问题。有两个PDF文件img1、img2,我想将其中两个合并为一个A4页的PDF文件 我试过下面的代码C# 使用ITextSharp合并PDF并删除空白,c#,winforms,pdf,itextsharp,C#,Winforms,Pdf,Itextsharp,我在处理图像PDF文件(仅包含图像的PDF文件,无文本)时遇到问题。有两个PDF文件img1、img2,我想将其中两个合并为一个A4页的PDF文件 我试过下面的代码 string Img1 = "C:/temp/image1.pdf"; string Img2 = "C:/temp/image2.pdf"; string MergedFile = "C:/temp/Combo.pdf"; //Create our PDF readers PdfReader r1 = new PdfReader
string Img1 = "C:/temp/image1.pdf";
string Img2 = "C:/temp/image2.pdf";
string MergedFile = "C:/temp/Combo.pdf";
//Create our PDF readers
PdfReader r1 = new PdfReader(Img1);
PdfReader r2 = new PdfReader(Img2);
//Our new page size, an A3 in landscape mode
iTextSharp.text.Rectangle NewPageSize = PageSize.A3.Rotate();
using (FileStream fs = new FileStream(MergedFile, FileMode.Create,
FileAccess.Write, FileShare.None))
{
//Create our document without margins
using (Document doc = new Document(NewPageSize, 0, 0, 0, 0))
{
using (PdfWriter w = PdfWriter.GetInstance(doc, fs))
{
doc.Open();
//Get our imported pages
PdfImportedPage imp1 = w.GetImportedPage(r1, 1);
PdfImportedPage imp2 = w.GetImportedPage(r2, 1);
//Add them to our merged document at specific X/Y coords
**w.DirectContent.AddTemplate(imp1, 0, 0);
w.DirectContent.AddTemplate(imp2, 0, -350);**
doc.Close();
}
}
}
r1.Close();
r2.Close();
所以当我执行上面的代码时,因为我提到了y坐标,它将结合pdf,两个图像将仅在一个页面上
但我不想那样做
这里我只是举两个图像的例子,但实际上有20多个图像(转换成PDF)
因此,根据图像大小,它应该组合文件。我不能为每个文件提供修复y坐标
有谁能帮我把多个PDF合并成一个没有空格的PDF吗
从结构上讲,以下是您想要做的:
- 分配一个“合适”大小的新页面
- 合并页面的内容流
- 合并页面的资源
- 调整所有注释(如果有)
1 0 0 1 X Y cm
现在,在这里,所有这些工作都将陷入困境。如果页面旋转,这将不起作用。如果页面有裁剪框,则必须查看它并调整裁剪区域以模拟裁剪。如果页面已旋转且具有文本批注,则需要注意批注标志,以确保纵横比正确。如果文档在任何具有转到操作/目标的页面上都有链接注释,则需要调整这些注释 那么,原始PDF中是否存在空白,而您只想裁剪图像,然后合并?@ChrisHaas是的,没错,但我不想这样做-您不想这样做只是因为您不知道y坐标?还是有其他原因?如果只是因为y坐标,您可以简单地将iTextSharp解析器类应用于源页面,以确定每个页面的y坐标范围,并由此计算
AddTemplate
调用的y。@Prashant Bhojani:您解决问题了吗。这对我来说很有趣。@Higune我还是没有得到我想要的。