Beim Speichern hat das Bild das richtige Design, aber das PDF hat den falschen Text. Können Sie erklären, warum die Dokumente unterschiedlich sind?MigraDoc und PDFsharp zeigen verschiedene Dokumente beim Speichern als PDF und Bild
Ich bin auch offen für andere Lösungen zum Speichern einer PDF des gesamten Dokuments und die Möglichkeit, eine ausgewählte Seite eines mehrseitigen Dokuments zu drucken.
Dank :)
EDIT: Das Bild zeigt das Datum („24. Mai 2016“), die richtig ist und was ich die PDF will
zeigen, sondern wird die PDF zeigt „TEST TEST“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);
}
Unklar was Sie fragen. Zeigen Sie Bilder von dem, was Sie bekommen, und erklären Sie, was anders ist als Ihre Erwartungen. Ein MCVE könnte auch helfen: https://stackoverflow.com/help/mcve –
Ich habe einige Erläuterungen zu den einzelnen Formaten hinzugefügt. Ich versuche, die ganzen Dokumente als PDF zu speichern und auch jede PDF-Seite einzeln zu drucken, ich drucke gerade jede Seite über das Bild (schreckliche Lösung, aber ich kann keinen besseren Weg finden) –
Gibt es einen bestimmten Grund für das Mischen von MigraDoc und PDFsharp? Versuchen Sie es einfach zu halten und verwenden Sie MigraDoc wie vorgesehen. Der Code sollte "TEST TEST" in der PDF-Datei zeichnen. Sie rufen den Code nicht auf, der den Header für den PDF-Fall zeichnet. –