Я использую решение Oracle Publisher для печати, у меня есть отчеты и запросы oracle apex, написанные для них в общих компонентах, единственная конфигурация, отличная от обычной конфигурации для печати (решение Oracle Publisher), у меня есть то, что я сохраняю свой RTF файлы макетов не в самой вершине, а в таблице, которую я сделал сам. теперь я столкнулся с проблемой, и я не знаю, что делает это. Когда я хочу напечатать свои отчеты в формате pdf, я вижу ошибку «неверный локатор локатора». Теперь у меня есть единственная подсказка: если я загружаю RTF-файл в APEX, все работает нормально, и напечатанный PDF-файл выглядит нормально, но если я выберу «использовать общий макет отчета» в запросе отчета, чтобы код в процессе приложения получал В макете из БД я вижу ошибку «неверный локатор».
проблема не на столе, потому что я проверял это тысячу раз.
поэтому причиной, вероятно, является проблема - код процесса приложения PLSQL, который подключается к БД, получает макет и затем отправляет команду печати.
это код:
declare
l_file_as_clob CLOB ;
l_layout BLOB;
l_asdsad CLOB;
l_dest_offset integer := 1;
l_src_offset integer := 1;
l_lang_context integer := dbms_lob.default_lang_ctx;
l_warning integer;
BEGIN
select layout into l_layout
from B5REPORTS
where code = :APP_PRINT_LAYOUT_CODE
AND APEX_APP_ALIAS = :APP_ALIAS
AND APEX_PAGE_ID = :APP_PAGE_ID ;
dbms_lob.createtemporary(lob_loc => l_file_as_clob , cache => false);
dbms_lob.converttoclob(
dest_lob => l_file_as_clob
, src_blob => l_layout
, amount => dbms_lob.lobmaxsize
, dest_offset => l_dest_offset
, src_offset => l_src_offset
, blob_csid => dbms_lob.default_csid
, lang_context => l_lang_context
, warning => l_warning);
l_file_as_clob:= replace(l_file_as_clob,'+','%2B');
l_file_as_clob:= replace(l_file_as_clob,'/','%2F');
l_file_as_clob:= replace(l_file_as_clob,'=','%3D');
--signature 2
apex_util.download_print_document (
p_file_name => :APP_PRINT_NAME
, p_content_disposition => 'inline'
, p_application_id => :APP_ID
, p_report_query_name => :APP_PRINT_NAME
, p_report_layout => l_file_as_clob
, p_report_layout_type => 'rtf'
, p_document_format => 'PDF'
);
END;
а также это таблица, в которой хранятся BLOBS (файлы макетов RTF):
ALTER TABLE FARA.B5REPORTS
ADD CONSTRAINT B5REPORTS_UK1 UNIQUE
(
CODE
)
USING INDEX B5REPORTS_UK1
ENABLEALTER TABLE FARA.B5REPORTS
ADD CONSTRAINT B5REPORTS_PK PRIMARY KEY
(
ID
)
USING INDEX B5REPORTS_PK
ENABLECREATE UNIQUE INDEX FARA.B5REPORTS_PK ON FARA.B5REPORTS (ID ASC)
LOGGING
TABLESPACE APEX
PCTFREE 10
INITRANS 2
STORAGE
(
INITIAL 65536
NEXT 1048576
MINEXTENTS 1
MAXEXTENTS UNLIMITED
BUFFER_POOL DEFAULT
)
NOPARALLEL
CREATE UNIQUE INDEX FARA.B5REPORTS_UK1 ON FARA.B5REPORTS (CODE ASC)
LOGGING
TABLESPACE APEX
PCTFREE 10
INITRANS 2
STORAGE
(
INITIAL 65536
NEXT 1048576
MINEXTENTS 1
MAXEXTENTS UNLIMITED
BUFFER_POOL DEFAULT
)
NOPARALLELCREATE TABLE FARA.B5REPORTS
(
ID NUMBER NOT NULL
, CODE VARCHAR2(100 BYTE) NOT NULL
, LAYOUT BLOB NOT NULL
, DESCRIPTION VARCHAR2(4000 BYTE) NOT NULL
, NAME VARCHAR2(4000 BYTE) NOT NULL
, APEX_APP_ALIAS VARCHAR2(100 BYTE) NOT NULL
, APEX_PAGE_ID NUMBER NOT NULL
)
LOGGING
TABLESPACE APEX
PCTFREE 10
INITRANS 1
STORAGE
(
INITIAL 65536
NEXT 1048576
MINEXTENTS 1
MAXEXTENTS UNLIMITED
BUFFER_POOL DEFAULT
)
NOCOMPRESS
NOPARALLEL
LOB (LAYOUT) STORE AS SYS_LOB0000103483C00003$$
(
ENABLE STORAGE IN ROW
CHUNK 8192
NOCACHE
LOGGING
)
Я тоже добавлю картинку с некоторыми примерами данных.
Я был бы признателен за любой комментарий, мысль или что-то еще, потому что я действительно застрял здесь. Спасибо заранее. :)