itextsharp를 사용하여 여러 pdf 문서에 연결하고 바닥 글을 추가하고 있습니다. 내 코드는 잘 작동 - 가로 페이지를 제외하고 -이 페이지의 회전을 감지하지 못하고 있음을 - 바닥 글은 풍경에 대한 centerd되지 않은 :이 경우 페이지 회전 (예를 들어 가로) 형식을 감지하려면 어떻게itextsharp PdfCopy 및 가로 페이지
public static int AddPagesFromStream(Document document, PdfCopy pdfCopy, Stream m, bool addFooter, int detailPages, string footer, int footerPageNumOffset, int numPages, string pageLangString, string printLangString)
{
CreateFont();
try
{
m.Seek(0, SeekOrigin.Begin);
var reader = new PdfReader(m);
// get page count
var pdfPages = reader.NumberOfPages;
var i = 0;
// add pages
while (i < pdfPages)
{
i++;
// import page with pdfcopy
var page = pdfCopy.GetImportedPage(reader, i);
// get page center
float posX;
float posY;
var rotation = page.BoundingBox.Rotation;
if (rotation == 0 || rotation == 180)
{
posX = page.Width/2;
posY = 0;
}
else
{
posX = page.Height/2;
posY = 20f;
}
var ps = pdfCopy.CreatePageStamp(page);
var cb = ps.GetOverContent();
// add footer
cb.SetColorFill(BaseColor.WHITE);
var gs1 = new PdfGState {FillOpacity = 0.8f};
cb.SetGState(gs1);
cb.Rectangle(0, 0, document.PageSize.Width, 46f + posY);
cb.Fill();
// Text
cb.SetColorFill(BaseColor.BLACK);
cb.SetFontAndSize(baseFont, 7);
cb.BeginText();
// create text
var pages = string.Format(pageLangString, i + footerPageNumOffset, numPages);
cb.ShowTextAligned(PdfContentByte.ALIGN_CENTER, printLangString, posX, 40f + posY, 0f);
cb.ShowTextAligned(PdfContentByte.ALIGN_CENTER, footer, posX, 28f + posY, 0f);
cb.ShowTextAligned(PdfContentByte.ALIGN_CENTER, pages, posX, 20f + posY, 0f);
cb.EndText();
ps.AlterContents();
// add page to new pdf
pdfCopy.AddPage(page);
}
// close PdfReader
reader.Close();
// return number of pages
return i;
}
catch (Exception e)
{
Console.WriteLine(e);
return 0;
}
}
? 주어진 예제는 PdfCopy에 대한 것이 아니라 PdfReader에 대해 작동합니다.
편집 : 왜 내가 PdfCopy가 필요합니까? 나는 pdf 수출 낱말 복사를 시도했다. PdfReader로 페이지를 복사하려고하면 일부 단어 하이퍼 링크가 작동하지 않습니다. PdfCopy 만 필요한 모든 페이지 정보를 전송합니다.
편집 : (SOLVED) 독자는 reader.GetPageRotation (i)을 사용해야합니다.
예 - 나는했다. 하지만 나는 이것을 두 번 할 필요가 있다고 생각하지 않습니다 ... 하나의 PdfReader가 필요한 정보를 얻고 하나의 PdfCopy가 복사를 수행합니다. –