我想使用itextsharp 5读取PDF文件,并用原始PDF每页的左半部分创建一个新的PDF文件,而丢弃右半部分。我编写了以下代码,但结果已损坏,无法使用Acrobat Reader打开(尽管可以用Chrome打开它)。如何制作可与Acrobat Reader一起使用的PDF?
private byte[] ObtenerMitadPdf(byte[] Contenido)
{
using (var pdfReader = new PdfReader(Contenido))
{
using (var memoryStream = new MemoryStream())
{
using (var documento = new Document())
using (var pdfWriter = PdfWriter.GetInstance(documento, memoryStream))
{
pdfWriter.CloseStream = false;
documento.Open();
for (int i = 1; i <= pdfReader.NumberOfPages; i++)
{
var pagina = pdfWriter.GetImportedPage(pdfReader, i);
var tamañoPagina = pdfReader.GetPageSizeWithRotation(i);
var nuevoTamaño = new Rectangle(tamañoPagina.Left, tamañoPagina.Bottom,
tamañoPagina.Left + (tamañoPagina.Width / 2), tamañoPagina.Top, tamañoPagina.Rotation);
if (tamañoPagina.Rotation == 90)
{
pdfWriter.DirectContent.AddTemplate(pagina, 0, -1, 1, 0, 0, tamañoPagina.Height);
}
else
{
pdfWriter.DirectContent.AddTemplate(pagina, 0, 0);
}
documento.SetPageSize(nuevoTamaño);
documento.NewPage();
}
}
return memoryStream.ToArray();
}
}
}
答案 0 :(得分:0)
我终于设法使其正常工作!
private byte[] ObtenerMitadPdf(byte[] Contenido)
{
using (var pdfReader = new PdfReader(Contenido))
{
using (var memoryStream = new MemoryStream())
{
using (var stamper = new PdfStamper(pdfReader, memoryStream))
{
for (int i = 1; i <= pdfReader.NumberOfPages; i++)
{
var pagina = pdfReader.GetPageN(i);
var tamañoPagina = pdfReader.GetPageSizeWithRotation(i);
var mediaBox = new PdfRectangle(tamañoPagina.Left, tamañoPagina.Bottom,
tamañoPagina.Left + (tamañoPagina.Width / 2), tamañoPagina.Top, tamañoPagina.Rotation);
pagina.Put(PdfName.MEDIABOX, mediaBox);
stamper.MarkUsed(pagina);
}
}
return memoryStream.ToArray();
}
}
}