保存すると画像のデザインは正しいですが、PDFのテキストが間違っています。なぜドキュメントが異なるのか説明できますか?MigraDocとPDFsharpは、PDFと画像として保存するときに別の文書を表示します
また、ドキュメント全体のPDFを保存し、複数ページのドキュメントの選択したページを印刷するための他のソリューションも利用できます。
感謝:)
EDIT:画像が正しいと私はPDFを表示したいですが、代わりにPDFが「TESTテスト」
を示している日付(「2016年5月24日」)を示していますpublic static void pdf() {
DateTime now = DateTime.Now;
string filename = "MixMigraDocAndPdfSharp.pdf";
filename = Guid.NewGuid().ToString("D").ToUpper() + ".pdf";
PdfDocument document = new PdfDocument();
SamplePage1(document);
document.Save(filename);
Process.Start(filename);
}
static void SamplePage1(PdfDocument document) {
PdfPage page = document.AddPage();
XGraphics gfx = XGraphics.FromPdfPage(page);
gfx.MUH = PdfFontEncoding.Unicode;
gfx.MFEH = PdfFontEmbedding.Default;
XFont font = new XFont("Verdana", 13, XFontStyle.Bold);
gfx.DrawString("TEST TEST", font, XBrushes.Black,
new XRect(100, 100, page.Width - 200, 300), XStringFormats.Center);
Document doc = new Document();
Section sec = doc.AddSection();
Paragraph para = sec.AddParagraph();
header("24th May 2016");
DocumentRenderer docRenderer = new DocumentRenderer(doc);
docRenderer.PrepareDocument();
docRenderer.RenderObject(gfx, XUnit.FromCentimeter(5), XUnit.FromCentimeter(10), "12cm", para);
PageInfo info = docRenderer.FormattedDocument.GetPageInfo(1);
int dpi = 150;
int dx, dy;
if (info.Orientation == PdfSharp.PageOrientation.Portrait) {
dx = (int)(info.Width.Inch * dpi);
dy = (int)(info.Height.Inch * dpi);
} else {
dx = (int)(info.Height.Inch * dpi);
dy = (int)(info.Width.Inch * dpi);
}
Image image = new Bitmap(dx, dy, PixelFormat.Format32bppRgb);
Graphics graphics = Graphics.FromImage(image);
graphics.Clear(System.Drawing.Color.White);
float scale = dpi/72f;
graphics.ScaleTransform(scale, scale);
gfx = XGraphics.FromGraphics(graphics, new XSize(info.Width.Point, info.Height.Point));
docRenderer.RenderPage(gfx, 1);
gfx.Dispose();
image.Save("test.png", ImageFormat.Png);
doc.BindToRenderer(docRenderer);
docRenderer.RenderObject(gfx, XUnit.FromCentimeter(5), XUnit.FromCentimeter(10), "12cm", para);
Process.Start("mspaint", "test.png");
}
public static void header(String date) {
Paragraph paragraph = new Paragraph();
var dateIssued = firstPage.AddTextFrame();
dateIssued.Height = "1.0cm";
dateIssued.Width = "6.0cm";
dateIssued.Left = "2.1cm";
dateIssued.RelativeHorizontal = RelativeHorizontal.Margin;
dateIssued.Top = "3.55cm";
dateIssued.RelativeVertical = RelativeVertical.Page;
paragraph = dateIssued.AddParagraph(date);
}
あなたが何を求めているのか不明です。あなたが得たものの画像を表示し、あなたの期待とは異なるものを説明することが役に立ちます。 MCVEもまた助けてくれるでしょう:https://stackoverflow.com/help/mcve –
各形式が何を表示しているかについていくつかの説明を追加しました。私はPDFとしてドキュメント全体を保存しようとしているし、個々のPDFページを個別に印刷しようとしています。イメージを使って各ページを印刷しています(ひどい解決策ですが、より良い方法を見つけることはできません) –
MigraDocとPDFsharp?それを単純なままにし、意図通りにMigraDocを使用してください。コードはPDFに "TEST TEST"を描画する必要があります。あなたは、PDFケースのヘッダーを描画するコードを呼び出さない。 –