我正在尝试创建app作物pdf并旋转页面(所有页面都应该有较长的横向水平)。
我首先使用此功能裁剪:
public void obreziPDF(string fileName)
{
f (System.IO.File.Exists(fileName))
{
string putanja = System.IO.Path.GetDirectoryName(fileName);
PdfReader pdfReader = new PdfReader(System.IO.File.ReadAllBytes(fileName));
PdfStamper stamper = new PdfStamper(pdfReader, new System.IO.FileStream(fileName, FileMode.Create, FileAccess.Write));
for (int p = 1; p <= pdfReader.NumberOfPages; p++)
{
PdfDictionary page = pdfReader.GetPageN(1);
Rectangle rect = getOutputPageSize(pdfReader, 1);
float[] flo = { rect.Left, rect.Bottom, rect.Right, rect.Top };
PdfArray pdfa = new PdfArray(flo);
page.Put(PdfName.MEDIABOX, pdfa);
stamper.MarkUsed(page);
}
stamper.Close();
pdfReader.Close();
}
}
这将检查旋转并根据需要旋转。
public void okreniPDF(string fileName)
{
if (System.IO.File.Exists(fileName))
{
string putanja = System.IO.Path.GetDirectoryName(fileName);
PdfReader pdfReader1 = new PdfReader(System.IO.File.ReadAllBytes(fileName));
// PdfStamper stamper = new PdfStamper(pdfReader, ms);
PdfStamper stamper1 = new PdfStamper(pdfReader1, new System.IO.FileStream(fileName, FileMode.Create, FileAccess.Write));
for (int p = 1; p <= pdfReader1.NumberOfPages; p++)
{
Rectangle mediabox = pdfReader1.GetPageSize(1);
Rectangle cropbox = pdfReader1.GetCropBox(1);
Rectangle r1 = pdfReader1.GetBoxSize(1, "media");
PdfDictionary page1 = pdfReader1.GetPageN(1);
Rectangle pagesize = pdfReader1.GetPageSizeWithRotation(page1);
if (arotiraj.IsChecked == true)
{
if (pagesize.Left - pagesize.Right > 300)
{
if (pagesize.Left - pagesize.Right < pagesize.Top - pagesize.Bottom)
{
page1.Put(PdfName.ROTATE, new PdfNumber(90));
}
}
}
}
stamper1.Close();
pdfReader1.Close();
}
}
问题是Rectangle pagesize获得了未剪裁的大小。我在做什么wromg?
答案 0 :(得分:0)
请查看以下常见问题解答主题:
当我阅读你问题的主题时,我认为你正在定义一个裁剪框。当我阅读您的代码时,我发现您不会改变任何内容。
你创建一个应该访问每个页面的循环,但你总是得到第一页的页面字典。
你有:
PdfDictionary page = pdfReader.GetPageN(1);
但我希望:
PdfDictionary page = pdfReader.GetPageN(p);
我不知道getOutputPageSize()
方法的含义,但您也将1
作为参数传递到我期望的p`。这看起来不对。
你在okreniPDF()
方法中犯了同样的错误。您尝试更改第一页和仅第一页的次数与文档中的页面一样多。这非常无效。
<强>更新强>
显然你知道自己的错误,现在你声称你遇到的问题是另一回事。但是,您无法解释问题的本质。也许你对所见所闻的解释都是错的。