combit sucht Entwickler – jetzt informieren und einsteigen!

List & Label Forum Neues Feature vorschlagen

Bitte melden Sie sich hier an um eine Nachricht zu schreiben.

Themenübersicht    Forum durchsuchen    Ansicht: 
Stefan Kriebitzsch - 08.02.2018 16:20:53
   

ACTION zu PDF hinzufügen

Hallo combit Team,

ich möchte gern ein PDF über den Browser ausdrucken. Hierfür ist es notwendig eine ACTION, welche beim Öffnen eines PDF ausgeführt wird, zu erstellen. Eine so genannte OPENACTION.
Wie kann dies beim Erstellen eines PDF aus einem Report auf einem Server (also ohne Userinteraktion) mit List&Label gemacht werden?

Beispiel automatische Navigation zu einer Webseite beim Öffnen eines PDFs:
/TYPE /ACTION
/S /URI
/URI (http://www.combit.net)

Mit freundlichen Grüßen
Stefan Kriebitzsch

Felix Meedt - 09.02.2018 08:54:10
   

RE:ACTION zu PDF hinzufügen

Hallo,
das Ganze habe ich mit PdfSharp gelöst.
Zuerst gibt man den Export als Stream aus.
Danach kann man diesen mit PdfSharp bearbeiten.
Der Ergebnis-Stream wird dann an den Browser übergeben.

Sieht bei mir so aus:

MemoryStream pdfStream = new MemoryStream();
PrinterSettings settings = new PrinterSettings();
settings.PrinterName = "HPM3027";
settings.Copies = 1;
LlProject projType = RepositoryItemType.ToLlProject(RepositoryHelper.GetCurrentRepository().GetItem(TemplateItemID).Type);
LL.Core.LlSetPrinterInPrinterFile(projType, TemplateItemID, LlPrinterIndex.AllPages, settings);
ExportConfiguration exportConfig = new ExportConfiguration(LlExportTarget.Pdf, pdfStream, TemplateItemID);
exportConfig.BoxType = LlBoxType.None;
exportConfig.Path = null;
exportConfig.ExportOptions.Add(LlExportOption.ExportQuiet, "1");
LL.Export(exportConfig);
PdfDocument document = new PdfDocument();
document = PdfReader.Open(pdfStream);
PdfDictionary dict = new PdfDictionary(document);
dict.Elements["/Type"] = new PdfName("/Action");
dict.Elements["/S"] = new PdfName("/Named");
dict.Elements["/N"] = new PdfName("/Print");
document.Internals.AddObject(dict);
document.Internals.Catalog.Elements["/OpenAction"] = PdfInternals.GetReference(dict);
MemoryStream outputDoc = new MemoryStream();
document.Save(outputDoc, false);
Response.Clear();
Response.ContentType = "application/pdf";
Response.AddHeader("content-length", outputDoc.Length.ToString());
Response.BinaryWrite(outputDoc.ToArray());
Response.Flush();
outputDoc.Close();
pdfStream.Close();
Response.End();


Stefan Kriebitzsch - 09.02.2018 14:47:20
   

RE:ACTION zu PDF hinzufügen

Vielen Dank!
Funktioniert einwandfrei.

Last update: 2017-11-23
+49 (0) 7531 90 60 10