I get response error
Code: Select all
An XObject dictionary shall not contain the SMask key
DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour space
My file should use this format
------------------------------------------------------------------
Document management - Electronic document file format for long-term preservation - Part 1: Use of PDF 1.4 (PDF/A-1) https://www.iso.org/standard/38920.html
-----------------------------------------------------------------------------------------------
Thank you.
Code: Select all
wxPrintData printData = *g_printData;
printData.SetFilename(lpszFileName);
wxPdfDC dc(printData);
{
wxLogNull h;
wxPdfFontManager::GetFontManager()->RegisterSystemFonts();
}
dc.SetMapModeStyle(wxPDF_MAPMODESTYLE_STANDARD);
dc.SetMapMode(wxMM_POINTS);
BOOL bREzult = FALSE;
short rows = GetPossibleRows();
short cols = GetPossibleColumns();
if (!rows || !cols)
return FALSE;
int nPages = PrinterChanged();
if (!nPages)
return FALSE;
bool ok = dc.StartDoc(_("Printing ..."));
if (!ok)
return false;
BOOL bUseDirectPrinting = m_bUseDirectPrinting;
m_bUseDirectPrinting = 0;
int xPPI = dc.GetPPI().x;
int yPPI = dc.GetPPI().y;
wxArchivePageParams* PageParams = GetPageParams();
int mmX = dc.GetSizeMM().x - (PageParams->m_nLeft + PageParams->m_nRight)/100.0;
// int mmY = dc.GetSizeMM().y - (PageParams->m_nTop + PageParams->m_nBottom)/100.0;
int logX = MulDiv(xPPI, mmX*100, SM_PER_INCH);
double oldscale = m_SgridData.m_PageParams.m_nPacent;
m_SgridData.m_PageParams.m_nPacent = 100;
//физичекие точки
int XpxlL = MulDiv(xPPI, PageParams->m_nLeft, SM_PER_INCH);
int YpxlT = MulDiv(yPPI, PageParams->m_nTop, SM_PER_INCH);
for (int nPage = 1; nPage <= nPages; nPage++)
{
dc.StartPage();
short col, row;
long lWidth, lHeight;
if (!nnn(nPage, col, row, lWidth, lHeight))
break;
if (!lWidth || !lHeight)
break;
double pc = (double)logX / (double)lWidth;
dc.SetUserScale(pc, pc);
wxRect rec(0, 0, lWidth, lHeight);
dc.SetDeviceOrigin(XpxlL, YpxlT);
OnPrint(&dc, nPage, &rec);
dc.EndPage();
dc.SetUserScale(1, 1);
}
dc.EndDoc();
delete PageParams;
m_bUseDirectPrinting = bUseDirectPrinting;
bREzult = true;
m_SgridData.m_PageParams.m_nPacent = oldscale;
//q:
return bREzult;