PDFSharp - configurações de página PDF errado quando documento for aberto no Acrobat

StackOverflow https://stackoverflow.com/questions/1323737

  •  19-09-2019
  •  | 
  •  

Pergunta

Eu escrevi um pedaço de código que usa a biblioteca PDFSharp. A instância do PdfSharp.Pdf.PdfDocument criado salva no disco como esperado. O conteúdo correto é exibido, mas para as configurações de página errado.

As configurações de página padrão para PDFSharp são:

  1. PdfSharp.PageSizes.A4
  2. PdfSharp.PageOrientation.Portrait

Meu problema é que essas configurações parecem substituir as definições necessárias.

Eu criar a instância da classe PdfDocument e adiciona uma nova instância da classe PdfPage à sua propriedade de coleção Pages. Então, eu configurei a página como esta:

  1. PdfDocument.Pages [0] .size = PdfSharp.PageSizes.Letter
  2. PdfDocument.Pages [0] .Orientation = PdfSharp.PageOrientation.Landscape
  3. Chamo as cordas (Isso funciona bem)
  4. Eu salvar o documento para o disco (Isso funciona bem)
  5. Process.Start (myPdfFilename) - então Acrobat Reader abre com a minha documento.
  6. As configurações de página são A4 - Retrato ...

Estou bastante confuso. Eu sei de uma opção dentro Acrobat Reader, que permite ao usuário alterar a orientação da página sem alterar a direção do texto. Não importa se eu marcar esta opção ou não, ainda as configurações erradas continuar.

Qualquer um tem uma idéia? Obrigado!

Foi útil?

Solução

Por alguma estranha razão, PDFSharp parece não se comportam da mesma tanto com o seguinte:

Exemplo 1 -. Não parece associar a instância do PdfPage classe para o PdfDocument mesmo que as configurações de página estão corretos ao chamar e depois de ter chamado o método PdfDocument.Save ()

var pdfDoc = new PdfDocument();
var pdfPage = pdfDoc.AddPage();
pdfPage.Orientation = PdfSharp.PageOrientation.Landscape;
pdfPage.Size = PdfSharp.PageSize.Letter;
pdfPage.Rotate = 0;
pdfDoc.Save(filename);

Exemplo 2 - O mesmo aqui ...

var pdfDoc = new PdfDocument();
pdfDoc.Pages.Add();
pdfDoc.Pages[0].Orientation = PdfSharp.PageOrientation.Landscape;
pdfDoc.Pages[0].Size = PdfSharp.PageSize.Letter;
pdfDoc.Pages[0].Rotate = 0;
pdfDoc.Save(filename);

Exemplo 3 - Esta parece ter resolvido o meu problema

var pdfPage = new PdfPage();
pdfPage.Orientation = PdfSharp.PageOrientation.Landscape;
pdfPage.Size = PdfSharp.PageSize.Letter;
pdfPage.Rotate = 0;
var pdfDoc = new PdfDocument();
pdfDoc.Pages.Add(pdfPage);
pdfDoc.Save(filename);

Alguém tem alguma idéia do que estou em falta aqui? I parecem fazer o mesmo em qualquer um destes exemplos, tanto quanto eu estou em causa.

A solução é:

var pdfPage = new PdfPage();
pdfPage.Size = PdfSharp.PageSize.Letter;
pdfPage.Orientation = PdfSharp.PageOrientation.Landscape;
pdfPage.Rotate = 0;
var pdfDoc = new PdfDocument();
pdfDoc.Pages.Add(pdfPage);
pdfDoc.Save(filename);

Defina o tamanho do primeiro.

Obrigado por quaisquer comentários e / ou respostas!

Outras dicas

Eu examinei esta questão. Parece que você tem que definir "page.Size" antes de "page.Orientation" a paisagem. Este é um erro porque a ordem não deve importar aqui.

Order importa - mas a solução é simples: troca de 2 linhas no Exemplo 1 e está feito (BTW: não há necessidade de definir Girar a 0)

.

PDFsharp Fórum:
http://forum.pdfsharp.net/

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top