2017-05-16 76 views
1

我試過MigraDoc GDI 1.50.4000-beta3b和1.32.4334.0下面的代碼。當我將頁面大小設置爲合法格式時,它不會被轉換爲合法格式,或者它會在頂部留下大量空白,就好像頁面大小爲8.5 x 11,並且額外的長度被插入頂部的PDF。我寧願將文本從頁面頂部開始。我怎樣才能解決這個問題?想要在法律頁面格式頂部刪除大幅度

在下面的示例中,頂部有一個很大的餘量。

// Create a new MigraDoc document 
Document document = new Document(); 
//document.UseCmykColor = true; 

// Add a section to the document 
Section section = document.AddSection(); 
section.PageSetup = document.DefaultPageSetup.Clone(); 
section.PageSetup.PageFormat = PageFormat.Legal; //setting page size here didn't seem to work 
section.PageSetup.TopMargin = "0cm"; 

// Add a paragraph to the section 
Paragraph paragraph = section.AddParagraph(); 

paragraph.Format.Font.Color = Color.FromCmyk(100, 30, 20, 50); 

// Add some text to the paragraph 
paragraph.AddFormattedText(@"Hello World!", TextFormat.Bold); 

#if GDI 
// Using GDI-specific routines. 
// Make sure to use "#if GDI" for any usings you add for platform-specific code. 
{ 
} 
#endif 

#if WPF 
// Using WPF-specific routines. 
// Make sure to use "#if GDI" for any usings you add for platform-specific code. 
{ 
} 
#endif 

// Create a renderer for the MigraDoc document. 
PdfDocumentRenderer pdfRenderer = new PdfDocumentRenderer(true); 

// Associate the MigraDoc document with a renderer 
pdfRenderer.Document = document; 

// Layout and render document to PDF 
pdfRenderer.RenderDocument(); 

pdfRenderer.PdfDocument.Pages[0].Size = PdfSharp.PageSize.Legal; 

// Save the document... 
const string filename = "HelloWorld.pdf"; 

pdfRenderer.PdfDocument.Save(filename); 
// ...and start a viewer. 
Process.Start(filename); 
+2

在渲染文檔後設置頁面大小的想法很糟糕。如果你採用'section.PageSetup = document.DefaultPageSetup.Clone();'out這行嗎? –

+0

非常感謝!那就是訣竅。那麼爲什麼這個URL會說「你不應該修改DefaultPageSetup,而是使用Clone()」? http://stackoverflow.com/questions/32757196/how-can-set-the-page-size-of-migradoc我也停止渲染後設置頁面大小。那只是一個黑暗中的鏡頭,看看它是否解決了問題 – Hoppe

+0

關鍵是:不要修改DefaultPageSetup。修改您的部分的PageSetup,無論是否指定DefaultPageSetup的克隆。 –

回答

2

PageFormat用於設置PageWidthPageHeight如果沒有設置。

調用section.PageSetup = document.DefaultPageSetup.Clone();將A4尺寸的值分配給PageWidthPageHeight。稍後更改PageFormat對保留A4的有效頁面尺寸沒有影響。

調用section.PageSetup = document.DefaultPageSetup.Clone();後,您必須將PageWidthPageHeight設置爲正確的值。

section.PageSetup = document.DefaultPageSetup.Clone();用於初始化PageSetup的所有值。如果使用PageSetup根據邊距等進行計算,請使用此方法。通常不推薦調用section.PageSetup = document.DefaultPageSetup.Clone();。強烈建議使用Clone()而不是直接更改DefaultPageSetup

如果您未指定Clone(),則設置PageFormat會按預期工作。