如何在itext7中提取页面的一部分并写入新的PDF文件?
我想把一个PDF页面分成4个象限。然后将每个象限写入单独的PDF页面(或文档)。我不想裁剪现有页面,而是提取每个象限的内容并将其写入新的PDF文件。使用itext7有什么方法可以做到这一点吗?我想提一提的是,itextsharp和itext7的文档很糟糕,而且在很多方面都很缺乏——如果你愿意阅读一本书,那么《iText-in-Action第二版》是唯一的帮助,而且这些示例仅用Java编写,有些代码是用C#以不同的方式实现的,更不用说这只在iText5上 作为将来的参考-假设您需要相等的部件拆分,下面是实现该技巧的方法(适用于4x4-即16个部件):如何在itext7中提取页面的一部分并写入新的PDF文件?,pdf,itext7,text-extraction,Pdf,Itext7,Text Extraction,我想把一个PDF页面分成4个象限。然后将每个象限写入单独的PDF页面(或文档)。我不想裁剪现有页面,而是提取每个象限的内容并将其写入新的PDF文件。使用itext7有什么方法可以做到这一点吗?我想提一提的是,itextsharp和itext7的文档很糟糕,而且在很多方面都很缺乏——如果你愿意阅读一本书,那么《iText-in-Action第二版》是唯一的帮助,而且这些示例仅用Java编写,有些代码是用C#以不同的方式实现的,更不用说这只在iText5上 作为将来的参考-假设您需要相等的部件拆分,
public void操作EPDF(string src,string dest)
{
PdfReader读取器=新PdfReader(src);
iTextSharp.text.Rectangle pagesize=reader.GetPageSizeWithRotation(1);
文档=新文档(页面大小);
PdfWriter writer=PdfWriter.GetInstance(文档,
新的文件流(dest,FileMode.OpenOrCreate,FileAccess.ReadWrite,FileShare.ReadWrite));
document.Open();
PdfContentByte content=writer.DirectContent;
PDFIImportedPage=writer.GetImportedPage(读取器,1);
浮动x,y;
对于(int i=0;i<16;i++)
{
x=-pagesize.Width*(i%4);
y=页面大小。高度*(i/4-3);
content.AddTemplate(第4、0、0、4、x、y页);
document.NewPage();
}
document.Close();
}
“我不想裁剪现有页面,但要提取每个象限的内容并将其写入新的PDF文件”-以何种方式排除裁剪?拥有四份页面副本并分别进行裁剪应该可以,不是吗?“《iText-in-Action第二版》这本书是唯一的帮助”-如果你看看itextpdf网站,尤其是那里的知识库,你可能会感到惊讶。也就是说,您的代码是针对itext 5的,而不是针对itext 7的。
public void manipulatePdf(string src, string dest)
{
PdfReader reader = new PdfReader(src);
iTextSharp.text.Rectangle pagesize = reader.GetPageSizeWithRotation(1);
Document document = new Document(pagesize);
PdfWriter writer = PdfWriter.GetInstance(document,
new FileStream(dest, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite));
document.Open();
PdfContentByte content = writer.DirectContent;
PdfImportedPage page = writer.GetImportedPage(reader, 1);
float x, y;
for (int i = 0; i< 16; i++)
{
x = -pagesize.Width * (i % 4);
y = pagesize.Height * (i / 4 - 3);
content.AddTemplate(page, 4, 0, 0, 4, x, y);
document.NewPage();
}
document.Close();
}