Имейте в виду:
Это мой первый вопрос о StackOverflow.
Веб-приложение представляет собой программный пакет, который компания изменила для своих нужд.
Часть, которая используетсяVirtual Print Engine от IDEAL Software (VPE).
Значения были изменены для этого сообщения
Проблема
Основная проблема заключается в том, что VPE использует ActiveX Control, и мы пытаемсяканаву Internet Explorer. Процесс состоит в том, чтобы создать PDF размер стикеров, которые они используют для доставки.
Попытайтесь остаться со мной, пока я пытаюсь объяснить, как называется generatePDF.asp:
- Пользователь нажимает кнопку на странице report_up.asp, которая отправляет запрос на report_pr.asp
- report_pr.asp, затем обрабатывает сообщение и вызывает report.asp
- generatePDF.asp генерирует PDF, отправляет его прямо на выбранный принтер
Таким образом, весь процесс скрыт от инструмента разработки из браузера (кроме IE)
Вот примероригинальный код. Как вы могли заметить, я также манипулирую с VBScript. Отредактировано, чтобы добавить больше кода
<%@ LANGUAGE=VBSCRIPT %>
<%Option Explicit%>
<!-- #Include virtual="\SOFTinit.asp" -->
<!-- #Include virtual="\reportfunction.asp" -->
<%
DIM rssql,vstorename,vparam,vserialnoparam,vprintsection,vpiecestock,vnbretiquettes,vversion
DIM vwonbr,vdescr,vserialno,vshortserialno,vname,vtransport,vexpedition,vliste,vpoprojet,vzone
DIM vsoustraitance,vitemserialid,vitemid,vcodemecinov,vwoid,vshipbarcodeid,vpono,vprintername,vlabelexpedition
DIM visrack,vcustname,vcustid,vcodeboite,vzonerack,vcodebarre,vtempid
DIM i
vversion="v1.0"
vstorename = "IN_RPT.ProductsBarCode_sp"
vshipbarcodeid = CDBL(SOFT.IFEMPTY(REQ("fshipbarcodeid")))
vtempid = CDBL(SOFT.IFEMPTY(REQ("ftempid")))
IF visrack = 0 THEN
vserialnoparam = REQ("fnoserie")
END IF
vsoustraitance = CDBL(SOFT.IFEMPTY(REQ("fsoustraitance")))
vitemserialid = CDBL(SOFT.IFEMPTY(REQ("fitemserialid")))
vitemid = CDBL(SOFT.IFEMPTY(REQ("fitemid")))
vwoid = CDBL(SOFT.IFEMPTY(REQ("fwoid")))
visrack = CDBL(SOFT.IFEMPTY(REQ("frack")))
IF visrack <> 0 THEN
' vcustid = CDBL(SOFT.IFEMPTY(REQ("fcustid")))
vcodeboite = TRIM(REQ("fcodeboite"))
' sql = "SELECT Name,fob FROM customers WHERE custid = " & vcustid
' SET RSSQL = CONN.EXECUTE(SQL)
' IF NOT RSSQL.EOF THEN
' vcustname = TRIM(RSSQL("Name"))
' vzonerack = TRIM(RSSQL("fob"))
' END IF
' RSSQL.CLOSE
' SET RSSQL = NOTHING
sql = "SELECT codemecinov,shipbarcodeid FROM shipbarcode WHERE isactive=1 AND cieid= "& gcieid &" AND codeboite = '" & vcodeboite & "' "
SET RSSQL = CONN.EXECUTE(SQL)
IF NOT RSSQL.EOF THEN
'vcodebarre = TRIM(RSSQL("codemecinov"))
vshipbarcodeid =RSSQL("shipbarcodeid")
END IF
RSSQL.CLOSE
SET RSSQL = NOTHING
response.write vshipbarcodeid
response.write sql
END IF
IF vshipbarcodeid <> 0 Then
SQL = "SELECT shipbarcode.codebarre as serialno,shipbarcode.itemserialid,shipbarcode.woid,shipbarcode.itemid,shipbarcode.soustraitance,SOTOMECINOVID FROM shipbarcode " &_
" LEFT JOIN sotomecinov ON sotomecinov.serialno = shipbarcode.codebarre " &_
" WHERE shipbarcodeid = " & vshipbarcodeid
SET RSSQL = CONN.EXECUTE(SQL)
IF NOT RSSQL.EOF THEN
vserialnoparam = RSSQL("SOTOMECINOVID")
vitemserialid = CDBL(RSSQL("itemserialid"))
vitemid = CDBL(RSSQL("itemid"))
vsoustraitance = SOFT.FNBOOLEAN(RSSQL("soustraitance"))
vwoid = CDBL(RSSQL("woid"))
'BOITE DE PRODUCTION
IF vwoid <> 0 Then
vserialnoparam = rssql("serialno")
END IF
IF vsoustraitance = 1 Then
vserialnoparam = rssql("serialno")
END IF
END IF
END IF
IF visrack = 0 THEN
vprintsection = REQ("fprintsection")
END IF
vnbretiquettes = SOFT.IFEMPTY(REQ("fnbrcopy"))
IF vnbretiquettes = 0 THEN
vnbretiquettes = 1
END IF
vpiecestock = CDBL(SOFT.IFEMPTY(REQ("forshipping")))
vprintername = ""
SQL = "SELECT zprinter.name as printername FROM zprinter " &_
" INNER JOIN zprinteruser ON zprinteruser.userid = " & guserid &_
" WHERE (zprinteruser.menuid = 2021 or zprinteruser.menuid = 2020) AND zprinter.printerid = zprinteruser.printerid "
SET RSSQL =CONN.EXECUTE(SQL)
IF NOT RSSQL.EOF Then
vprintername = RSSQL("printername")
END IF
'****************************************************************************************************
'*** * * * * * * * * * * * * * * * * * *SECTION HTML* * * * * * * * * * * * * * * * * * * * * * * ***
'****************************************************************************************************
%>
<html>
<head>
<title><%=getlabel("Codeboite",glangid)%></title>
<META HTTP-EQUIV="pragma" CONTENT="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv='expires' content='0'>
</head>
<body topmargin="0" leftmargin="0" bottommargin="0" rightmargin="0">
<!-- #Include virtual="\VpeCtrl4.asp"-->
<SCRIPT LANGUAGE="javascript">
<% if vshipbarcodeid = 0 AND vpiecestock = 0 then %>
window.parent.opener.focus();
<% end if %>
var vfont,vRender;
VpeCtrl.CloseDoc();
VpeCtrl.OpenDoc();
VpeCtrl.UnitTransformation = VUNIT_FACTOR_MM10;
VpeCtrl.DevPrintQuality = 200;
VpeCtrl.DevJobName = 'etiquette';
VpeCtrl.SaveFileName = 'etiquette.pdf';
VpeCtrl.FontName = "Verdana";
//VpeCtrl.PageFormat = VPAPER_LETTER;
VpeCtrl.BarcodeAlignment = ALIGN_CENTER;
VpeCtrl.BarcodeMainTextParms = BCP_HIDE;
VpeCtrl.BarcodeAutoChecksum = 1;
VpeCtrl.PageWidth = 1050;
VpeCtrl.PageHeight = 1270;
VpeCtrl.ScalePercent = 100;
VpeCtrl.PageOrientation = VORIENT_PORTRAIT;
VpeCtrl.SetOutRect(10,10,VpeCtrl.PageWidth,VpeCtrl.PageHeight);
<%
IF visrack = 0 OR visrack = 1 THEN
vparam = "@glangid=" & glangid &_
",@gcieid=" & gcieid &_
",@guserid=" & guserid &_
",@fnoserie='" & vserialnoparam & "'" &_
",@fprintsection='" & vprintsection & "'" &_
",@piecestock=" & vpiecestock &_
",@nbretiquettes=1" &_
",@soustraitance=" & vsoustraitance &_
",@Itemserialid=" & vitemserialid &_
",@itemid=" & vitemid &_
",@woid=" & vwoid
IF vshipbarcodeid <> 0 THEN
vparam = vparam &_
",@shipbarcodeid=" & vshipbarcodeid
END IF
IF vtempid <> 0 THEN
vparam = vparam &_
",@tempid=" & vtempid
END IF
SQL = "EXEC " & vstorename & " " & vparam & ""
response.write "//" & sql
'RESPONSE.END
SET rssql = CONN.EXECUTE(SQL)
IF rssql.eof THEN
RESPONSE.END
END IF
DO WHILE NOT RSSQL.EOF
FOR i = 1 to CDBL(RSSQL("copycount"))
IF i <> 1 tHEN %>
VpeCtrl.PageBreak();
<%
END IF
vwonbr = RSSQL("wonbr")
vdescr = RSSQL("descr")
vserialno = RSSQL("serialno")
vshortserialno = RSSQL("shortserialno")
vname = RSSQL("name")
vlabelexpedition = RSSQL("expeditionlabel")
vexpedition = RSSQL("expedition")
vtransport = RSSQL("transport")
vliste = RSSQL("liste")
vcodemecinov = RSSQL("codemecinov")
vpono = RSSQL("po")
IF ISNULL(vliste) THEN
vliste = ""
END IF
vpoprojet = RSSQL("project")
vzone = RSSQL("zone")
RESPONSE.WRITE "Before Header Loop"
%>
//HEADER
VpeCtrl.TextAlignment = ALIGN_CENTER;
VpeCtrl.FontSize = 24;
<%
IF LEN(vserialno) > 18 THEN
RESPONSE.WRITE "VpeCtrl.FontSize = 18;"
END IF
%>
<% IF vsoustraitance = 1 THEN %>
VpeCtrl.VpeWrite(30,18,1025,VFREE,'[N B 72]<%=vserialno%>');
<% ELSE %>
VpeCtrl.VpeWrite(30,18,1025,VFREE,'[N B 72]<%=vshortserialno%>');
<% END IF %>
VpeCtrl.FontSize = 12;
VpeCtrl.VpeWrite(40,105,1020,160,'[N B 72]<%=SOFT.FNGUILJAVA2(vname)%>');
VpeCtrl.FontSize = 10;
VpeCtrl.TextAlignment = ALIGN_LEFT;
<% IF vsoustraitance = 0 THEN %>
VpeCtrl.FontSize = 9;
VpeCtrl.VpeWrite(50,160,400,230,'[N B 72]<%=SOFT.FNGUILJAVA2(vlabelexpedition)%>');
VpeCtrl.VpeWrite(50,190,400,250,'[N B 72]<%=SOFT.FNGUILJAVA2(vexpedition)%>');
VpeCtrl.FontSize = 10;
<% END IF %>
VpeCtrl.PenSize=0;
VpeCtrl.BarCode(385, 160, 1005, 250, BCT_CODE128, '<%=vcodemecinov%>', '');
VpeCtrl.PenSize=1;
VpeCtrl.TextAlignment = ALIGN_LEFT;
VpeCtrl.VpeWrite(60,250,500,300,'[N B 72]<%=SOFT.FNGUILJAVA2(vtransport)%>');
VpeCtrl.TextAlignment = ALIGN_CENTER;
<% IF vsoustraitance = 1 THEN %>
VpeCtrl.VpeWrite(450,250,1000,300,'[N B 72]<%=vshortserialno%>');
<% ELSE %>
VpeCtrl.VpeWrite(450,250,1000,300,'[N B 72]<%=vserialno%>');
<% END IF %>
VpeCtrl.TextAlignment = ALIGN_LEFT;
VpeCtrl.VpeWrite(60,300,1020,400,'[N B 72]<%=SOFT.FNGUILJAVA2(vdescr)%>');
VpeCtrl.VpeWrite(60,390,650,440,'[N B 72]<%=SOFT.FNGUILJAVA2(vpoprojet)%>');
VpeCtrl.TextAlignment = ALIGN_RIGHT;
VpeCtrl.VpeWrite(660,390,1000,440,'[N B 72]<%=SOFT.FNGUILJAVA2(vpono)%>');
//VpeCtrl.Vpeline(40,360,1020,360);
VpeCtrl.TextAlignment = ALIGN_LEFT;
//DÉTAIL
VpeCtrl.PenSize=0;
VpeCtrl.Rotation = 2700;
VpeCtrl.BarCode(60, 440, 660, 520, BCT_CODE128, '<%=vcodemecinov%>', '');
VpeCtrl.Rotation = 0;
VpeCtrl.PenSize=1;
VpeCtrl.VpeWrite(200,450,1040,1030,'[N 72]<%=FNGuilJava2(REPLACE(REPLACE(REPLACE(TRIM(vliste),VBCRLF,"\n"),CHR(13),"\n"), CHR(10),"\n"))%>');
//FOOTER
VpeCtrl.Picture(60,1070,250,1250,'<%=LocatePgm("sys/getlogo.asp",1)%>' + EncryptParams('?gsessionid=<%=gsessionid%>&cieid=<%=gcieid%>'));
VpeCtrl.Picture(280,1070,480,1250,'<%=locatepgm("images/madeincanada.jpg",1)%>');
VpeCtrl.VpeWrite(520,1140,750,VFREE,'<%=FNGETDATE(gCurrDate)%>');
VpeCtrl.Pensize=5;
VpeCtrl.Box(770,1070,1020,1250);
VpeCtrl.FontSize = 26;
VpeCtrl.VpeWrite(840,1110,1015,1250,'[N B 72]<%=vzone%>');
VpeCtrl.FontSize = 10;
<%
NEXT
RSSQL.MOVENEXT
IF NOT RSSQL.EOF THEN
%>VpeCtrl.PageBreak();<%
END IF
LOOP
ELSE%>
//HEADER
VpeCtrl.TextAlignment = ALIGN_CENTER;
VpeCtrl.FontSize = 24;
<%
RESPONSE.WRITE "Before Header"
IF LEN(vserialno) > 18 THEN
RESPONSE.WRITE "VpeCtrl.FontSize = 18;"
END IF
%>
VpeCtrl.VpeWrite(30,18,1025,VFREE,'[N B 72]<%=vcodeboite%>');
VpeCtrl.FontSize = 12;
VpeCtrl.VpeWrite(40,105,1020,160,'[N B 72]<%=SOFT.FNGUILJAVA2(vcustname)%>');
VpeCtrl.FontSize = 10;
VpeCtrl.TextAlignment = ALIGN_LEFT;
VpeCtrl.PenSize=0;
VpeCtrl.BarCode(385, 160, 1005, 250, BCT_CODE128, '<%=vcodebarre%>', '');
VpeCtrl.PenSize=1;
VpeCtrl.TextAlignment = ALIGN_LEFT;
VpeCtrl.VpeWrite(60,250,500,300,'[N B 72]<%=SOFT.FNGUILJAVA2(vtransport)%>');
VpeCtrl.TextAlignment = ALIGN_CENTER;
VpeCtrl.VpeWrite(450,250,1000,300,'[N B 72]<%=vcodeboite%>');
VpeCtrl.TextAlignment = ALIGN_CENTER;
VpeCtrl.VpeWrite(60,300,1020,400,'[N B 72]<%="Rack"%>');
VpeCtrl.TextAlignment = ALIGN_RIGHT;
//VpeCtrl.Vpeline(40,360,1020,360);
VpeCtrl.TextAlignment = ALIGN_LEFT;
//DÉTAIL
VpeCtrl.PenSize=0;
VpeCtrl.Rotation = 2700;
VpeCtrl.BarCode(60, 440, 660, 520, BCT_CODE128, '<%=vcodebarre%>', '');
VpeCtrl.Rotation = 0;
VpeCtrl.PenSize=1;
VpeCtrl.VpeWrite(200,450,1040,1030,'[N 72]<%=FNGuilJava2(REPLACE(REPLACE(REPLACE(TRIM(vliste),VBCRLF,"\n"),CHR(13),"\n"), CHR(10),"\n"))%>');
//FOOTER
VpeCtrl.Picture(60,1070,250,1250,'<%=LocatePgm("sys/getlogo.asp",1)%>' + EncryptParams('?gsessionid=<%=gsessionid%>&cieid=<%=gcieid%>'));
VpeCtrl.Picture(280,1070,480,1250,'<%=locatepgm("images/madeincanada.jpg",1)%>');
VpeCtrl.VpeWrite(520,1140,750,VFREE,'<%=FNGETDATE(gCurrDate)%>');
VpeCtrl.Pensize=5;
VpeCtrl.Box(770,1070,1020,1250);
VpeCtrl.FontSize = 26;
VpeCtrl.VpeWrite(840,1110,1015,1250,'[N B 72]<%=vzonerack%>');
VpeCtrl.FontSize = 10;
<%
END IF
%>
<%IF vshipbarcodeid <> 0 AND visrack = 0 THEN %>
<% IF vprintername <> "" Then %>
VpeCtrl.Preview();
//VpeCtrl.Device = '<%=SOFT.FNGUILJAVA2(REPLACE(vprintername,"\","\\"))%>';
//VpeCtrl.PrintDoc(false)
//window.close()
<% else %>
VpeCtrl.Preview();
<% END IF %>
<% ELSE %>
VpeCtrl.DevCopies = <%=vnbretiquettes%>;
<% IF vprintername <> "" Then %>
VpeCtrl.Device = '<%=SOFT.FNGUILJAVA2(REPLACE(vprintername,"\","\\"))%>';
<% END IF %>
//VpeCtrl.Preview();
VpeCtrl.PrintDoc(false)
window.close()
<% END IF %>
</SCRIPT>
</body>
</html>
<%
RSSQL.CLOSE
SET RSSQL = NOTHING
SOFT.DisconnectDB
%>
Я создал целый .html для проверки работы JsPdf и смог создать точно такую же копию, которая была сгенерирована VPE. Функции save (), ouput () и autoprint () отлично работают на моем локальном HTML
Sample
var doc = new jsPDF({
orientation: 'p',
unit: 'mm',
format: [105, 125]
});
JsBarcode("#barcodeHorizontal", "00-000-000-00");
JsBarcode("#barcodeVertical", "00-000-000-00", {
displayValue: false
});
doc.addFont("Verdana", "Verdana", "Regular")
doc.setFont("Verdana", "Regular");
//HEADER
doc.setFontSize(24);
doc.text('Value', 5, 10);
doc.setFontSize(12);
doc.text('Value', 5, 15);
doc.setFontSize(9);
doc.text('Value :', 5, 19);
doc.text('Value', 5, 22);
doc.setFontSize(10);
const barcodeHorizontal = document.querySelector("img#barcodeHorizontal");
doc.addImage(barcodeHorizontal.src, "PNG", 48, 16, 55, 13, "");
doc.text('Value', 5, 25);
const barcodeVertical = document.querySelector("img#barcodeVertical");
doc.addImage(barcodeVertical.src, "PNG", 2, 30, 60, 10, "", "NONE", -90);
doc.text('Value', 8, 32)
doc.text('Value', 8, 40)
doc.text('Value', 70, 40)
Что я пробовал
- Я изменил все, чтобы использовать JsPDf
// VpeCtrl.VpeWrite(30,18,1025,VFREE,'[N B 72]<%=value%>');
doc.text("value",3,2);
- Я пытался сохранить обе версии
VpeCtrl.VpeWrite(30,18,1025,VFREE,'[N B 72]<%=value%>');
doc.text("value",3,2);
- Добавлен console.log (), чтобы посмотреть, остановлюсь ли я в какой-то момент
VpeCtrl.VpeWrite(30,18,1025,VFREE,'[N B 72]<%=value%>');
doc.text("value",3,2);
console.log("Error value");
- Я попытался большинство из них попытаться / поймать, чтобы узнать, смогу ли ячтобы поймать ошибку
try {
doc.text("value",3,2);
console.log('<%=value%>');
} catch (error) {
console.log("Error here");
}
Вот результат, который я получаю из нескольких попыток:
Поврежден или нет PDF из:
doc.save("sticker.pdf");
Пустое окно из:
doc.output("dataurlnewwindow");
Я все еще не получаю ошибку при попытке / поймать, и я вижу все свои console.log ()
Мои вопросы без ответа такfar
- Может ли быть конфликт между множественными JQuery.js - Что я не могу контролировать
- Может ли быть конфликт с VBScript? - Может ли быть проблема во время процесса, описанного ранее?
Я открыт для любых предложений, комментариев или для предоставления более подробной информации, если это необходимо!
РЕДАКТИРОВАТЬ
Я попробовал самый простой способ, и он не сработал! Я начинаю думать, что я не буду работать, так как процесс сделан на стороне сервера
var doc = new jsPDF({
orientation: 'p',
unit: 'mm',
format: [105, 127]
doc.text("value",5,16);
doc.output("dataurlnewwindow");