如何在没有隐藏层上下文的情况下使用Itextsharp获取PDFIImportedPage
当我使用itextsharp从现有PDF文件生成PDF文件时,我的工作代码是如何在没有隐藏层上下文的情况下使用Itextsharp获取PDFIImportedPage,itext,Itext,当我使用itextsharp从现有PDF文件生成PDF文件时,我的工作代码是 string sourceFile=“a4.pdf”,targetFile=“processed.pdf”; PdfReader reader=新的PdfReader(源文件); 单据单据=新单据(); PdfWriter writer=PdfWriter.GetInstance(doc,newfilestream(targetFile,FileMode.Create)); doc.Open(); PdfConten
string sourceFile=“a4.pdf”,targetFile=“processed.pdf”;
PdfReader reader=新的PdfReader(源文件);
单据单据=新单据();
PdfWriter writer=PdfWriter.GetInstance(doc,newfilestream(targetFile,FileMode.Create));
doc.Open();
PdfContentByte cb=writer.DirectContent;
PDF导入页面;
对于(int pageNumber=1;pageNumber您必须使用OCGRemover
类来完成此操作:您的任务似乎是将页码添加到PDF中。如果您使用PdfStamper
而不是不适当的复制例程,则隐藏层将保持为隐藏层。这很多!但我找不到隐藏层。@mklvar canvas=母版。GetOverContent(第页)
可以。但是画布上的bleedbox/cropbox/trimbox与源文件相同。这会在其他操作中给我带来麻烦!有什么方法可以删除这些框吗?你太好了!严格来说,这是一个完全不同的问题,所以如果你想要详细的答案,你应该在实际问题中提问,而不是在评论中提问。这是正确的是的,您可以简单地更改这些框。删除它们是一个坏主意,至少媒体框必须保留一个有效页面。您可以通过检索相关页面字典并相应地将框条目放入其中来设置框值。Cf.或。
string sourceFile = "a4.pdf", targetFile = "processed.pdf";
PdfReader reader = new PdfReader(sourceFile);
Document doc = new Document();
PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(targetFile, FileMode.Create));
doc.Open();
PdfContentByte cb = writer.DirectContent;
PdfImportedPage page;
for (int pageNumber = 1; pageNumber <= reader.NumberOfPages; pageNumber++)
{
doc.SetPageSize(reader.GetPageSizeWithRotation(pageNumber));
doc.NewPage();
page = writer.GetImportedPage(reader, pageNumber);
//Write a PageIndex
ColumnText.ShowTextAligned(cb, PdfContentByte.ALIGN_CENTER, new Phrase(pageNumber.ToString()), 100, 0, 0);
cb.AddTemplate(page, 0, 0);
}
doc.Close();