Envoyé par : DavidC
Date : 06/09/2011 16:44
Bonjour,
J'utilise XUL 1.9, et j'imprime un fichier, mais dans la popup d'impression, le nom du fichier (dont la taille est supérieure à 50 caractères) est tronqué au moment ou je l'enregistre en format PDF. J'obtiens : nomDeMonFichier...
Voici mon code :
printWithOutputFileName : function(outputFileName, showProgressBar) {
  var webBrowserPrint = this.getWebBrowserPrint();
  var printSettings = this.getPrintSettings();
  printSettings.docURL = "titre";
  printSettings.title = outputFileName;
  printSettings.showPrintProgress = false;
  printSettings.printToFile = true;
  printSettings.toFileName = outputFileName;
  webBrowserPrint.print(printSettings, nProgressListener);
		
  var PSSVC = Components.classes["@mozilla.org/gfx/printsettings-service;1"].getService(Components.interfaces.nsIPrintSettingsService);
  PSSVC.savePrintSettingsToPrefs(printSettings, true,printSettings.kInitSaveAll);
  PSSVC.savePrintSettingsToPrefs(printSettings, false,printSettings.kInitSavePrinterName);
}
avec
getWebBrowserPrint : function() {
  return _content.QueryInterface(Components.interfaces.nsIInterfaceRequestor).getInterface(Components.interfaces.nsIWebBrowserPrint);
},
Or cela fonctionnait avec la version précédente de XUL. Y-a-t'il une limitation du nombre de caractères pour le nom d'un fichier ?
Merci pour votre aide.
Envoyé par : thx1138
Date : 07/09/2011 23:53
Tu génères du PDF directement à partir de XulRunner ?
Peux-tu donner un exemple complet stp
merci
Envoyé par : DavidC
Date : 08/09/2011 10:01
Tu as un exemple assez complet ici
Envoyé par : thx1138
Date : 13/09/2011 00:24
Tu es sur du lien ?
Envoyé par : DavidC
Date : 13/09/2011 09:32
Voici mon code :
function getWebBrowserPrint()
{
   return _content.QueryInterface(Components.interfaces.nsIInterfaceRequestor).getInterface(Components.interfaces.nsIWebBrowserPrint);
}
function getPrintSettings()
{
   var pref = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
   if (pref) {
       gPrintSettingsAreGlobal = pref.getBoolPref("print.use_global_printsettings", false);
       gSavePrintSettings = pref.getBoolPref("print.save_print_settings", false);
   }
}
function print()
{
    var webBrowserPrint = getWebBrowserPrint();
    var printSettings = getPrintSettings();
    printSettings.docURL = outputFileName;
    printSettings.showPrintProgress = false;
    printSettings.printBGColors = true;
    printSettings.printBGImages = true;
    printSettings.toFileName = outputFileName;
    try {
        webBrowserPrint.print(printSettings, null);
        if (gPrintSettingsAreGlobal && gSavePrintSettings) {
            var PSSVC = Components.classes["@mozilla.org/gfx/printsettings-service;1"].getService(Components.interfaces.nsIPrintSettingsService);
            PSSVC.savePrintSettingsToPrefs(printSettings, true,
            printSettings.kInitSaveAll);
            PSSVC.savePrintSettingsToPrefs(printSettings, false,
            printSettings.kInitSavePrinterName);
        }
    } catch (e) {
       LOG(e);
    }
}        Envoyé par : DavidC
Date : 23/09/2011 09:30
Bonjour,
le problème vient finalement d'une limitation de la longueur du nom du fichier à 30 caractères, dans la méthode BeginPrinting de gfxWindowsSurface.cpp, suite à un crash dans la dialogue "Enregistrer sous".
nsresult gfxWindowsSurface::BeginPrinting(const nsAString& aTitle,
                                const nsAString& aPrintToFileName)
{
#ifdef NS_PRINTING
#define DOC_TITLE_LENGTH 30
   DOCINFOW docinfo;
   nsString titleStr(aTitle);
   if (titleStr.Length() > DOC_TITLE_LENGTH) {
       titleStr.SetLength(DOC_TITLE_LENGTH-3);
       titleStr.AppendLiteral("...");
   }
...
Dans des versions plus récentes de XUL1.9, cette limitation a été passée à 1024.
Cordialement.
Envoyé par : Raphael
Date : 24/09/2011 06:27
Merci pour l'info... et désolé que personne n'ait pu t'aider sur ce coup.
J'adore cette plateforme, mais c'est pas toujours facile de trouver de l'aide pour des trucs pointus. =/
Envoyé par : thx1138
Date : 25/09/2011 02:31
Tu sais comment faire un printPreview avec XulRunner >= 2 ?
Il n'est plus possible de poster des messages dans ce forum.
Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.
Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™
sont des marques de la fondation Mozilla.