WebHU - Programozási kérdések és válaszok

PrintDialog fekvő és álló oldalakkal

Van egy System.Window.Controls.PrintDialogom, és fekvő és álló módban szeretnék oldalakat nyomtatni egyetlen PrintTicket segítségével, de úgy tűnik, csak egyszer tudom beállítani a tájolást.

Amíg papírra akarok nyomtatni, ez lehet, hogy nem nagy baj, de szeretnék nyomtatni/létrehozni egy PDF dokumentumot a Printjob-omból. Ott szükségem van fekvő és álló módú oldalakra az onc dokumentumban.

Eddig sikerült 90 fokkal elforgatnom a fekvő oldalakat, és ez jól működik, de a PrintPreview-ban nagyon furcsán néz ki az elforgatott tartalom miatt.

22.11.2011

  • Találtál valaha módot erre? Nagyjából ugyanezen okok miatt szeretném megtenni (PDF-be történő nyomtatás vegyes álló/fekvő oldalakkal), és nem találtam ki, hogyan tudnám működésre bírni. 10.02.2012
  • Nem válasz, de dolgoztam egy projektben, ahol erre is szükség volt. Napokig tartó kutatás után ugyanazt csináltam, mint te. Az XPS-dokumentumok azonban képesek a helyes papírtájolásra (amint az MS Wordből XPS-be exportálva látható). Még mindig várom, hogyan készül. 14.02.2012

Válaszok:


1

Nem olyan tiszta, mint szeretné, és inkább megoldás, de úgy gondolom, hogy ez elérheti a célját. Használhatja az iTextSharp könyvtárat a PDF-fájlok egybefűzésére több nyomtatási feladatot követően. Íme néhány mintakód.

Remélhetőleg valaki talál egy egyszerűbb megoldást.

16.02.2012

2

Hosszú idő múlva...

Ezt úgy teheti meg, hogy minden oldal kinyomtatása előtt megad egy EventHandler-t, amely felhívja az egyéni Print Ticket-et. A PageViewModel itt hatékonyan tartalmazza

PageViewModel{
    Page Page {get;set;}
    PageOrientation? PageOrientation {get;set}
}

if (PrintDialog.ShowDialog() == true)
  {
    XpsDocumentWriter xpsDocumentWriter = PrintQueue.CreateXpsDocumentWriter(PrintDialog.PrintQueue);
    xpsDocumentWriter.WritingPrintTicketRequired += (s, e) =>
    {
      PageViewModel pVM = publicationVM.Pages[e.Sequence - 1];
      if (pVM.Orientation != null && pVM.Orientation != publicationVM.Orientation)
      {
        e.CurrentPrintTicket = new PrintTicket();
        e.CurrentPrintTicket.PageOrientation = PageOrientation.Portrait;
      }
    };
    VisualsToXpsDocument visualsToXpsDocument = (VisualsToXpsDocument) xpsDocumentWriter.CreateVisualsCollator(PrintDialog.PrintTicket, PrintDialog.PrintTicket);
    visualsToXpsDocument.BeginBatchWrite();
    Page page;
    foreach (PageViewModel pVM in publicationVM.Pages)
    {
      page = pVM.Page;
      visualsToXpsDocument.Write(page);
    }
    visualsToXpsDocument.EndBatchWrite();
  }

és bingó! vegyes portré és tájkép. A kétoldalas nyomtatás is jó.

06.10.2014
Új anyagok

A rádiógomb ellenőrzött eseményének használata a jQueryben
Ebben a cikkben látni fogjuk, hogyan kell dolgozni a jquery választógombbal ellenőrzött eseményeivel. A választógombok HTML gombok, amelyek segítenek kiválasztani egyetlen értéket egy csoportból...

Körkörös függőségek megoldása terraformban adatforrásokkal – lépésről lépésre
Mi az a körkörös függőségek Dolgozzunk egy egyszerű eseten, amikor az SQS-sor és az S3-vödör közötti körkörös függőség problémája van egy egymástól függő címkeérték miatt. provider..

Miért érdemes elkezdeni a kódolást 2023-ban?
01100011 01101111 01100100 01100101 — beep boop beep boop Világunk folyamatosan fejlődik a technológia körül, és naponta fejlesztenek új technológiákat a valós problémák megoldására. Amint..

🎙 Random Noise #2  – Örökbefogadás és hit
az analitika íratlan világának gondozása Szeretné, hogy ezek a frissítések a postaládájába kerüljenek? Iratkozzon fel itt . "Ha önvezető autókat gyártanak, akkor mi miért ne..

A legrosszabb politika és prediktív modellek májátültetésre jelöltek számára az Egyesült Államokban
A máj (vagy óangolul lifer) az emberi test legnehezebb belső szervére utal, amely csendesen működik a nap 24 órájában. Mit csinál a máj? 500 feladatot hajt végre a szervezet egészségének..

5 webhely, amely 2022-ben fejleszti front-end fejlesztői készségeit
Frontendmentor.io A tényleges projektek létrehozásával a Frontendmentor.io segítséget nyújt a front-end kódolási képességeinek fejlesztésében. A kódolást azután kezdheti meg, hogy..

Mikor kell használni a Type-t az interfészhez képest a TypeScriptben?
A TypeScript a JavaScript gépelt szuperkészlete, amely statikus gépelést ad a nyelvhez. Ez megkönnyíti a robusztus és karbantartható kód írását azáltal, hogy a hibákat a fordítási időben..