簡體   English   中英

PdfSharp:旋轉文檔中的頁面

[英]PdfSharp: Rotating a Page in a document

我正在創建一個Web應用程序,該應用程序將用於維護數據庫中的PDF文檔,當我們接收傳真時,這些PDF文檔是通過自動系統輸入的。 用戶需要能夠查看這些文檔,而他們需要對這些文檔進行處理的更常見的事情之一就是當將它們以錯誤的方式放入傳真機時翻轉/旋轉各個頁面。 這幾乎總是頁面旋轉180度。 我已經創建了一個函數來執行此操作,該函數似乎可以運行,但僅在第一次調用時才起作用。 此函數的任何后續調用似乎都不再起作用。 與該函數相關的另一個奇怪的事情是,我還調用了另一個方法,該方法將在選定位置的文檔中添加一些文本。 我傳入文本和一些坐標,然后將文本寫在文檔中的那些坐標處,一切都很好。 這里的問題是,該文件被旋轉 (在一個時間它旋轉),如果用戶試圖將文本添加到文檔中的某個地方,似乎扭轉它放置在文字的坐標,文字倒置。

所有這些告訴我,最終,我以某種方式做錯了頁面旋轉。 我似乎無法找到如何在PdfSharp文件以正確的方式旋轉頁面任何好的樣本,所以一些指導,將大大有益的,非常感謝。 提前致謝。

這是我當前用於旋轉頁面以及向頁面添加文本的代碼:

// This is how I'm rotating the page...
public PdfDocument FlipPage(byte[] documentSource, int pageNumber)
{
    using (var stream = new MemoryStream())
    {
        stream.Write(documentSource, 0, documentSource.Length);
        var document = PdfReader.Open(stream);
        var page = document.Pages[pageNumber - 1];
        page.Rotate = 180;

        return document;
    }
}

// This is how I'm adding text to a page...
public static void AddTextToPage(this PdfDocument document, int pageNumber, Annotation annotation)
{
    var page = document.Pages[pageNumber - 1];
    annotation.TargetHeight = page.Height.Value;
    annotation.TargetWidth = page.Width.Value;

    var graphics = XGraphics.FromPdfPage(page);
    var textFormatter = new XTextFormatter(graphics);
    var font = new XFont("Arial", 10, XFontStyle.Regular);
    graphics.DrawString(annotation.Text, font, XBrushes.Red, new PointF((float)annotation.TargetX, (float)annotation.TargetY));
}

那不是我的專業領域,而是“ page.Rotate = 180;”。 我會嘗試這樣的事情:

page.Rotate = (page.Rotate + 180) % 360;

(代碼未經測試,可能需要強制轉換)

添加文本時,可以測試“ page.Rotate == 180”,然后使用其他代碼(例如“ graphics.RotateTransform(180)”)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM