Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CREER UN PDF DIRECTEMENT DEPUIS SQL SERVER


Information sur la source

Catégorie :Fonctions Classé sous : pdf, sql, procedure, server, to Niveau : Initié Date de création : 07/06/2007 Vu : 10 876

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note


Description

Cliquez pour voir la capture en taille normale
J'ai trouvé cette procédure sur le net...
Cette procédure prend en entrée le nom du fichier PDF à générer.
Une table doit d'abord être créée:
CREATE TABLE psopdf (code NVARCHAR(80))
Puis créer la procédure stockée indiquée dans la partie code.

Ensuite remplir la table psopdf avec les données.
Exemple :
INSERT psopdf(code) SELECT SPACE(60) + 'COMPANY LTD'
INSERT psopdf(code) SELECT SPACE(60) + 'COMPANY ADDRESS'
INSERT psopdf(code) SELECT SPACE(60) + 'STREET NAME & No'
INSERT psopdf(code) SELECT ' '
INSERT psopdf(code) SELECT SPACE(34) + 'BILL OF SALE'
INSERT psopdf(code) SELECT ' '
INSERT psopdf(code) SELECT 'Product' + SPACE(10) + 'Quantity'
+ SPACE(10) + 'Price' + SPACE(10) + 'Total'
INSERT psopdf(code) SELECT REPLACE(SPACE(56), ' ', '_')
INSERT psopdf(code) SELECT 'Product1' + SPACE(9) + '10.00 '
+ SPACE(10) + '52.30' + SPACE(10) + '5230.0'
INSERT psopdf(code) SELECT 'Product2' + SPACE(9) + '2.00 '
+ SPACE(10) + '10.00' + SPACE(10) + ' 20.0'
INSERT psopdf(code) SELECT REPLACE(SPACE(56), ' ', '_')
INSERT psopdf(code) SELECT SPACE(50) + '5250.0'


Aprés lancer la procédure :


EXEC sql2pdf 'demo2'

Le résultat est sur le C:\


 

Source

  • CREATE PROCEDURE sql2pdf
  • @filename VARCHAR(100)
  • AS
  • CREATE TABLE #pdf (idnumber INT IDENTITY(1,1)
  • ,code NVARCHAR(200))
  • CREATE TABLE #xref (idnumber INT IDENTITY(1,1)
  • ,code VARCHAR(30))
  • CREATE TABLE #text (idnumber INT IDENTITY(1,1)
  • ,code VARCHAR(200))
  • DECLARE @end VARCHAR(7),
  • @beg VARCHAR(7),
  • @a1 VARCHAR(3),
  • @a2 VARCHAR(3),
  • @ad VARCHAR(5),
  • @cr VARCHAR(8),
  • @pr VARCHAR(9),
  • @ti VARCHAR(6),
  • @xstr VARCHAR(10),
  • @page VARCHAR(8000),
  • @pdf VARCHAR(100),
  • @trenutniRed NVARCHAR(200),
  • @rows INT,
  • @ofset INT,
  • @len INT,
  • @nopg INT,
  • @fs INT,
  • @ole INT,
  • @x INT,
  • @file INT,
  • @object INT
  • SELECT @pdf = 'C:\' + @filename + '.pdf'
  • SET @page = ''
  • SET @nopg = 0
  • SET @object = 6
  • SET @end = 'endobj'
  • SET @beg = ' 0 obj'
  • SET @a1 = '<<'
  • SET @a2 = '>>'
  • SET @ad = ' 0 R'
  • SET @cr = CHAR(67) + CHAR(114) + CHAR (101) + CHAR(97) + CHAR(116) + CHAR (111) + CHAR(114)
  • SET @pr = CHAR(80) + CHAR(114) + CHAR (111) + CHAR(100) + CHAR(117) + CHAR (99 ) + CHAR(101) + CHAR(114)
  • SET @ti = CHAR(84) + CHAR(105) + CHAR (116) + CHAR(108) + CHAR(101)
  • SET @xstr = ' 00000 n'
  • SET @ofset = 396
  • INSERT INTO #xref(code) VALUES ('xref')
  • INSERT INTO #xref(code) VALUES ('0 10')
  • INSERT INTO #xref(code) VALUES ('0000000000 65535 f')
  • INSERT INTO #xref(code) VALUES ('0000000017' + @xstr)
  • INSERT INTO #xref(code) VALUES ('0000000790' + @xstr)
  • INSERT INTO #xref(code) VALUES ('0000000869' + @xstr)
  • INSERT INTO #xref(code) VALUES ('0000000144' + @xstr)
  • INSERT INTO #xref(code) VALUES ('0000000247' + @xstr)
  • INSERT INTO #xref(code) VALUES ('0000000321' + @xstr)
  • INSERT INTO #xref(code) VALUES ('0000000396' + @xstr)
  • INSERT INTO #pdf (code) VALUES ('%' + CHAR(80) + CHAR(68) + CHAR (70) + '-1.2')
  • INSERT INTO #pdf (code) VALUES ('%ÓÓÓÓ')
  • INSERT INTO #pdf (code) VALUES ('1' + @beg)
  • INSERT INTO #pdf (code) VALUES (@a1)
  • INSERT INTO #pdf (code) VALUES ('/' + @cr + ' (Ivica Masar ' + CHAR(80) + CHAR(83) + CHAR (79) + CHAR(80) + CHAR(68) + CHAR (70) + ')')
  • INSERT INTO #pdf (code) VALUES ('/' + @pr + ' (stored procedure for ms sql pso@vip.hr)')
  • INSERT INTO #pdf (code) VALUES ('/' + @ti + ' (SQL2' + CHAR(80) + CHAR(68) + CHAR (70) + ')')
  • INSERT INTO #pdf (code) VALUES (@a2)
  • INSERT INTO #pdf (code) VALUES (@end)
  • INSERT INTO #pdf (code) VALUES ('4' + @beg)
  • INSERT INTO #pdf (code) VALUES (@a1)
  • INSERT INTO #pdf (code) VALUES ('/Type /Font')
  • INSERT INTO #pdf (code) VALUES ('/Subtype /Type1')
  • INSERT INTO #pdf (code) VALUES ('/Name /F1')
  • INSERT INTO #pdf (code) VALUES ('/Encoding 5' + @ad)
  • INSERT INTO #pdf (code) VALUES ('/BaseFont /Courier')
  • INSERT INTO #pdf (code) VALUES (@a2)
  • INSERT INTO #pdf (code) VALUES (@end)
  • INSERT INTO #pdf (code) VALUES ('5' + @beg)
  • INSERT INTO #pdf (code) VALUES (@a1)
  • INSERT INTO #pdf (code) VALUES ('/Type /Encoding')
  • INSERT INTO #pdf (code) VALUES ('/BaseEncoding /WinAnsiEncoding')
  • INSERT INTO #pdf (code) VALUES (@a2)
  • INSERT INTO #pdf (code) VALUES (@end)
  • INSERT INTO #pdf (code) VALUES ('6' + @beg)
  • INSERT INTO #pdf (code) VALUES (@a1)
  • INSERT INTO #pdf (code) VALUES (' /Font ' + @a1 + ' /F1 4' + @ad + ' ' + @a2 + ' /ProcSet [ /' + CHAR(80) + CHAR(68) + CHAR (70) + ' /Text ]')
  • INSERT INTO #pdf (code) VALUES (@a2)
  • INSERT INTO #pdf (code) VALUES (@end)
  • INSERT INTO #text(code) (SELECT code FROM psopdf)
  • SELECT @x = COUNT(*) FROM #text
  • SELECT @x = (@x / 60) + 1
  • WHILE @nopg < @x
  • BEGIN
  • DECLARE SysKursor INSENSITIVE SCROLL CURSOR
  • FOR SELECT SUBSTRING((code + SPACE(81)), 1, 80) FROM #text WHERE idnumber BETWEEN ((@nopg * 60) + 1) AND ((@nopg + 1) * 60 )
  • FOR READ ONLY
  • OPEN SysKursor
  • FETCH NEXT FROM SysKursor INTO @trenutniRed
  • SELECT @object = @object + 1
  • SELECT @page = @page + ' ' + CAST(@object AS VARCHAR) + @ad
  • SELECT @len = LEN(@object) + LEN(@object + 1)
  • INSERT INTO #pdf (code) VALUES (CAST(@object AS VARCHAR) + @beg)
  • INSERT INTO #pdf (code) VALUES (@a1)
  • INSERT INTO #pdf (code) VALUES ('/Type /Page')
  • INSERT INTO #pdf (code) VALUES ('/Parent 3' + @ad)
  • INSERT INTO #pdf (code) VALUES ('/Resources 6' + @ad)
  • SELECT @object = @object + 1
  • INSERT INTO #pdf (code) VALUES ('/Contents ' + CAST(@object AS VARCHAR) + @ad)
  • INSERT INTO #pdf (code) VALUES (@a2)
  • INSERT INTO #pdf (code) VALUES (@end)
  • SELECT @ofset = @len + 86 + @ofset
  • INSERT INTO #xref(code) (SELECT SUBSTRING('0000000000' + CAST(@ofset AS VARCHAR),
  • LEN('0000000000' + CAST(@ofset AS VARCHAR)) - 9,
  • LEN('0000000000' + CAST(@ofset AS VARCHAR))) + @xstr)
  • INSERT INTO #pdf (code) VALUES (CAST(@object AS VARCHAR) + @beg)
  • INSERT INTO #pdf (code) VALUES (@a1)
  • SELECT @object = @object + 1
  • INSERT INTO #pdf (code) VALUES ('/Length ' + CAST(@object AS VARCHAR) + @ad)
  • INSERT INTO #pdf (code) VALUES (@a2)
  • INSERT INTO #pdf (code) VALUES ('stream')
  • INSERT INTO #pdf (code) VALUES ('BT')
  • INSERT INTO #pdf (code) VALUES ('/F1 10 Tf')
  • INSERT INTO #pdf (code) VALUES ('1 0 0 1 50 802 Tm')
  • INSERT INTO #pdf (code) VALUES ('12 TL')
  • WHILE @@Fetch_Status = 0
  • BEGIN
  • INSERT INTO #pdf (code) VALUES ('T* (' + @trenutniRed + ') Tj')
  • FETCH NEXT FROM SysKursor INTO @trenutniRed
  • END
  • INSERT INTO #pdf (code) VALUES ('ET')
  • INSERT INTO #pdf (code) VALUES ('endstream')
  • INSERT INTO #pdf (code) VALUES (@end)
  • SELECT @rows = (SELECT COUNT(*) FROM #text WHERE idnumber BETWEEN ((@nopg * 60) + 1) AND ((@nopg + 1) * 60 ))* 90 + 45
  • SELECT @nopg = @nopg + 1
  • SELECT @len = LEN(@object) + LEN(@object - 1)
  • SELECT @ofset = @len + 57 + @ofset + @rows
  • INSERT INTO #xref(code) (SELECT SUBSTRING('0000000000' + CAST(@ofset AS VARCHAR),
  • LEN('0000000000' + CAST(@ofset AS VARCHAR)) - 9,
  • LEN('0000000000' + CAST(@ofset AS VARCHAR))) + @xstr)
  • INSERT INTO #pdf (code) VALUES (CAST(@object AS VARCHAR) + @beg)
  • INSERT INTO #pdf (code) VALUES (@rows)
  • INSERT INTO #pdf (code) VALUES (@end)
  • SELECT @len = LEN(@object) + LEN(@rows)
  • SELECT @ofset = @len + 18 + @ofset
  • INSERT INTO #xref(code) (SELECT SUBSTRING('0000000000' + CAST(@ofset AS VARCHAR),
  • LEN('0000000000' + CAST(@ofset AS VARCHAR)) - 9,
  • LEN('0000000000' + CAST(@ofset AS VARCHAR))) + @xstr)
  • CLOSE SysKursor
  • DEALLOCATE SysKursor
  • END
  • INSERT INTO #pdf (code) VALUES ('2' + @beg)
  • INSERT INTO #pdf (code) VALUES (@a1)
  • INSERT INTO #pdf (code) VALUES ('/Type /Catalog')
  • INSERT INTO #pdf (code) VALUES ('/Pages 3' + @ad)
  • INSERT INTO #pdf (code) VALUES ('/PageLayout /OneColumn')
  • INSERT INTO #pdf (code) VALUES (@a2)
  • INSERT INTO #pdf (code) VALUES (@end)
  • UPDATE #xref SET code = (SELECT code FROM #xref WHERE idnumber = (SELECT MAX(idnumber) FROM #xref)) WHERE idnumber = 5
  • DELETE FROM #xref WHERE idnumber = (SELECT MAX(idnumber) FROM #xref)
  • INSERT INTO #pdf (code) VALUES ('3' + @beg)
  • INSERT INTO #pdf (code) VALUES (@a1)
  • INSERT INTO #pdf (code) VALUES ('/Type /Pages')
  • INSERT INTO #pdf (code) VALUES ('/Count ' + CAST(@nopg AS VARCHAR))
  • INSERT INTO #pdf (code) VALUES ('/MediaBox [ 0 0 595 842 ]')
  • INSERT INTO #pdf (code) VALUES ('/Kids [' + @page + ' ]')
  • INSERT INTO #pdf (code) VALUES (@a2)
  • INSERT INTO #pdf (code) VALUES (@end)
  • SELECT @ofset = @ofset + 79
  • UPDATE #xref SET code =(SELECT SUBSTRING('0000000000' + CAST(@ofset AS VARCHAR),
  • LEN('0000000000' + CAST(@ofset AS VARCHAR)) - 9,
  • LEN('0000000000' + CAST(@ofset AS VARCHAR))) + @xstr) WHERE idnumber = 6
  • INSERT INTO #xref(code) VALUES ('trailer')
  • INSERT INTO #xref(code) VALUES (@a1)
  • SELECT @object = @object + 1
  • UPDATE #xref SET code = '0 ' + CAST(@object AS VARCHAR) WHERE idnumber = 2
  • INSERT INTO #xref(code) VALUES ('/Size ' + CAST(@object AS VARCHAR))
  • INSERT INTO #xref(code) VALUES ('/Root 2' + @ad)
  • INSERT INTO #xref(code) VALUES ('/Info 1' + @ad)
  • INSERT INTO #xref(code) VALUES (@a2)
  • INSERT INTO #xref(code) VALUES ('startxref')
  • SELECT @len = LEN(@nopg) + LEN(@page)
  • SELECT @ofset = @len + 86 + @ofset
  • INSERT INTO #xref(code) VALUES (@ofset)
  • INSERT INTO #xref(code) VALUES ('%%' + CHAR(69) + CHAR (79) + CHAR(70))
  • INSERT INTO #pdf (code) (SELECT code FROM #xref)
  • --SELECT code FROM #pdf
  • SELECT @trenutniRed = 'del '+ @pdf
  • EXECUTE @ole = sp_OACreate 'Scripting.FileSystemObject', @fs OUT
  • EXEC master..xp_cmdshell @trenutniRed, NO_OUTPUT
  • EXECUTE @ole = sp_OAMethod @fs, 'OpenTextFile', @file OUT, @pdf, 8, 1
  • DECLARE SysKursor INSENSITIVE SCROLL CURSOR
  • FOR SELECT code FROM #pdf ORDER BY idnumber
  • FOR READ ONLY
  • OPEN SysKursor
  • FETCH NEXT FROM SysKursor INTO @trenutniRed
  • WHILE @@Fetch_Status = 0
  • BEGIN
  • EXECUTE @ole = sp_OAMethod @file, 'WriteLine', Null, @trenutniRed
  • FETCH NEXT FROM SysKursor INTO @trenutniRed
  • END
  • CLOSE SysKursor
  • DEALLOCATE SysKursor
  • DELETE FROM psopdf
  • EXECUTE @ole = sp_OADestroy @file
  • EXECUTE @ole = sp_OADestroy @fs
CREATE PROCEDURE sql2pdf
   @filename VARCHAR(100) 
AS 
  CREATE TABLE #pdf (idnumber INT IDENTITY(1,1)
  		    ,code NVARCHAR(200))
  CREATE TABLE #xref (idnumber INT IDENTITY(1,1)
  		    ,code VARCHAR(30))
  CREATE TABLE #text (idnumber INT IDENTITY(1,1)
  		    ,code VARCHAR(200))

  DECLARE @end VARCHAR(7),
  	@beg   VARCHAR(7),
  	@a1    VARCHAR(3),
  	@a2    VARCHAR(3),
  	@ad    VARCHAR(5),
  	@cr    VARCHAR(8),
  	@pr    VARCHAR(9),
  	@ti    VARCHAR(6),
  	@xstr  VARCHAR(10),
  	@page  VARCHAR(8000),
	@pdf   VARCHAR(100),
	@trenutniRed NVARCHAR(200),
  	@rows   INT,
  	@ofset  INT,
  	@len    INT,
  	@nopg   INT,
        @fs 	INT,
	@ole    INT,
	@x 	INT,
	@file   INT,
  	@object INT
  SELECT @pdf = 'C:\' + @filename + '.pdf'  
  SET @page = ''
  SET @nopg = 0
  SET @object = 6
  SET @end = 'endobj'
  SET @beg = ' 0 obj'
  SET @a1 = '<<'
  SET @a2 = '>>'
  SET @ad = ' 0 R'
  SET @cr = CHAR(67) + CHAR(114) + CHAR (101) + CHAR(97) + CHAR(116) + CHAR (111) + CHAR(114)
  SET @pr = CHAR(80) + CHAR(114) + CHAR (111) + CHAR(100) + CHAR(117) + CHAR (99 ) + CHAR(101) + CHAR(114)
  SET @ti = CHAR(84) + CHAR(105) + CHAR (116) + CHAR(108) + CHAR(101)
  SET @xstr = ' 00000 n'
  SET @ofset = 396  
  INSERT INTO #xref(code) VALUES ('xref')
  INSERT INTO #xref(code) VALUES ('0 10')
  INSERT INTO #xref(code) VALUES ('0000000000 65535 f')
  INSERT INTO #xref(code) VALUES ('0000000017' + @xstr)
  INSERT INTO #xref(code) VALUES ('0000000790' + @xstr)
  INSERT INTO #xref(code) VALUES ('0000000869' + @xstr)
  INSERT INTO #xref(code) VALUES ('0000000144' + @xstr)
  INSERT INTO #xref(code) VALUES ('0000000247' + @xstr)
  INSERT INTO #xref(code) VALUES ('0000000321' + @xstr)
  INSERT INTO #xref(code) VALUES ('0000000396' + @xstr)  
  INSERT INTO #pdf (code) VALUES ('%' + CHAR(80) + CHAR(68) + CHAR (70) + '-1.2')
  INSERT INTO #pdf (code) VALUES ('%ÓÓÓÓ')
  INSERT INTO #pdf (code) VALUES ('1' + @beg)
  INSERT INTO #pdf (code) VALUES (@a1)
  INSERT INTO #pdf (code) VALUES ('/' + @cr + ' (Ivica Masar ' + CHAR(80) + CHAR(83) + CHAR (79) + CHAR(80) + CHAR(68) + CHAR (70) + ')')
  INSERT INTO #pdf (code) VALUES ('/' + @pr + ' (stored procedure for ms sql  pso@vip.hr)')
  INSERT INTO #pdf (code) VALUES ('/' + @ti + ' (SQL2' + CHAR(80) + CHAR(68) + CHAR (70) + ')')
  INSERT INTO #pdf (code) VALUES (@a2)
  INSERT INTO #pdf (code) VALUES (@end)
  INSERT INTO #pdf (code) VALUES ('4' + @beg)
  INSERT INTO #pdf (code) VALUES (@a1)
  INSERT INTO #pdf (code) VALUES ('/Type /Font')
  INSERT INTO #pdf (code) VALUES ('/Subtype /Type1')
  INSERT INTO #pdf (code) VALUES ('/Name /F1')
  INSERT INTO #pdf (code) VALUES ('/Encoding 5' + @ad)
  INSERT INTO #pdf (code) VALUES ('/BaseFont /Courier')
  INSERT INTO #pdf (code) VALUES (@a2)
  INSERT INTO #pdf (code) VALUES (@end)
  INSERT INTO #pdf (code) VALUES ('5' + @beg)
  INSERT INTO #pdf (code) VALUES (@a1)
  INSERT INTO #pdf (code) VALUES ('/Type /Encoding')
  INSERT INTO #pdf (code) VALUES ('/BaseEncoding /WinAnsiEncoding')
  INSERT INTO #pdf (code) VALUES (@a2)
  INSERT INTO #pdf (code) VALUES (@end)
  INSERT INTO #pdf (code) VALUES ('6' + @beg)
  INSERT INTO #pdf (code) VALUES (@a1)
  INSERT INTO #pdf (code) VALUES ('  /Font ' + @a1 + ' /F1 4' + @ad + ' ' + @a2 + '  /ProcSet [ /' + CHAR(80) + CHAR(68) + CHAR (70) + ' /Text ]')
  INSERT INTO #pdf (code) VALUES (@a2)
  INSERT INTO #pdf (code) VALUES (@end)
  INSERT INTO #text(code) (SELECT code FROM psopdf)
  SELECT @x = COUNT(*) FROM #text
  SELECT @x = (@x / 60) + 1
  WHILE  @nopg < @x
    BEGIN
      DECLARE SysKursor  INSENSITIVE SCROLL CURSOR 
      FOR SELECT SUBSTRING((code + SPACE(81)), 1, 80) FROM #text WHERE idnumber BETWEEN ((@nopg * 60) + 1) AND ((@nopg + 1) * 60 )
      FOR READ ONLY    
      OPEN SysKursor
      FETCH NEXT FROM SysKursor INTO @trenutniRed
      SELECT @object = @object + 1
      SELECT @page = @page +  ' ' + CAST(@object AS VARCHAR) + @ad
      SELECT @len = LEN(@object) + LEN(@object + 1)
      INSERT INTO #pdf (code) VALUES (CAST(@object AS VARCHAR)  + @beg)
      INSERT INTO #pdf (code) VALUES (@a1)
      INSERT INTO #pdf (code) VALUES ('/Type /Page')
      INSERT INTO #pdf (code) VALUES ('/Parent 3' + @ad)
      INSERT INTO #pdf (code) VALUES ('/Resources 6' + @ad)
      SELECT @object = @object + 1
      INSERT INTO #pdf (code) VALUES ('/Contents ' + CAST(@object AS VARCHAR) + @ad)
      INSERT INTO #pdf (code) VALUES (@a2)
      INSERT INTO #pdf (code) VALUES (@end)
      SELECT @ofset = @len + 86 + @ofset
      INSERT INTO #xref(code) (SELECT SUBSTRING('0000000000' + CAST(@ofset AS VARCHAR), 
    	LEN('0000000000' + CAST(@ofset AS VARCHAR)) - 9, 
    	LEN('0000000000' + CAST(@ofset AS VARCHAR))) + @xstr)  
      INSERT INTO #pdf (code) VALUES (CAST(@object AS VARCHAR)  + @beg)
      INSERT INTO #pdf (code) VALUES (@a1)
      SELECT @object = @object + 1
      INSERT INTO #pdf (code) VALUES ('/Length ' + CAST(@object AS VARCHAR) + @ad)
      INSERT INTO #pdf (code) VALUES (@a2)
      INSERT INTO #pdf (code) VALUES ('stream')
      INSERT INTO #pdf (code) VALUES ('BT')
      INSERT INTO #pdf (code) VALUES ('/F1 10 Tf')
      INSERT INTO #pdf (code) VALUES ('1 0 0 1 50 802 Tm')
      INSERT INTO #pdf (code) VALUES ('12 TL')
      WHILE @@Fetch_Status = 0
         BEGIN
             INSERT INTO #pdf (code) VALUES ('T* (' + @trenutniRed + ') Tj')
             FETCH NEXT FROM  SysKursor INTO @trenutniRed
          END
      INSERT INTO #pdf (code) VALUES ('ET')
      INSERT INTO #pdf (code) VALUES ('endstream')
      INSERT INTO #pdf (code) VALUES (@end)
      SELECT @rows = (SELECT COUNT(*) FROM #text WHERE idnumber BETWEEN ((@nopg * 60) + 1) AND ((@nopg + 1) * 60 ))* 90 + 45
      SELECT @nopg = @nopg + 1    
      SELECT @len = LEN(@object) + LEN(@object - 1)
      SELECT @ofset = @len + 57 + @ofset + @rows
      INSERT INTO #xref(code) (SELECT SUBSTRING('0000000000' + CAST(@ofset AS VARCHAR), 
     	LEN('0000000000' + CAST(@ofset AS VARCHAR)) - 9, 
   	LEN('0000000000' + CAST(@ofset AS VARCHAR))) + @xstr)   
      INSERT INTO #pdf (code) VALUES (CAST(@object AS VARCHAR)  + @beg)
      INSERT INTO #pdf (code) VALUES (@rows)
      INSERT INTO #pdf (code) VALUES (@end)
      SELECT @len = LEN(@object) + LEN(@rows)
      SELECT @ofset = @len + 18 + @ofset
      INSERT INTO #xref(code) (SELECT SUBSTRING('0000000000' + CAST(@ofset AS VARCHAR), 
    	LEN('0000000000' + CAST(@ofset AS VARCHAR)) - 9, 
    	LEN('0000000000' + CAST(@ofset AS VARCHAR))) + @xstr)  
      CLOSE SysKursor
      DEALLOCATE SysKursor
    END
    INSERT INTO #pdf (code) VALUES ('2' + @beg)
    INSERT INTO #pdf (code) VALUES (@a1)
    INSERT INTO #pdf (code) VALUES ('/Type /Catalog')
    INSERT INTO #pdf (code) VALUES ('/Pages 3' + @ad)
    INSERT INTO #pdf (code) VALUES ('/PageLayout /OneColumn')
    INSERT INTO #pdf (code) VALUES (@a2)
    INSERT INTO #pdf (code) VALUES (@end)
    UPDATE #xref SET code = (SELECT code FROM #xref WHERE idnumber = (SELECT MAX(idnumber) FROM #xref)) WHERE idnumber = 5
    DELETE FROM #xref WHERE idnumber = (SELECT MAX(idnumber) FROM #xref)
    INSERT INTO #pdf (code) VALUES ('3' + @beg)
    INSERT INTO #pdf (code) VALUES (@a1)
    INSERT INTO #pdf (code) VALUES ('/Type /Pages')
    INSERT INTO #pdf (code) VALUES ('/Count ' + CAST(@nopg AS VARCHAR))
    INSERT INTO #pdf (code) VALUES ('/MediaBox [ 0 0 595 842 ]')
    INSERT INTO #pdf (code) VALUES ('/Kids [' + @page + ' ]')
    INSERT INTO #pdf (code) VALUES (@a2)
    INSERT INTO #pdf (code) VALUES (@end)
    SELECT @ofset = @ofset + 79
    UPDATE #xref SET code =(SELECT SUBSTRING('0000000000' + CAST(@ofset AS VARCHAR), 
  	LEN('0000000000' + CAST(@ofset AS VARCHAR)) - 9, 
  	LEN('0000000000' + CAST(@ofset AS VARCHAR))) + @xstr) WHERE idnumber = 6
    INSERT INTO #xref(code) VALUES ('trailer')
    INSERT INTO #xref(code) VALUES (@a1)
    SELECT @object = @object + 1
    UPDATE #xref SET code = '0 ' + CAST(@object AS VARCHAR) WHERE idnumber = 2
    INSERT INTO #xref(code) VALUES ('/Size ' + CAST(@object AS VARCHAR))
    INSERT INTO #xref(code) VALUES ('/Root 2' + @ad)
    INSERT INTO #xref(code) VALUES ('/Info 1' + @ad)
    INSERT INTO #xref(code) VALUES (@a2)
    INSERT INTO #xref(code) VALUES ('startxref')
    SELECT @len = LEN(@nopg) + LEN(@page)
    SELECT @ofset = @len + 86 + @ofset
    INSERT INTO #xref(code) VALUES (@ofset)
    INSERT INTO #xref(code) VALUES ('%%' + CHAR(69) + CHAR (79) + CHAR(70))
    INSERT INTO #pdf (code) (SELECT code FROM #xref) 
    --SELECT code FROM #pdf
    SELECT @trenutniRed = 'del '+ @pdf
    EXECUTE @ole = sp_OACreate 'Scripting.FileSystemObject', @fs OUT
    EXEC master..xp_cmdshell @trenutniRed, NO_OUTPUT

    EXECUTE @ole = sp_OAMethod @fs, 'OpenTextFile', @file OUT, @pdf, 8, 1

    DECLARE SysKursor  INSENSITIVE SCROLL CURSOR 
    FOR SELECT code FROM #pdf ORDER BY idnumber
    FOR READ ONLY    
    OPEN SysKursor
    FETCH NEXT FROM SysKursor INTO @trenutniRed
    WHILE @@Fetch_Status = 0
	BEGIN
	  EXECUTE @ole = sp_OAMethod @file, 'WriteLine', Null, @trenutniRed
	  FETCH NEXT FROM  SysKursor INTO @trenutniRed 
        END
    CLOSE SysKursor
    DEALLOCATE SysKursor
    DELETE FROM psopdf
    EXECUTE @ole = sp_OADestroy @file
    EXECUTE @ole = sp_OADestroy @fs

Commentaires et avis

signaler à un administrateur
Commentaire de Escob le 08/06/2007 10:43:17

Tout simplement génial !!

Beau travail, ca fonctionne sur sql 2000 et 2005. (pour 2005, il faut penser à activer OLE Automation dans la configuration de surface d'exposition pour les fonctionnalités).

En revanche, je voudrais savoir si il est possible d'incorporer des photos ?

Merci pour ce code de qualité et qui fonctionne du premier coup !

signaler à un administrateur
Commentaire de dominique.stock le 08/06/2007 11:07:22

A mon avis, ça n'est pas facile ...
Ce code n'est pas de moi, il est de "Ivica Masar"  adresse mail dans le source mais je doute qu'il réponde.
Il faudrait voir avec les spécifications d'adobe ...

signaler à un administrateur
Commentaire de fabrice69 le 13/07/2007 16:40:57 administrateur CS

Bonjour,

La moindre des choses pour l'auteur est de citer l'URL ou vous avez trouvé cet exemple.
Merci de corriger cela au plus vite.

Cordialement
Romelard Fabrice

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Sql server Procedure stockée [ par access2000 ] Bonjour,Je débute sur sql et je cherche le moyen d'obtenir un "order by" variable dans une procédure stockée.Possible ou non ?MerciGilles export de pdf avec sql server 2005 [ par karn ] Bonjour,existe t'il un moyen pour exporter une requete via sql server 2005 en pdf?j'ai vu qu'il y avait une procédure sur le site qu'il le fesait mais Problème de connexion SQL SERVER 2005 / FREEBOX [ par marcofelipe ] Bonjour,Voila mon problème : J'ai créé une base de données sur SQL SERVER 2005 pour créer une application sur un serveur d'application et pourvoir l'u [SQL server 2005] erreur clef trop grande ! [ par thekingsky38 ] J'ai un problème:  J'ai un table sur mon SQLs erver 2005 qui a en tout 4679 enregistrement. La clé primaire est bien défini en tant que IDENTITY comme migration de base de donnée SQL Server vers Oarcle 9i [ par issam164 ] Bonjour, Je recherche tout retour d'expérience, méthodes ,outils pour migration de serveur SQL Server vers Oracle V9iMe Comment enregistrer une image dans SQL server depuis FtontPage [ par jayesh ] bonjour,J'essaie desesperemment d'enregistrer une image dans une BDD SQL Server mais sansa succes.J'ai une table MAGASIN avec un champ logo defini com SQL SERVER & ORACLE [ par kramelix ] Bonjour à tous,Peut-on installer sur un même serveur, SQL Server et Oracle?Merci de votre réponse.Cordialement. sql server 2005 [ par ghano81 ] salut tout le monde  jé un petit probleme jarrive pas a installer sql server 2005 edition express il s'installe pas sur ma mchine est ce q vous puvez SQL Server - Backup complet et migration [ par fabienfs ] Bonjour,J'ai crée plusieurs bases de données SQL Server (Standard) ainsi que des utilisateur respectifs pour chaque BDD. Je voudrais reformater ma mac Connexion SQL Server 2000 par ODBC [ par FOSTA ] Bonjour,J'ai créé une application avec C# de Visual Studio 2005, et la base de données est SQL server 2000 et elle se trouve sur ma machine de dévelop


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,234 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.